在 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 中创建频率分布表的主要内容,如果未能解决你的问题,请参考以下文章