1. 程式人生 > >利用python/pandas/numpy做資料分析(三)-透視表pivot_table

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

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

import numpy as np
data=pd.DataFrame(np.arange(6).reshape((2,3)),
                 index=pd.Index(['ohio','color'], name='state'),
                columns=pd.Index(['one','two','three'], name='number')
                            )
data
number one two three
state
ohio 0 1 2
color 3 4 5

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

data.pivot('one','two')

這裡寫圖片描述

首先,它會設定一個新的索引( 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

import pandas as pd
unames=['user_id','gender','age','occupation','zip']
users=pd.read_table('C:\\Users\\ecaoyng\\Desktop\\work space\\Python\\py_for_analysis\\pydata-book-master\\ch02\\movielens\\users.dat'
,sep='::',header=None,names=unames) users.head()

合併三個表:

data=pd.merge(pd.merge(ratings, users),movies)
data[:10]

這裡寫圖片描述

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

pd.pivot_table(data, index=['movie_id'])[:10]

這裡寫圖片描述

當然也可以建兩個index

pd.pivot_table(data, index=['movie_id','occupation'])

這裡寫圖片描述

pd.pivot_table(data, index=['movie_id','occupation'],values=['rating'])

這裡寫圖片描述

pd.pivot_table(data, index=['movie_id','occupation'],values=['rating'],columns='gender')

這裡寫圖片描述

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

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

mean_ratings=mean_ratings.dropna(axis=0)
mean_ratings

其中官方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物件。

ratings_by_title=data.groupby('title').size()
type(ratings_by_title)

這裡寫圖片描述

active_titles=ratings_by_title.index[ratings_by_title >= 250]
active_titles

得到的active_titles 是索引:
這裡寫圖片描述

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

mean_ratings.ix[active_titles][:10]

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

top_female_ratings=mean_ratings.sort_values(by='F',ascending=False)

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

mean_ratings['diff']=mean_ratings['M']-mean_ratings['F']

對diff進行排序

sorted_by_diff=mean_ratings.sort_values(by='diff')

這裡寫圖片描述

男同志喜愛的電影

sorted_by_diff[::-1][:10]

[::-1] 表示取反

回到小費資料集

tips=pd.read_csv('C:\\Users\\ecaoyng\\Desktop\\work space\\Python\\py_for_analysis_code\\pydata-book-master\\ch08\\tips.csv')
tips[:5]

這裡寫圖片描述

tips.pivot_table(index=['sex','smoker'])

這裡寫圖片描述

tips['tip_pct']=tips['tip']/tips['total_bill']
tips[:6]

這裡寫圖片描述

tips.pivot_table(['tip_pct','size'], index=['sex','day'],columns='smoker')

這裡寫圖片描述

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

這裡寫圖片描述

tips.pivot_table(['tip_pct','size'], index=['sex','day'],columns='smoker',margins=True)

這裡寫圖片描述

tips.pivot_table(['tip_pct'], index=['sex','smoker'],columns='day',margins=True,aggfunc=len)

這裡寫圖片描述

相關推薦

利用python/pandas/numpy資料分析-透視pivot_table

透視表,根據一個或多個鍵進行聚合,並根據行列上的分組鍵將資料分配到各個矩形區域中. import numpy as np data=pd.DataFrame(np.arange(6).reshape((2,3)), index

創業公司資料分析使用者行為資料採集系統

  作為系列文章的第三篇,本文將重點探討資料採集層中的使用者行為資料採集系統。這裡的使用者行為,指的是使用者與產品UI的互動行為,主要表現在Android App、IOS App與Web頁面上。這些互動行為,有的會與後端服務通訊,有的僅僅引起前端UI的變化,但是

利用python資料分析-reindex

DataFrame.reindex(index=None, columns=None, **kwargs) reindex 函式的引數 引數 說明 method 插值填充方法 fill_value 引入的缺失資料值

Python實戰】Pandas:讓你像寫SQL一樣資料分析

1. 引言 前一篇介紹了Pandas實現簡單的SQL操作,本篇中將主要介紹一些相對複雜一點的操作。為了方便後面實操,先給出一份簡化版的裝置統計資料: 0 android NLL 387546520 2099457911 0 ios NLL 52877990 916421755 1 and

Python實戰】Pandas:讓你像寫SQL一樣資料分析

1. 引言 Pandas是一個開源的Python資料分析庫。Pandas把結構化資料分為了三類: Series,1維序列,可視作為沒有column名的、只有一個column的DataFrame; DataFrame,同Spark SQL中的DataFrame一樣,其概念來自於R語言,為多column並sch

創業公司資料分析ELK日誌系統

  作為系列文章的第四篇,本文將重點探討資料採集層中的ELK日誌系統。日誌,指的是後臺服務中產生的log資訊,通常會輸入到不同的檔案中,比如Django服務下,一般會有nginx日誌和uWSGI日誌。這些日誌分散地儲存在不同的機器上,取決於服務的部署情況了。如果

創業公司資料分析開篇

      瞭解“認知心理學”的朋友應該知道:人類對事物的認知,總是由淺入深。然而,每個人思考的深度千差萬別,關鍵在於思考的方式。通過提問三部曲:WHAT->HOW->WHY,可以幫助我們一步步地從事物的表象深入到事物的本質。比如學習一個新的技術框架,需要逐步

創業公司資料分析運營資料系統

  作為系列文章的第二篇,本文將首先來探討應用層中的運營資料系統,因為運營資料幾乎是所有網際網路創業公司開始做資料的起點,也是早期資料服務的主要物件。本文將著重回顧下我們做了哪些工作、遇到過哪些問題、如何解決並實現了相應的功能。 早期資料服務   產品上

創業公司資料分析資料倉庫的建設

  作為系列文章的第六篇,本文將重點探討資料處理層中資料倉庫的建設。在第二篇運營資料系統一文,有提到早期的資料服務中存在不少問題,雖然在做運營Dashboard系統時,對後臺資料服務進行了梳理,構建了資料處理的底層公共庫等,但是仍然存在一些問題: 中間資料流

創業公司資料分析微信分享追蹤系統

  作為系列文章的第五篇,本文重點探討資料採集層中的微信分享追蹤系統。微信分享,早已成為移動網際網路運營的主要方向之一,以Web H5頁面(下面稱之為微信海報)為載體,利用微信龐大的好友關係進行傳播,實現宣傳、拉新等營銷目的。以下圖為例,假設有一個海報被分享到了

Python用Selenium自動化測試:Page Object專題

Page Object專題 頁面物件模型的設計優勢: 創造可以被多個測試用例共享的可重用程式碼。 減少大量重複的程式碼。 如果使用者介面發生改變,則修改只用在一處進行。 圖片來源: 目的:測試程式碼與被測頁面物件程式碼分離,後期如果有頁面元素髮生了更改,

資料分析

Pandas的資料結構 匯入pandas: 資料分析三劍客 numpy pandas matplotlib # 三劍客 import numpy as np import pandas as pd import matplotlib.pyplot as plt

房地產資料分析

2.3 熱力圖(1)熱力圖簡介Heatmap 是用來呈現一定區域內的統計度量,最常見的網站訪問熱力圖就是以特殊高亮的形式顯示訪客熱衷的頁面區域和訪客所在的地理區域的圖示。Heatmap.js 這個 JavaScript 庫可以實現各種動態熱力圖的製作,並且以web頁面的形式展

clusterdata-2011-2 谷歌叢集資料分析

        現在想找這麼一種資料,該作業在每次排程時會以不同的方式執行,例如第一次以並行度為3的方式執行,第二次以並行度為5 的方式執行,然後比較不同並行度下作業的執行時間。         1、

python/pandas/numpy資料分析-MultiIndex

data=Series(np.random.randn(10),index=[list('aaabbbccdd'),list('1231231223')]) data a 1 0.198134 2 0.657700 3 -0.98

Python 股市資料分析2

每次你評價交易系統的時候,都要跟買入持有策略(SPY)進行比較。除了一些信託基金和少數投資經理沒有使用它,該策略在大多時候都是無敵的。有效市場假說強調沒有人能戰勝股票市場,所以每個人都應該購入指數基金,因為它能反應整個市場的構成。SPY是一個交易型開放式指數基金(一種可以像股票一樣交易的信託基金),它的價格

Python股市資料分析

AAPL GOOG MSFT Date 2016-01-04 1.000000 1.000000 1.000000 2016-01-05 0.974941 1.000998 1.004562 2016-01-06 0.955861 1.002399 0.986314 201

利用ARIMA進行時間序列資料分析Python

0 導讀 閱讀本文需要有掌握基本的ARIMA知識,倘若ARIMA相關內容已經遺忘,此處提供以下博文幫你回憶一下: 本文主要分為四個部分:  用pandas處理時序資料 檢驗序資料的穩定性 處理時序資料變成穩定資料 時序資料的預測 和許多時間序列分析一樣,本文同樣使

利用Pandas進行資料分析3——統計、處理缺失值、層次化索引

注:此係列參考了樑斌老師的課件和《利用Python進行資料分析》一書。 import numpy as np import pandas as pd from pandas import DataFrame,Series df_obj

小白學 Python 資料分析2Pandas 概述

人生苦短,我用 Python 前文傳送門: 小白學 Python 資料分析(1):資料分析基礎 概覽 首先還是幾個官方連結放一下: Pandas 官網:https://pandas.pydata.org/ Pandas 中文網:https://www.pypandas.cn/ Pandas Githu