【问题标题】:python Compute histogram values with a groupby panda dataframepython 使用 groupby 熊猫数据框计算直方图值
【发布时间】:2023-04-10 16:36:01
【问题描述】:

我想使用数据帧对数据帧中的数据进行分组,并且我想计算分组数据的直方图: 这是我的数据框:

    indicator
key        
14        1
14        2
14        3
15        1
16        2
16        5
16        6
17        1
18        3

我想使用 groupby 得到这个结果:

       indicator
key        
14        1,2,3
15        1
16        2,5,6
17        1
18        3

然后计算每个key的直方图

【问题讨论】:

  • 您能否发布原始数据和代码以重新创建您的 df,看看您正在尝试做什么,您从 df 中仅选择 2 列,然后尝试在单个列上进行分组现在不再存在的列将不起作用。你能展示你想要的结果是什么吗?此外,groupby 对象仅包含有关如何对 df 进行分组的元数据,您需要调用一些聚合函数,例如 sum
  • 我想为每个应用程序计算指标的直方图,这就是为什么我需要按应用程序对数据进行分组
  • 我再次要求提供原始数据和代码,您已经编辑了代码以可能修复错字,但事实仍然是 groupby 对象在您执行聚合之前不会产生 Series 或 DataFrame函数,你没有说明错误发生在哪一行

标签: python pandas numpy dataframe


【解决方案1】:

numpy.histogram 无法处理数组中的数组。您需要像这样格式化数据。

import numpy as np
import pandas as pd 
dataf = pd.DataFrame()
dataf['key'] = range(14,25)
dataf['indicator'] = [1,1,2,1,3,4,7,15,23,43,67]
dataf.loc[11] = [14,2]
dataf.loc[12] = [14,3]
dataf.loc[13] = [16,5]
dataf.loc[14] = [16,6]

由于没有提供原始数据,我只能假设数据可能可以像这样重新格式化。

In [30]: dataf
Out[30]: 
    key  indicator
0    14          1
1    15          1
2    16          2
3    17          1
4    18          3
5    19          4
6    20          7
7    21         15
8    22         23
9    23         43
10   24         67
11   14          2
12   14          3
13   16          5
14   16          6

numpy.histogram 已经处理了groupby 概念,因此您无需在DataFrame 中执行groupby 函数。 你只需要np.histogram(dff['indicator'])

仅供参考,如果要绘制直方图,也可以使用DataFrame.hist()

dataf.indicator.hist()
import matplotlib.pyplot as plt
plt.savefig('test.png')

【讨论】:

  • 我需要计算每个键的直方图值,这就是我使用 groupby 的原因
  • @erija 每个键的直方图值是什么意思?你的意思是你想知道每个键出现多少次?键是连续的(即,将 14 和 15 视为相差 1 的数字)还是分类的(即,将 14 和 15 视为两个不同的项)?
猜你喜欢
  • 1970-01-01
  • 2016-10-09
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-08-26
  • 2015-01-25
  • 2013-12-19
  • 2021-04-30
相关资源
最近更新 更多