给定以下pandas
数据框,名为work
(时间列为索引)
time username counter
9.0 Person.A 5
10.0 Person.A 4
11.0 Person.A 5
11.0 Person.B 3
11.0 Person.C 5
12.0 Person.A 3
12.0 Person.B 5
12.0 Person.C 2
使用matplotlib
?
答案 0 :(得分:1)
您可以使用DataFrame.plot.bar
,但需要先unstack
或pivot
重新塑造数据:
df.set_index(['time','username'])['counter'].unstack(fill_value=0).plot.bar()
或者:
df.pivot(index='time',columns='username', values='counter').plot.bar()
如果第一个或第二个解决方案不起作用,因为time
+聚合函数或pivot_table
中需要成对重复username
和groupby
:
df.groupby(['time','username'])['counter'].sum().unstack(fill_value=0).plot.bar()
df.pivot_table(index='time',columns='username', values='counter', aggfunc='sum').plot.bar()