Series.value_counts,pd.value_counts計算Series,DataFrame數據頻率

在pandas裏面常用用value_counts確認數據出現的頻率。

一、對Series使用

ss = Series.values_count()
注意這裏返回的就是Series

In[2]: import numpy as np
  ...: import pandas as pd
  ...: from pandas import DataFrame
  ...: from pandas import Series
  ...: ss = Series(['Tokyo', 'Nagoya', 'Nagoya', 'Osaka', 'Tokyo', 'Tokyo'])   
  ...: ss.value_counts()   #value_counts 直接用來計算series裏面相同數據出現的頻率
Out[2]: 
Tokyo     3
Nagoya    2
Osaka     1
dtype: int64

二、對DataFrame使用

df = DataFrame.apply(pd.value_counts) 這裏使用了apply方法,最後返回賦值給df的也是DataFrame類型
series = DataFrame(colName).value_counts()這裏對具體列操作,最後返回賦值給series的是Series類型

In[2]: import numpy as np
  ...: import pandas as pd
  ...: from pandas import DataFrame
  ...: from pandas import Series
  ...: df=DataFrame({'a':['Tokyo','Osaka','Nagoya','Osaka','Tokyo','Tokyo'],'b':['Osaka','Osaka','Osaka','Tokyo','Tokyo','Tokyo']})       #DataFrame用來輸入兩列數據,同時value_counts將每列中相同的數據頻率計算出來
  ...: print(df)
Backend TkAgg is interactive backend. Turning interactive mode on.
        a      b
0   Tokyo  Osaka
1   Osaka  Osaka
2  Nagoya  Osaka
3   Osaka  Tokyo
4   Tokyo  Tokyo
5   Tokyo  Tokyo

In[3]: df.apply(pd.value_counts)
Out[3]: 
        0
Tokyo   3
Nagoya  2
Osaka   1

In[4]: type(df.apply(pd.value_counts))
Out[4]: pandas.core.series.Series

三、要升序排列,可以加參數 ascending=True(默認爲False,即降序)

1、對Series

In[5]: ss.value_counts(ascending=True)
Out[5]: 
Osaka     1
Nagoya    2
Tokyo     3
dtype: int64

2、對DataFrame

In[6]: df.apply(pd.value_counts, ascending=True)
Out[6]: 
        a    b
Nagoya  1  NaN
Osaka   2  3.0
Tokyo   3  3.0
Name: a, dtype: int64

四、要歸一化,即計算各個佔比,可以加參數normalize=True(默認爲False)

1、對Series

In[7]: ss.value_counts(ascending=True, normalize=True)
Out[7]: 
Osaka     0.166667
Nagoya    0.333333
Tokyo     0.500000
dtype: float64

或者直接對值進行簡單運算也可,可參考《Pandas.Series的加減乘除數學運算》

In[12]: ss.value_counts(ascending=True) / 6
Out[12]: 
Osaka     0.166667
Nagoya    0.333333
Tokyo     0.500000
dtype: float64

2、對DataFrame

In[8]: df.apply(pd.value_counts, ascending=True, normalize=True)
Out[8]: 
               a    b
Nagoya  0.166667  NaN
Osaka   0.333333  0.5
Tokyo   0.500000  0.5

五、還有一些其他參數,待續


參考博文:
《value_counts計算DataFrame,Series的數據頻率》
《Python3 pandas (6)計數value_counts()》

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章