簡體   English   中英

有關pandas value_counts函數的說明

[英]Explanation about pandas value_counts function

有人可以解釋一下這行是什么

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

當您執行Apply時,它會合並針對每一列執行此操作的結果:

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

根據文檔,它會生成非空值的直方圖。 Qu1 result Qu1列,我們可以知道原始列數據中有一個data.Qu1和0。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM