【问题标题】:Create new columns from unique row values in a pandas dataframe从 pandas 数据框中的唯一行值创建新列
【发布时间】:2018-03-04 15:34:18
【问题描述】:

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

    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

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

【问题讨论】:

    标签: python pandas matplotlib dataframe plot


    【解决方案1】:

    只用pandas

    df.set_index(['yearPassed','policyType']).unstack(-1).fillna(0).plot.bar(stacked=True)
    

    【讨论】:

      【解决方案2】:

      这很容易使用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()
      

      【讨论】:

      • 谢谢,那是快速和正确的。我的数据是从 1850 年到 2015 年。x 轴变得杂乱无章:link - 有什么办法吗?如果我想每 20 年对它进行一次分组,取计数值的平均值呢?
      • @AbhinandanDubey 我认为您应该能够减少绘图上的刻度数。例如,请参阅:stackoverflow.com/questions/6682784/…
      • @AbhinandanDubey 至于你的第二个问题,我可以想到一些解决方案,但我不想在没有一些数据的情况下给你答案(我不确定我的答案是否正确,除非我核实)。你能打开一个新问题吗?
      • 很高兴再次见到你~ :-)
      • @Wen 你想我了吗?因为我想念你们!
      猜你喜欢
      • 1970-01-01
      • 2019-01-10
      • 1970-01-01
      • 2022-11-11
      • 2021-01-22
      • 2018-08-25
      • 2019-04-17
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多