Skip to main content
 首页 » 编程设计

python之从 Pandas 数据框中的唯一行值创建新列

2025年05月04日10sharpest

我有一个像这样的 Pandas 数据框:

    yearPassed  policyType  count 
0       1990        1        2000 
1       1990        2        1400 
2       1990        3        1200 
3       1991        3        70 
4       1992        2        1000 
5       1992        3        800 

我想制作一个条形图,按 policyType 列进行颜色编码,并在 X 轴上显示年份,在 Y 轴上显示计数。

我试过这样做:

policy_vs_year.plot(x="yearPassed", y=["count", "policyType"], kind="bar") 
plt.show() 

但这给出了一个非常糟糕的情节。

所以我决定将我的数据框转换成这样的东西(也许这样绘制更容易):

    yearPassed       1       2       3 
0       1990       2000    1400     1200 
1       1991        0        0       70 
2       1992        0      1000     800 

我的问题是 pandas 中的基本函数是否有可能实现这一点? (或者有更简单的替代方法以其原始格式绘制数据框 - 而无需重新格式化?)

请您参考如下方法:

这可以使用 df.pivot_table 轻松完成:

df = df.pivot_table(index=['yearPassed'],  
            columns=['policyType'], values='count').fillna(0) 
df 
 
policyType       1       2       3 
yearPassed                         
1990        2000.0  1400.0  1200.0 
1991           0.0     0.0    70.0 
1992           0.0  1000.0   800.0 

此外,可以使用 df.plot 制作堆积条形图:

import matplotlib.pyplot as plt 
df.plot(kind='bar', stacked=True) 
plt.show()