据我所知,您将不得不使用像 pandas.DataFrame.pivot 这样的方法来获得您在此处寻找的数据结构:
pd.pivot_table(df, values='ID', index=['Date'],columns='Category', aggfunc=np.sum)
下面是一个完整的方法,它应该使用以下示例数据框适合您的数据集的描述:
数据:
Date ID Category
0 2013-01-02 1 A
1 2013-01-02 3 B
2 2013-01-03 1 C
3 2013-01-03 2 B
4 2013-01-03 1 B
5 2013-01-03 3 A
6 2013-01-03 3 A
7 2013-01-03 4 A
8 2013-01-04 4 B
9 2013-01-04 4 C
10 2013-01-05 1 B
11 2013-01-06 2 A
剧情:
代码:
import plotly.graph_objs as go
import pandas as pd
import numpy as np
# sample dataframe to match OPs structure
df = pd.DataFrame({'Date' : [pd.Timestamp('20130102'), pd.Timestamp('20130102'),
pd.Timestamp('20130103'), pd.Timestamp('20130103'),
pd.Timestamp('20130103'), pd.Timestamp('20130103'),
pd.Timestamp('20130103'), pd.Timestamp('20130103'),
pd.Timestamp('20130104'), pd.Timestamp('20130104'),
pd.Timestamp('20130105'),pd.Timestamp('20130106')],
'ID' : [1, 3, 1, 2, 1 , 3,3,4,4,4,1,2],
'Category' : pd.Categorical(["A","B","C","B","B","A",
"A","A","B","C","B","A" ])})
# data munging to get OPs desired plot
df = pd.pivot_table(df, values='ID', index=['Date'],columns='Category', aggfunc=np.sum)
# ploty
fig = go.Figure()
for col in df.columns:
fig.add_trace(go.Scatter(x=df.index, y=df[col].values,
name = col,
mode = 'markers+lines',
line=dict(shape='linear'),
connectgaps=True
)
)
fig.show()