在 Python 中创建频率分布 table
Creating a frequency distribution table in Python
我是 Python 和 Pandas 的新手,我正在努力从我的 df 创建频率分布 table。
我的数据框是这样的:
Balances
Weight
10
7
11
15
12
30
13
20
10
15
13
20
编辑:余额编号是其各自的 ID
我需要使用的每个天平的频率(在此示例中,天平 10 将是 2,依此类推)测量结果的最小值、最大值和平均值。
我本来要使用 df.groupby(['balances']),但我如何使用使用 df.groupby 的结果表单来创建新的 table?是这样吗?
df.groupby(['balances']).count()
应该能解决您要找的问题
您不需要使用 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
我是 Python 和 Pandas 的新手,我正在努力从我的 df 创建频率分布 table。
我的数据框是这样的:
Balances | Weight |
---|---|
10 | 7 |
11 | 15 |
12 | 30 |
13 | 20 |
10 | 15 |
13 | 20 |
编辑:余额编号是其各自的 ID
我需要使用的每个天平的频率(在此示例中,天平 10 将是 2,依此类推)测量结果的最小值、最大值和平均值。
我本来要使用 df.groupby(['balances']),但我如何使用使用 df.groupby 的结果表单来创建新的 table?是这样吗?
df.groupby(['balances']).count()
应该能解决您要找的问题
您不需要使用 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