Untitled

mail@pastecode.io avatar
unknown
plain_text
2 months ago
2.5 kB
1
Indexable
Never
import pandas as pd
import numpy as np
import plotly.graph_objs as go
from plotly.offline import iplot

# Предполагается, что df уже содержит нужные данные, здесь будет симулирована часть работы с данными

# Симулируем данные DataFrame, так как исходные данные недоступны
np.random.seed(0)
dates = pd.date_range(start="2020-01-01", end="2020-12-31", freq="D")
data = {
    "transaction_date": np.random.choice(dates, size=100),
    "MO_dealer_monthly_ton_GZPN": np.random.rand(100) * 1000,
    "client_inn_dil": np.random.randint(10000, 99999, size=100),
    "label": np.random.choice(['dil_MO', 'dil_MO+KP', 'dil_KP'], size=100),
}

df = pd.DataFrame(data)

# Фильтруем данные по кластеру label
filtered_df = df[df['label'].isin(['dil_MO', 'dil_MO+KP'])]

# Группируем данные по дате транзакции для суммарного объема MO_dealer_monthly_ton_GZPN
mo_tons_by_date = filtered_df.groupby('transaction_date')['MO_dealer_monthly_ton_GZPN'].sum()

# Группируем данные по дате транзакции для подсчета уникальных client_inn_dil внутри фильтрованных кластеров
unique_clients_by_date_mo = filtered_df.groupby('transaction_date')['client_inn_dil'].nunique()

# Объединяем обе серии в один DataFrame
mo_df = pd.DataFrame({
    'MO_dealer_monthly_ton_GZPN': mo_tons_by_date,
    'unique_client_inn_dil_mo': unique_clients_by_date_mo
}).reset_index()

# Создаем трассировки для визуализации данных
trace0_mo = go.Scatter(
    x = mo_df['transaction_date'],
    y = mo_df['MO_dealer_monthly_ton_GZPN'],
    name = 'MO Dealer Monthly Ton GZPN',
    yaxis = 'y1'
)

trace1_mo = go.Scatter(
    x = mo_df['transaction_date'],
    y = mo_df['unique_client_inn_dil_mo'],
    name = 'Unique Client INNs (MO)',
    yaxis = 'y2'
)

# Настройка макета графика
layout_mo = go.Layout(
    title='Статистика по MO дилерам',
    yaxis=dict(title='MO дилерский месячный объем (GZPN)'),
    yaxis2=dict(title='Число уникальных клиентов (MO)', overlaying='y', side='right')
)

# Создаем объект Figure и визуализируем его
fig_mo = go.Figure(data=[trace0_mo, trace1_mo], layout=layout_mo)
iplot(fig_mo)
Leave a Comment