筆記來源:利用python進行數據分析【Wes Mckinnney著,唐學韜等譯】
一、彙總和計算描述統計
pandas對象擁有一組常用的數學和統計方法,大部分屬於約簡和彙總統計,用於從Series中提取單個值(如sum、mean)或從DataFrame的行或列中提取一個Series.
1、相關示例
(1) 常用約簡方法(sum()、mean()等)
約簡方法的常見選項:
選項 | 說明 |
axis | 約簡的軸 |
skipna | 默認爲True.即默認排除缺失值 |
level | 若軸是層次化索引(即MultiIndex),則根據level分組約簡 |
間接統計(idxmax())
(2) 累計型【如cumsum()】
(3) 彙總統計【如describe()】
(4)常見的彙總描述統計
方法 | 說明 |
count | 計算樣本值中非NA值的數量 |
describe | 針對Series或各DataFrame列計算彙總統計 |
min、max | 計算樣本值的最小值、最大值 |
argmin、argmax | 計算能夠獲取到最小值、最大值的索引位置(整數) |
idxmin、idxmax | 計算能夠獲取到最小值、最大值的索引值 |
quantile | 計算樣本值的分位數(0到1) |
sum | 計算樣本值的總和 |
mean | 計算樣本值的平均數 |
median | 計算樣本值的中位數(50%分位數) |
mad | 根據平均值計算平均絕對離差 |
var | 計算樣本值的方差 |
std | 計算樣本值的標準差 |
skew | 計算樣本值的偏度(三階矩) |
kurt | 計算樣本值的峯度(四階距) |
cumsum | 計算樣本值的累計和 |
cummin、cummax | 計算樣本值的累計最大值、累計最小值 |
cumprod | 計算樣本值的累計積 |
diff | 計算樣本值的一階差分(對時間序列很有用) |
pct_change | 計算百分數變化 |
2、相關係數和協方差
3、唯一值、值計算以及成員資格
(1)唯一值(.unique())
返回的數組時未排序的,如果想返回的數組排序,可增添unique.sort()返回
(2)值計算(.value_counts() 統計所有值出現的次數)
value_counts()也適用於pandas.即pandas.value_count()
(3) 成員資格(isin() 判斷矢量化集合的成員資格)
(4)彙總三種方法
方法 | 說明 |
isin | 計算一個表示"Series各值是否包含與傳入的值序列中"的布爾型數組 |
unique |
計算series中的唯一值數組,按發現順序返回 |
value_counts | 返回一個Series,其索引爲唯一值,其值爲頻次,按頻次值降序排列 |
二、處理缺失數據
1、缺失值的認識
pandas使用浮點值NaN(Not a Number)表示浮點和非浮點數組中的缺失數據
2、缺失值的處理方法
(1)濾除缺失數據( .dropna() )
dropna返回的是一個僅非空數據和索引值的Series
1)Series的缺失值濾除
2) DataFrame對象對缺失值的濾除
dropna默認丟棄任何含有缺失值的行
當dropna()傳入參數how = ‘all’即值有在一行中全部爲缺失值時才被丟棄
指定axis=1,按列丟棄
(2) 填充缺失數據( .fillna() )
1)fllna() 傳入一個常數,即填充爲這個常數
2)fillna() 傳入一個字典【對指定列進行填充不同的值】
3)fillna()傳入inplace關鍵字(默認inplae=False。即不改變原來的數據,當爲True時,則改變原來的數據)
4)fillna() 傳入關鍵字method='ffill' 和limit 時
5)fillna傳入其它統計描述方法
6)fillna函數參數
參數 | 說明 |
value | 用於填充缺失值的標量值或字典對象 |
method | 插值方式,如果函數調用時未指定其他參數的話,默認‘ffill’.【即前向填充缺失值(根據前一個值進行缺失值填充)】 |
axis | 待填充的軸,默認axis=0 |
inplace | 修改調用者對象而不產生副本 |
limit | (對於前向和後向填充)可以連續填充的最大數量 |
三、層次化索引
層次化索引也是pandas的一項重要的功能,可使得一個軸上擁有一個或多個索引級別。
1、相關認識
(1)Series相關示例
1)創建
2)取值
3)層次化索引重塑(stack()、unstack() )
(2)DataFrame相關示例【每條軸都可有分層索引】
1)創建
2)對行列標籤加名稱及根據索引名取值
2、重排分級順序(swaplevel()、sortlevel() )
(1)swaplevel() 【只接收兩個級別的編號或名稱,返回一個互換了級別的新對象,數據不發生改變】
(2)sort_index(根據單個級別中的值對數據進行排序(穩定))
提示:Python2中使用sortlevel、而python3已逐漸不再使用,已經用sort_index進行替代
3、根據級別進行彙總統計
許多對DataFrame和Series的描述和彙總都有一個level選項,用於指定在某條軸上求和的級別。
(1)根據指定行索引名進行彙總計算
這裏括號內沒有傳入axis值默認是axis=0,即按行計算【注:axis值應與傳入的參數軸方向一致,這裏傳入的key2也是行方向】
(2)根據指定列索引名進行彙總計算
4、使用DataFrame的列
(1)set_index() 【將一個或多個列轉換爲行索引,並創建一個新的DataFrame】
(2)reset_index() 【與上述set_index相反,一個或多個行索引轉爲列索引】
參考:
[1]. McKinney,W.著;唐學韜等譯. 利用python進行數據分析[M]. 北京:機械工業出版社,2013.9.