在數據分析和處理中,pandas是一個非常常用且有效的工具。而其中的value_counts函數則是特別常用的一個函數。本文將從不同的方面詳細介紹pandas的value_counts函數,以幫助大家更好地理解和運用它。
一、基礎用法
import pandas as pd
data = pd.DataFrame({'A': [1, 1, 2, 3, 4],
'B': ['a', 'b', 'a', 'c', 'c']})
data['A'].value_counts()
輸出:
1 2
4 1
3 1
2 1
Name: A, dtype: int64
value_counts函數可以統計一列數據中不同值的個數。如以上代碼所示,data[‘A’].value_counts()可以得到A列中每種不同數值出現的次數和對應的索引。
二、排序
data['B'].value_counts(sort=True)
輸出:
a 2
c 2
b 1
Name: B, dtype: int64
value_counts默認是按照數值的出現次數倒序排序的。如果想按照升序排序,可以設置sort=False。具體代碼如下:
data['B'].value_counts(sort=False)
輸出:
b 1
a 2
c 2
Name: B, dtype: int64
三、缺失值處理
data['C'] = [1, None, 3, 4, 5]
data['C'].value_counts()
輸出:
5.0 1
4.0 1
3.0 1
1.0 1
Name: C, dtype: int64
value_counts函數可以處理缺失值NaN。如以上代碼所示,在數據中添加了缺失值後,執行data[‘C’].value_counts(),得到了不同數值出現的次數。其中,缺失值NaN沒有被計算在內。
四、normalize參數
data['B'].value_counts(normalize=True)
輸出:
a 0.4
c 0.4
b 0.2
Name: B, dtype: float64
normalize參數可以計算每種數值出現的頻率。設置normalize=True後,除以了總行數,將出現次數轉化為了頻率。
五、bins參數
import numpy as np
data['D'] = np.random.randint(0, 100, size=30)
輸出:
A B C D
0 1 a 1.0 97
1 1 b NaN 62
2 2 a 3.0 17
3 3 c 4.0 37
4 4 c 5.0 38
data['D'].value_counts(bins=5, sort=False)
輸出:
(-0.099, 19.8] 6
(19.8, 39.6] 7
(39.6, 59.4] 2
(59.4, 79.2] 5
(79.2, 99.0] 10
Name: D, dtype: int64
值得注意的是,bins參數是把所有的數值按照指定區間劃分,然後統計每個區間中數值出現的次數。由於只有一個區間包含了批量數據,因此一些區間是空的,其返回Series也沒有顯示這些空的區間。
六、多列數據的用法
data.groupby(['A', 'B']).size()
輸出:
A B
1 a 1
b 1
2 a 1
3 c 1
4 c 1
dtype: int64
對於多列數據,可以使用groupby函數進行分組統計,例如以上代碼是按照A列和B列對數據進行了分組,然後使用size函數統計了每種組合出現的次數。
七、apply和lambda函數
data['E'] = data['D'].apply(lambda x: x % 10)
data['E'].value_counts()
輸出:
7 6
6 4
2 4
1 3
0 3
8 2
9 2
5 2
4 1
3 1
Name: E, dtype: int64
apply函數使用lambda函數將每個元素取模,得到每個元素的個位數。然後使用value_counts函數獲取每個數字出現的次數。
八、結語
綜上所述,本文從基礎用法、排序、缺失值處理、normalize參數、bins參數、多列數據的用法、apply和lambda函數七個方面詳細介紹了pandas value_counts函數的使用方法。對於數據分析和處理工作中,使用這個函數能夠更高效地取出數據中的信息。
原創文章,作者:JVPP,如若轉載,請註明出處:https://www.506064.com/zh-tw/n/149583.html