gpt4 book ai didi

python - 关于 pandas value_counts 函数的解释

转载 作者:太空狗 更新时间:2023-10-30 00:36:13 25 4
gpt4 key购买 nike

谁能解释一下这条线是什么

result = data.apply(pd.value_counts).fillna(0)  

这里有吗?

import pandas as pd 
from pandas import Series, DataFrame

data = DataFrame({'Qu1': [1, 3, 4, 3, 4],
'Qu2': [2, 3, 1, 2, 3],
'Qu3': [1, 5, 2, 4, 4]})

result = data.apply(pd.value_counts).fillna(0)

In [26]:data
Out[26]:
Qu1 Qu2 Qu3
0 1 2 1
1 3 3 5
2 4 1 2
3 3 2 4
4 4 3 4

In [27]:result
Out[28]:
Qu1 Qu2 Qu3
1 1 1 1
2 0 2 1
3 2 2 0
4 2 0 2
5 0 0 1

最佳答案

我认为理解正在发生的事情的最简单方法是分解它。

每列一个,value_counts 只是计算系列中每个值的出现次数(即 4 在 Qu1 列中出现两次):

In [11]: pd.value_counts(data.Qu1)
Out[11]:
4 2
3 2
1 1
dtype: int64

当您执行应用时,每一列都与其他结果重新对齐,因为看到 1 到 5 之间的每个值,它与 range(1, 6) 对齐:

In [12]: pd.value_counts(data.Qu1).reindex(range(1, 6))
Out[12]:
1 1
2 NaN
3 2
4 2
5 NaN
dtype: float64

您想将未看到的值计为 0 而不是 NaN,因此 fillna:

In [13]: pd.value_counts(data.Qu1).reindex(range(1, 6)).fillna(0)
Out[13]:
1 1
2 0
3 2
4 2
5 0
dtype: float64

当您执行应用时,它会合并对每一列执行此操作的结果:

In [14]: pd.concat((pd.value_counts(data[col]).reindex(range(1, 6)).fillna(0)
for col in data.columns),
axis=1, keys=data.columns)
Out[14]:
Qu1 Qu2 Qu3
1 1 1 1
2 0 2 1
3 2 2 0
4 2 0 2
5 0 0 1

关于python - 关于 pandas value_counts 函数的解释,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21966065/

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