天天看點

利用python/pandas/numpy做資料分析(三)-透視表pivot_table

透視表,根據一個或多個鍵進行聚合,并根據行列上的分組鍵将資料配置設定到各個矩形區域中.

number

one

two

three

state

ohio

1

2

color

3

4

5

前兩個參數分别作用于行和列的索引,最後一個參數用于填充dataframe的資料列的列名

利用python/pandas/numpy做資料分析(三)-透視表pivot_table

首先,它會設定一個新的索引( set_index() ),然後對索引排序( sort_index() ),最後調用 unstack 。以上的步驟合在一起就是 pivot 。

官方定義:

DataFrame.pivot_table(data, values=None, index=None, columns=None, aggfunc=’mean’, fill_value=None, margins=False, dropna=True, margins_name=’All’)

data: DataFrame對象

values: 顯示的列的名字,可以應用aggfunc中的函數

index: 索引

columns: 可選的, 通過額外的方法來分割你所關心的實際值,然而aggfunc被應用到values上, aggfunc預設的是mean

下面來看幹貨:

打開dat表,分别為users, ratings, movies

合并三個表:

利用python/pandas/numpy做資料分析(三)-透視表pivot_table

最簡單的透視表必須有一個資料幀和一個索引

利用python/pandas/numpy做資料分析(三)-透視表pivot_table

當然也可以建兩個index

利用python/pandas/numpy做資料分析(三)-透視表pivot_table
利用python/pandas/numpy做資料分析(三)-透視表pivot_table
利用python/pandas/numpy做資料分析(三)-透視表pivot_table

可以看出和value的差別了嗎?colume的值作為列名了。

之後我們要drop掉NAN的資料,

其中官方dropna函數為DataFrame.dropna(axis=0, how=’any’, thresh=None, subset=None, inplace=False),其中axis : {0 or ‘index’, 1 or ‘columns’}, or tuple/list thereof

Pass tuple or list to drop on multiple axes,即axis=0表示删除行,axis=1表示删除列。

當然,也可以通過fillna将缺失值填充為所需要的。

之後我打算過濾掉評論不足250條的記錄,其中size()得到含有各個電影分組大小的serise對象。

利用python/pandas/numpy做資料分析(三)-透視表pivot_table

得到的active_titles 是索引:

利用python/pandas/numpy做資料分析(三)-透視表pivot_table

然後可以在mean_ratings中選擇我們所需要的行了

之後可以對female的評價執行降序排列

為了觀察男女差别最大的電影,可以加一列diff

對diff進行排序

利用python/pandas/numpy做資料分析(三)-透視表pivot_table

男同志喜愛的電影

[::-1] 表示取反

回到小費資料集

利用python/pandas/numpy做資料分析(三)-透視表pivot_table
利用python/pandas/numpy做資料分析(三)-透視表pivot_table
利用python/pandas/numpy做資料分析(三)-透視表pivot_table
利用python/pandas/numpy做資料分析(三)-透視表pivot_table

小技巧,先畫出正題架構比如 columns 是列索引名, index是行索引名等

利用python/pandas/numpy做資料分析(三)-透視表pivot_table
利用python/pandas/numpy做資料分析(三)-透視表pivot_table
利用python/pandas/numpy做資料分析(三)-透視表pivot_table