1. 程式人生 > >透視表和交叉表

透視表和交叉表

根據 參數 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]:
ageheightsexsmoke
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]:
ageheight
sexsmoke
manFalse 23.500000 183.5
True 25.000000 170.5
womenFalse 34.666667 173.0
True 24.000000 178.0

列分組透視表 設置columns參數

df.pivot_table(columns=df.smoke)
Out[5]:
smokeFalseTrue
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]:
ageheight
smokeFalseTrueFalseTrue
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]:
ageheightsmoke
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]:
smokeFalseTrue
sex
man 2 2
women 3 2

透視表和交叉表