从pandas数据框中的唯一行值创建新列

Abh*_*bey 1 python plot matplotlib dataframe 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
Run Code Online (Sandbox Code Playgroud)

我想制作一个条形图,按policyType列进行颜色编码,并在X轴上显示Year,并在Y轴上显示.

我试过这样做:

policy_vs_year.plot(x="yearPassed", y=["count", "policyType"], kind="bar")
plt.show()
Run Code Online (Sandbox Code Playgroud)

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

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

    yearPassed       1       2       3
0       1990       2000    1400     1200
1       1991        0        0       70
2       1992        0      1000     800
Run Code Online (Sandbox Code Playgroud)

我的问题是,大熊猫的基本功能是否有可能实现这一目标?(或者有更简单的替代方法以原始格式绘制数据帧 - 无需重新格式化?)

cs9*_*s95 6

这很容易使用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
Run Code Online (Sandbox Code Playgroud)

此外,可以使用df.plot以下方式绘制堆积条形图:

import matplotlib.pyplot as plt
df.plot(kind='bar', stacked=True)
plt.show()
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述