小呆學資料分析 pandas中的層次化索引

2021-09-24 05:16:32 字數 3546 閱讀 6332

層次化索引應用場景

例子王小呆的女朋友李小妹是高三老師,高考結束可以查分後,李小妹讓班級裡面的同學將查分結果彙總給她,形式都是 張三.csv、李四.csv、王五.csv,內容如下:

張三.csv

姓名,科目,分數

張三,英語,128

張三,語文,110

張三,數學,125

張三,理綜,238

李四.csv

姓名,科目,分數

李四,英語,108

李四,語文,98

李四,數學,135

李四,理綜,245

王五.csv

姓名,科目,分數

王五,英語,135

王五,語文,105

王五,數學,140

王五,理綜,256

李小妹看到這一系列的檔案,有點犯愁,於是給小呆交代了一項任務,把這些檔案的內容做成一張包含姓名各科成績的**。

小呆默默的開啟python,先想把這些資料導進去再說,於是寫下**

import pandas as pd

std1 = pd.read_csv(

'張三.csv'

, encoding =

'gb2312'

)print

(std1)

結果報錯,小呆想到張三.csv檔案和上兩次的檔案不一樣,這是中文名命名的檔案,所以是不是需要做點什麼變化,而且要將科目作為索引,應該怎麼做呢?小呆請教了小瓜,小瓜寫下**

std1 = pd.read_csv(

'張三.csv'

, encoding =

'gb2312'

, engine =

'python'

, index_col =

'科目'

)print

(std1)

結果如下

分數

姓名 科目

張三 英語 128

語文 110

數學 125

理綜 238

連續匯入李四.csv、王五.csv。並利用上次的堆疊技術將他們組合成乙個資料塊。於是小呆寫下**

std = pd.concat(

[std1, std2, std3]

)print

(std)

結果如下:

分數

姓名 科目

張三 英語 128

語文 110

數學 125

理綜 238

李四 英語 108

語文 98

數學 135

理綜 245

王五 英語 135

語文 105

數學 140

理綜 256

做到這裡小呆想起來小瓜說過的層次化索引就是這個吧,我可以通過外索引直接索引乙個資料塊,於是小呆寫下**

print

(std[

'李四'

])

執行結果報錯keyerror。小呆問小瓜什麼情況。對於這種情況(注①)不能直接和列表切片索引一樣的方式進行索引,而要採用loc方法才能正確進行索引。小瓜寫下一行**

print

(std.loc[

('李四')]

)

結果如下:

分數

科目

英語 108

語文 98

數學 135

理綜 245

小呆想著怎麼把這樣一綹的資料轉換成**呢?他想起小瓜說起過stack和unstack方法。於是他寫下**

print

(std.unstack(

))

結果如下:

分數               

科目 數學 理綜 英語 語文

姓名

張三 125 238 128 110

李四 135 245 108 98

王五 140 256 135 105

小呆看到結果想想,原來這個unstack方法好像是把最內層的行索引旋轉成列索引了,然後列內容按照指定的索引添滿。

那麼stack方法一定是將列索引旋轉重排成行索引,然後按指定的索引添滿相對應的值。為了驗證想法,小呆寫下**

std4 = std.unstack(

)print

(std4.stack(

))

結果如下:

分數

姓名 科目

張三 數學 125

理綜 238

英語 128

語文 110

李四 數學 135

理綜 245

英語 108

語文 98

王五 數學 140

理綜 256

英語 135

語文 105

果真如此,小呆將結果std4交給了小妹。

注①:這個情況是什麼情況呢?小呆還是想不通,小瓜告訴小呆,當是dataframe格式的資料時,要用loc函式來進行行索引。

機器學習

小瓜講機器學習——分類演算法(一)logistic regression(邏輯回歸)演算法原理詳解

小瓜講機器學習——分類演算法(二)支援向量機(svm)演算法原理詳解

小瓜講機器學習——分類演算法(三)樸素貝葉斯法(***** bayes)

小瓜講機器學習——分類演算法(四)k近鄰法演算法原理及python**實現

小瓜講機器學習——分類演算法(五)決策樹演算法原理及python**實現

小瓜講機器學習——聚類演算法(一)k-means演算法原理python**實現

小瓜講機器學習——聚類演算法(二)mean shift演算法原理及python**實現

小瓜講機器學習——聚類演算法(三)dbscan演算法原理及python**實現

資料分析

小呆學資料分析——使用pandas中的merge函式進行資料集合並

小呆學資料分析——使用pandas中的concat函式進行資料集堆疊

小呆學資料分析——pandas中的層次化索引

小呆學資料分析——使用pandas的pivot進行資料重塑

小呆學資料分析——用duplicated/drop_duplicates方法進行重複項處理

小呆學資料分析——缺失值處理(一)

小呆學資料分析——異常值判定與處理(一)

小瓜講資料分析——資料清洗

資料視覺化

小瓜講資料分析——資料視覺化工程(matplotlib庫使用基礎篇)

小瓜講matplotlib高階篇——座標軸設定(座標軸居中、座標軸箭頭、刻度設定、標識設定)

小呆學資料分析 缺失值處理(一)

在收集資料的時候常常會遇到資料缺失,可能由於漏填,可能由於感測器故障,也可能就是邏輯上應該的 比如未婚女生問卷上先生一欄肯定是空出來的缺失值 不管如何缺失值需要在進一步資料分析前要進行相應的處理。預覽本節處理缺失值採用了以下幾個方案 剔除用固定值補充 用平均數補充 例子 小呆被交代一項任務,統計一下...

小呆學資料分析 異常值判定與處理(一)

在收集資料的過程中,可能由於人為錄入錯誤等原因,會出現明顯不合法的資料,需要在進一步分析之前對這些值進行判定並且處理,才能得到合理的資料分析和挖掘的結果。預覽對異常值採用以下方案判定 區間判定 普通統計量 箱型圖判定 例子 小呆被交代一項任務,統計一下這個星期各個洗髮露的銷量,小呆開啟營銷同事的記錄...

資料分析 pandas

pandas是乙個強大的python資料分析的工具包,它是基於numpy構建的,正因pandas的出現,讓python語言也成為使用最廣泛而且強大的資料分析環境之一。pandas的主要功能 具備對其功能的資料結構dataframe,series 整合時間序列功能 提供豐富的數 算和操作 靈活處理缺失...