透視表和交叉表
阿新 • • 發佈:2018-01-26
根據 參數 tle 均值 數據分析 log 缺失值 聚合 lsp
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 |
透視表
各種電子表格程序和其他數據分析軟件中一種常見的數據匯總工具。它根據一個或多個鍵對數據進行聚合,並根據行和列上的分組鍵將數據分配到各個矩形區域中
行分組透視表 設置index參數
# 默認得到一個平均值
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參數
df.pivot_table(columns=df.smoke)
Out[5]:
smoke | False | True |
---|---|---|
age | 30.2 | 24.50 |
height | 177.2 | 174.25 |
行列分組的透視表 同時設定index、columns參數
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:替換結果中的缺失值
交叉表
是一種用於計算分組頻率的特殊透視圖,對數據進行匯總
pd.crosstab(index,colums)
- index:分組數據,交叉表的行索引
- columns:交叉表的列索引
pd.crosstab(index=df.sex,columns=df.smoke)
Out[6]:
smoke | False | True |
---|---|---|
sex | ||
man | 2 | 2 |
women | 3 | 2 |
透視表和交叉表