在 Python 中创建频率分布表

Posted

技术标签:

【中文标题】在 Python 中创建频率分布表【英文标题】:Creating a frequency distribution table in Python 【发布时间】:2021-07-03 10:30:42 【问题描述】:

我是 Python 和 Pandas 的新手,我正在努力从我的 df 创建频率分布表。

我的数据框是这样的:

Balances Weight
10 7
11 15
12 30
13 20
10 15
13 20

编辑:余额编号是其各自的 ID

我需要使用每个天平的频率(在本例中,天平 10 将是 2,依此类推)测量结果的最小值、最大值和平均值。

我打算使用 df.groupby(['balances']) 但我如何使用 df.groupby 的结果表单来创建一个新表?是这样吗?

【问题讨论】:

df.groupby('Balances').describe()(或df.groupby('Balances')['Weight'].describe())将为您提供组内每一列的大量信息 有了这个我可以根据.describe给出的值创建一个新的df,对吧? 是的,如果你将它分配给某个东西:df1 = df.groupby('Balances').describe(),那么你就有一个可以从中选择的 DataFrame(带有 Multiindex 列)或其他任何东西 【参考方案1】:

您不需要使用groupby,而是使用Series.value_counts

In [1619]: df.Balances.value_counts()
Out[1619]: 
10    2
13    2
11    1
12    1
Name: Balances, dtype: int64

要创建另一个df,请执行以下操作:

In [1628]: df1 = df.Balances.value_counts().reset_index(name='Frequency').rename(columns='index':'Balances')

In [1629]: df1
Out[1629]: 
   Balances  Frequency
0        10          2
1        13          2
2        11          1
3        12          1

【讨论】:

并添加最小值、最大值和平均值我会遵循相同的逻辑吗? 为此,您必须使用 groupby。 @Croyd 如果答案有帮助,请upvote它。还有accept,点击我答案的left-hand一侧的check-mark 实际上这不是我需要的,它有点帮助。不过谢谢【参考方案2】:

df.groupby(['balances']).count() 应该可以解决您要查找的问题

【讨论】:

以上是关于在 Python 中创建频率分布表的主要内容,如果未能解决你的问题,请参考以下文章

在Python中创建生成稀疏矩阵(均匀分布高斯分布)

在Python中创建生成稀疏矩阵(均匀分布高斯分布)

如何在立方体中创建一个均匀的spheries随机分布?

如何在r中创建一个具有正态分布的矩阵?

在 Spark 中创建分布式 RDD

在 Flash 中创建可重复的、外观随机的对象分布