gpt4 book ai didi

python - 如何在Python中将整个数据集中的值绘制为x轴刻度的子df

转载 作者:太空宇宙 更新时间:2023-11-03 16:31:52 25 4
gpt4 key购买 nike

我有一个大数据框,其中包含数千个数据点,并且有一列称为周期,格式为 2011q1 代表 2011 年第 1 季度,从 2009q2 到 2015q2。按人分组后,我得到了几个子数据帧,每个子数据帧只包含一定的时间间隔,而不是 2009 年到 2015 年的整个时间间隔。请参见下图一个子 df 的周期列。现在我想绘制所有 sub df,其中从 2009q2 到 2015q2 的整个周期间隔作为 x 轴刻度,并将 Amount 列中的聚合值作为 y 值;对于任何缺失的周期,特定子 df 的 y 值应该为 0,但是如果我使用代码 person.groupby('Period' ).aggregate({'Amount':np.sum}).plot(rot='vertical')

我正在考虑向每个子 df 添加缺少时间间隔的行,但这似乎有很多工作要做。有什么方法可以实现它而不是手动添加行?

enter image description here

最佳答案

您当然可以按照 Stanley 的方式进行操作,也许可以使用 full_df['Period'].unique() 来获取标签。但在我看来,您真正想做的是回到执行groupby之前并使用数据透视表。

import pandas as pd


D=pd.DataFrame({'Period':['Q1','Q1','Q2','Q2','Q4',
'Q2','Q2','Q3','Q3','Q4'],
'Name':['Jack','Jack','Jack','Jack','Jack',
'Jill','Jill','Jill','Jill','Jill'],
'Amount':[50,20,60,100,200,
65,15,25,35,150]})
D

-

    Amount  Name    Period
0 50 Jack Q1
1 20 Jack Q1
2 60 Jack Q2
3 100 Jack Q2
4 200 Jack Q4
5 65 Jill Q2
6 15 Jill Q2
7 25 Jill Q3
8 35 Jill Q3
9 150 Jill Q4

对表进行透视,对聚合值求和,然后调用 fillna 将 NaN 转换为零。

P=D.pivot_table('Amount','Period','Name',aggfunc=sum).fillna(0)
P

-

Name    Jack    Jill
Period
Q1 70 0
Q2 160 80
Q3 0 60
Q4 200 150

然后使用常用工具进行绘图。例如

P.plot(kind='bar')

enter image description here

P['Jill'].plot(kind='bar')

enter image description here

关于python - 如何在Python中将整个数据集中的值绘制为x轴刻度的子df,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37535037/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com