透視表和交叉表

 
 
 
import numpy as np
import pandas as pd
from pandas import Series,DataFrame
 
df = DataFrame({'sex':['man','man','women','women','man','women','man','women','women'],
               'age':[15,23,25,17,35,57,24,31,22],
               'smoke':[True,False,False,True,True,False,False,True,False],
               'height':[168,179,181,166,173,178,188,190,160]})
df
 
 
Out[3]:
  age height sex smoke
0 15 168 man True
1 23 179 man False
2 25 181 women False
3 17 166 women True
4 35 173 man True
5 57 178 women False
6 24 188 man False
7 31 190 women True
8 22 160 women False
 

透視表

各類電子表格程序和其餘數據分析軟件中一種常見的數據彙總工具。它根據一個或多個鍵對數據進行聚合,並根據行和列上的分組鍵將數據分配到各個矩形區域中html

 

行分組透視表 設置index參數python

 
 
 
# 默認獲得一個平均值
df.pivot_table(index=[df.sex,df.smoke])
 
 
Out[4]:
    age height
sex smoke    
man False 23.500000 183.5
True 25.000000 170.5
women False 34.666667 173.0
True 24.000000 178.0
 

列分組透視表 設置columns參數app

 
df.pivot_table(columns=df.smoke)
 
 
Out[5]:
smoke False True
age 30.2 24.50
height 177.2 174.25
 

行列分組的透視表 同時設定index、columns參數ide

In [9]:
 
 
 
 
 
df.pivot_table(index=df.sex,columns=df.smoke)
 
 
Out[9]:
  age height
smoke False True False True
sex        
man 23.500000 25.0 183.5 170.5
women 34.666667 24.0 173.0 178.0
 

aggfunc:設置應用在每一個區域的聚合函數,默認值爲np.mean函數

In [10]:
 
 
 
 
 
df.pivot_table(index=df.sex,aggfunc=np.sum)
 
 
Out[10]:
  age height smoke
sex      
man 97 708 2.0
women 152 875 2.0
 

fill_value:替換結果中的缺失值工具

 

交叉表

是一種用於計算分組頻率的特殊透視圖,對數據進行彙總spa

 

pd.crosstab(index,colums)code

  • index:分組數據,交叉表的行索引
  • columns:交叉表的列索引
 
pd.crosstab(index=df.sex,columns=df.smoke)
 
 
Out[6]:
smoke False True
sex    
man 2 2
women 3 2
相關文章
相關標籤/搜索