我的数据框如下所示:
如何使用带有 plotly 后端的 Pandas 来生成一个包含两条线的单一时间序列图,一条用于 Ankit,另一条用于 John?
这是在屏幕截图中生成数据框的代码:
import pandas
pandas.options.plotting.backend = "plotly"
details = {
'Name' : ['Ankit', 'John', 'Ankit', 'John', 'John', 'John', 'Ankit', 'Ankit'],
'Month': ['January', 'January', 'February', 'February', 'March', 'April', 'March', 'April'],
'Grade' : [9, 8, 7, 10, 8, 9, 8, 10],
}
d = pandas.DataFrame(details)
d = d.groupby(['Name', 'Month'], as_index=False)['Grade'].mean()
print(d)
如果我这样做:
d.plot(x='Month', y='Grade')
这将产生一条不区分 Ankit 和 John 的单行。
答案 0 :(得分:1)
d = d.pivot(index='Month', columns='Name', values='Grade')
d.plot()
答案 1 :(得分:1)
在 groupby
中的代码更改顺序中,并将 mean
与 Series.unstack
聚合:
d = pandas.DataFrame(details)
df = d.groupby(['Month','Name'])['Grade'].mean().unstack()
df.plot()
d = pandas.DataFrame(details)
df = d.pivot_table(index='Month', columns='Name', values='Grade', aggfunc='mean')
df.plot()