【问题标题】:How can I plot a pivot table value?如何绘制数据透视表值?
【发布时间】:2017-04-01 04:46:38
【问题描述】:

我有一个数据透视表,我想绘制每个城镇每年 12 个月的值。

                        2010-01        2010-02     2010-03 
City        RegionName      

Atlanta     Downtown    NaN         NaN          NaN
            Midtown     194.263702  196.319964   197.946962

Alexandria  Alexandria  NaN         NaN          NaN 
            West    
            Landmark-   NaN         NaN          NaN
            Van Dom 

如何仅选择每个城镇的每个区域的值?我想也许将带有年份和月份的列名更改为datetime 格式并将它们设置为index 会更好。我该怎么做?

结果必须是:

City        RegionName

2010-01    Atlanta     Downtown    NaN         
                       Midtown     194.263702  

           Alexandria  Alexandria  NaN          
                       West    
                       Landmark-   NaN         
                       Van Dom 

【问题讨论】:

标签: python pandas indexing dataframe pivot


【解决方案1】:

这里有一些类似的虚拟数据可供使用:

idx = pd.MultiIndex.from_arrays([['A','A', 'B','C','C'],
                            ['A1','A2','B1','C1','C2']], names=['City','Region'])
idcol = pd.date_range('2012-01', freq='M', periods=12)
df = pd.DataFrame(np.random.rand(5,12), index=idx, columns=[t.strftime('%Y-%m') for t in idcol])

让我们看看我们有什么:

print(df.ix[:,:3])

              2012-01   2012-02   2012-03
City Region                              
A    A1      0.513709  0.941354  0.133290
     A2      0.734199  0.005218  0.068914
B    B1      0.043178  0.124049  0.603469
C    C1      0.721248  0.483388  0.044008
     C2      0.784137  0.864326  0.450250

让我们将它们转换为日期时间:df.columns = pd.to_datetime(df.columns)

现在要绘制你只需要转置:

df.T.plot()


更新您的问题后更新:

使用堆栈,然后根据需要重新排序:

df = df.stack().reorder_levels([2,0,1])
df.head()


            City  Region
2012-01-01  A     A1        0.513709
2012-02-01  A     A1        0.941354
2012-03-01  A     A1        0.133290
2012-04-01  A     A1        0.324518
2012-05-01  A     A1        0.554125

【讨论】:

  • 更新后,我不清楚您是否真的想要一个数据框/系列作为结果或情节,但这里都有......
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2021-01-25
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-07-08
  • 1970-01-01
  • 2020-08-31
相关资源
最近更新 更多