我目前正在进入数据分析,并正在建立一个小会计应用程序,以跟踪我的开支。在
我的目标是在Django应用程序中跟踪我的开销,用Pandas对其进行分析,并用Matplotlib将其可视化。在
我的数据基础来自如下Django ORM查询:
qs = MyExpenses.objects.values('date', 'amount', 'category')
然后我使用Pandas的from_records
方法创建索引数据帧:
使用df.head()
检查数据帧的内容:
amount category
date
2017-12-29 14.90 Food
2017-12-27 2.98 Household
2017-12-27 9.72 Food
2017-12-24 2.00 Food
2017-12-23 1.49 Household
目前看起来不错。在
在这一点上,我不知道如何正确地进行。我想每月按类别汇总我的开支。
此groupby操作:
summed_df = df.groupby([pd.Grouper(freq='1M'), 'category']).sum()
返回正确聚合的数据:
amount
date category
2016-02-29 Cosmetics 2.45
Food 376.41
Household 43.82
Leisure 630.13
2016-03-31 Food 345.41
Household 14.76
Leisure 553.35
...
但是调用summed_df.plot()
会呈现出这样的情节:
显然Panda使用日期和类别的组合索引作为x轴,而amount列作为单个数据系列。如上所述,这不是我想要的。在
因此,我不得不用另一种方法进行求和,或者以某种方式从索引中删除category并使其再次成为常规列,但我不知道如何处理这个问题。在
外面的熊猫裂缝能帮我吗?在
考虑旋转groupby结果,其中每个类别成为各自的列,成为单独的行。下面用随机数据进行了演示(为再现性设定种子):
数据
分组并绘制
^{pr2}$相关问题 更多 >
编程相关推荐