gpt4 book ai didi

python - 如何统计数据框中每个值出现的频率?

转载 作者:行者123 更新时间:2023-12-01 03:36:55 25 4
gpt4 key购买 nike

我有数据框:

    Values                                      Bought
0 0,1,2,3,4,5 0
1 9,10,11,9,11,12,9,11 9,12,11
2 5, 1, 1, 10, 0 0

第一个问题:我需要计算该数据框中每个“值”列出现的次数。
例如:

 0 : 1
1 : 1
2 : 1
3 : 1
4 : 1
5 : 1
9 : 3
10 : 1
11 : 3
12 : 1

第二个问题:我需要计算“值”列中每行的每个数字在此行中出现的次数。
例如:

 0 : 2
1 : 3
2 : 1
3 : 1
4 : 1
5 : 2

9 : 3
10 : 2
11 : 3
12 : 1

5 : 1
1 : 2
10 : 1
0 : 1

我怎样才能做到这一点?

最佳答案

假设您的 Values 列包含字符串:

In [163]: df
Out[163]:
Values Bought
0 0,1,2,3,4,5 0
1 9,10,11,9,11,12,9,11 9,12,11
2 5, 1, 1, 10, 0 0

In [164]: df.dtypes
Out[164]:
Values object
Bought object
dtype: object

In [165]: df.Values.str.split(',\s*', expand=True).stack().value_counts()
Out[165]:
11 3
1 3
9 3
5 2
0 2
10 2
12 1
4 1
3 1
2 1
dtype: int64

In [166]: df.Values.str.split(',\s*', expand=True).apply(lambda x: x.value_counts(), axis=1).fillna(0).astype(int)
Out[166]:
0 1 10 11 12 2 3 4 5 9
0 1 1 0 0 0 1 1 1 1 0
1 0 0 1 3 1 0 0 0 0 3
2 1 2 1 0 0 0 0 0 1 0

假设您的Values列包含数字列表:

In [193]: df
Out[193]:
Values
0 [0, 1, 2, 3, 4, 5]
1 [9, 10, 11, 9, 11, 12, 9, 11]
2 [5, 1, 1, 10, 0]

In [194]: df.Values.apply(pd.Series).stack().value_counts().sort_index()
Out[194]:
0.0 2
1.0 3
2.0 1
3.0 1
4.0 1
5.0 2
9.0 3
10.0 2
11.0 3
12.0 1
dtype: int64

In [195]: df.Values.apply(pd.Series).apply(lambda x: x.value_counts(), axis=1).fillna(0).astype(int)
Out[195]:
0.0 1.0 2.0 3.0 4.0 5.0 9.0 10.0 11.0 12.0
0 1 1 1 1 1 1 0 0 0 0
1 0 0 0 0 0 0 3 1 3 1
2 1 2 0 0 0 1 0 1 0 0

关于python - 如何统计数据框中每个值出现的频率?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40226539/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com