我很难理解大熊猫中的分组,也能够生成按类别堆叠的直方图。
这是我正在尝试做的一个工作示例。我真的在循环遍历许多文件,每一个我创建一个字典,然后将其附加到包含所有字典的列表中。然后我将其转换为数据帧并将日期字符串转换为datetime对象。
import pandas as pd
# Stand in for dictionaries created by looping over some files
d1={'fruit':'banana','vege':'spinach','date':'August 1, 2014'}
d2={'fruit':'banana','vege':'carrots','date':'August 1, 2014'}
d3={'fruit':'banana','vege':'peas','date':'August 1, 2015'}
d4={'fruit':'orange','vege':'spinach','date':'August 1, 2014'}
d5={'fruit':'orange','vege':'carrots','date':'August 1, 2015'}
data=[d1,d2,d3,d4,d5]
# Create the dataframe, turn the date strings into datetime objects
df=pd.DataFrame(data)
df.date2=pd.to_datetime(df.date)
# This attempt at plotting gets me a histogram by year, but not divided how it should be.
df.groupby(df.date2.dt.year).count().plot(kind="bar")
结果情节如下所示:
我真正喜欢的是这样的:
我尝试了其他各种各样的事情,例如
fr=df.groupby('fruit')
但是fr.plot失败了因为
TypeError: Empty 'DataFrame': no numeric data to plot
提前感谢您的帮助!
答案 0 :(得分:3)
怎么样:
df.groupby(df.date2.dt.year)['fruit']\
.value_counts()\
.unstack(1)\
.plot(kind='bar', stacked=True)
答案 1 :(得分:0)