【问题标题】:Create histogram from panda frame从熊猫框架创建直方图
【发布时间】:2018-06-30 15:52:21
【问题描述】:

我正在尝试创建将按组显示主题平均值的条形直方图

我的数据看起来像这样 -

     week     8    exp                          
   Subject Group      1      2      3        Mean
0      255  WT 0  101.8   75.6   84.1   87.166667
1      157  HD 0   92.6   87.8   82.3   87.566667
2      418  WT 0   54.5   47.0   50.8   50.766667
3      300  WT 0   48.1   73.1   72.2   64.466667
4      299  HD 0   71.8   86.0   93.4   83.733333
5      258  WT 0   88.0   98.5   50.2   78.900000
6      173  WT 0   75.4   70.5   83.9   76.600000
7      273  HD 0  103.6   94.2  108.3  102.033333
8      175  WT 0   36.7   30.7   42.2   36.533333
9      172  HD 0   82.6   91.6   73.4   82.533333
10     263  WT 0  110.7  102.4  105.5  106.200000
11     304     1   90.4   90.1  103.4   94.633333
12     305     1  128.6  141.5  123.1  131.066667
13     306     1   52.0   45.6   57.2   51.600000
14     309   0.1   41.3   52.6   79.9   57.933333
15     317   0.1   86.2   95.8   77.1   86.366667

我的代码是 -

frame_data = pd.read_csv('final results.csv', header=[0,1])

data_avg = df.iloc[:, -3:].mean(axis=1)

frame_data[('exp', 'Mean')] = frame_data.iloc[:, -3:].mean(axis=1)

grouped_by_group = frame_data.groupby(['Group', 
'Mean']).size().unstack('Mean')

grouped_by_group.plot.bar(title='Grip')

我收到一个错误 KeyError:“组”

查了很多遍都是这样写的……不知道哪里错了……

【问题讨论】:

  • Group 在您选择的上下文中不存在,这就是您得到KeyError的原因

标签: python histogram


【解决方案1】:

我认为需要通过melt 重塑DataFrame,聚合mean 然后Series.plot

frame_data = pd.read_csv('final results.csv', header=[0,1])
frame_data[('exp', 'Mean')] = frame_data.iloc[:, -3:].mean(axis=1)

#flatten MultiIndex to columns 
frame_data.columns = frame_data.columns.map('_'.join)

grouped_by_group = frame_data.groupby('8_Group')['exp_Mean'].mean()
print (grouped_by_group)
8_Group
0.1     72.150000
1       92.433333
HD 0    88.966667
WT 0    71.519048
Name: value, dtype: float64

grouped_by_group.plot.bar(title='Grip')

【讨论】:

  • 在运行 grouped_by_group = frame_data.groupby([('12','Group'), ('exp','Mean')]).size().unstack() 我得到一个错误ValueError:操作数无法与形状一起广播(2,)(16,)(2,)
  • 好的,因为新形状心脏病发作后,它确实能够制作直方图。但是,它将每个主题都放在自己的栏中,而不是 4 组的平均值
  • 好的。现在,我为每个主题的每个组获得了条形图。我需要的是每个组一个栏,它包含该组主题的平均值...我试图通过分组来做到这一点,但似乎还不够
  • 这些组是 0 WT、0 HD、o.1 和 1。所以最后我需要 4 个条形图。例如 1 的条形应该是主题 304、305,306 的平均值
  • 基本上 Mean 列是其他 3 个的平均值
猜你喜欢
  • 1970-01-01
  • 2019-02-04
  • 1970-01-01
  • 2014-08-26
  • 2015-01-25
  • 2020-05-20
  • 2016-11-21
  • 2018-07-05
  • 1970-01-01
相关资源
最近更新 更多