簡體   English   中英

Python:如何為所有變量生成頻率計數

[英]Python: How to generate frequency count for all variables

我有所有分類變量的數據集,我想一次為所有變量產生頻率計數。

據稱,我使用的是鳶尾花數據集函數df['class'].value_counts()僅允許我計算一個變量。

分析數據集的所有變量僅包括通過Pandas作為csv提取的分類變量。 我正在考慮只提取第一行並放入for循環中。 為了從csv文件中提取第一行,我們使用data = pd.DataFrame(data)將csv轉換為data = pd.DataFrame(data) 但是, data[0]將產生錯誤。

為所有變量生成頻率分析或條形圖的最有效方法是什么?

具有分類變量的樣本數據集:

   Mary  John   David    Jenny
    a     t       y        n
    a     t       n        y
    a     u       y        y
    a     u       n        y
    a     u       n        n
    b     t       y        n

方法1

df.apply(lambda x: x.value_counts()).T.stack()

輸出:

Mary   a    5.0
       b    1.0
John   t    3.0
       u    3.0
David  n    3.0
       y    3.0
Jenny  n    3.0
       y    3.0
dtype: float64

方法2

df.apply(pd.value_counts).T.fillna(0)

產量

          a   b   n   t   u   y
Mary    5.0 1.0 0.0 0.0 0.0 0.0
John    0.0 0.0 0.0 3.0 3.0 0.0
David   0.0 0.0 3.0 0.0 0.0 3.0
Jenny   0.0 0.0 3.0 0.0 0.0 3.0

然后,您可以簡單地使用以下o創建條形圖。

df.apply(pd.value_counts).T.stack().plot(kind='bar')

輸出:

在此處輸入圖片說明

或者,您可以使用:

df.apply(pd.value_counts).fillna(0).T.plot(kind='bar')

輸出:

在此處輸入圖片說明

pd.DataFrame({i:df[i].value_counts() for i in df.columns})

注意:如果存在大量NaN,這將產生運行時錯誤,但是您可以忽略這些錯誤。 如果您不喜歡NaN,請使用

{i:df[i].value_counts() for i in df.columns}

運用

df.stack().str.get_dummies().sum(level=1)
Out[537]: 
       a  b  n  t  u  y
Mary   5  1  0  0  0  0
John   0  0  0  3  3  0
David  0  0  3  0  0  3
Jenny  0  0  3  0  0  3

並繪制為如下所示的條形圖

df.stack().str.get_dummies().sum(level=1).plot(kind='bar')

在此處輸入圖片說明

暫無
暫無

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

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