【Python】Pandas基础:结构化数据处理
生活随笔
收集整理的這篇文章主要介紹了
【Python】Pandas基础:结构化数据处理
小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
python:Pandas基礎(chǔ):結(jié)構(gòu)化數(shù)據(jù)處理
目錄:
文章目錄
- @[toc]
- 一 pandas及其重要性
- 二 pandas的數(shù)據(jù)結(jié)構(gòu)介紹
- 1 Series
- 2 DataFrame
- 3 索引對(duì)象
- 三 基本功能
- 1 重新索引
- 2 丟棄指定軸上的項(xiàng)
- 3 索引、選取、過(guò)濾
- 4 算術(shù)運(yùn)算和數(shù)據(jù)對(duì)齊
- 1)在算術(shù)方法中填充值
- 2)DataFrame和Series之間的運(yùn)算
- 5 函數(shù)應(yīng)用和映射
- 6 排序和排名
- 1)排序
- 2)排名
- 7 帶有重復(fù)值的軸索引
- 四 匯總和計(jì)算描述統(tǒng)計(jì)
- 1 相關(guān)系數(shù)與協(xié)方差
- 2 唯一值、值計(jì)數(shù)、成員資格
- 1)唯一值
- 2)值計(jì)數(shù)
- 3)成員資格
- 五 處理缺失數(shù)據(jù)
- 1 濾除缺失數(shù)據(jù)
- 2 填充缺失數(shù)據(jù)
- 六 層次化索引
- 1 重排分級(jí)順序
- 2 根據(jù)級(jí)別匯總統(tǒng)計(jì)
- 3 使用DataFrame的列
- 七 其他有關(guān)pandas的話題
- 1 整數(shù)索引
- 2 面板數(shù)據(jù)
- 八 END
- @[toc]
- 一 pandas及其重要性
- 二 pandas的數(shù)據(jù)結(jié)構(gòu)介紹
- 1 Series
- 2 DataFrame
- 3 索引對(duì)象
- 三 基本功能
- 1 重新索引
- 2 丟棄指定軸上的項(xiàng)
- 3 索引、選取、過(guò)濾
- 4 算術(shù)運(yùn)算和數(shù)據(jù)對(duì)齊
- 1)在算術(shù)方法中填充值
- 2)DataFrame和Series之間的運(yùn)算
- 5 函數(shù)應(yīng)用和映射
- 6 排序和排名
- 1)排序
- 2)排名
- 7 帶有重復(fù)值的軸索引
- 四 匯總和計(jì)算描述統(tǒng)計(jì)
- 1 相關(guān)系數(shù)與協(xié)方差
- 2 唯一值、值計(jì)數(shù)、成員資格
- 1)唯一值
- 2)值計(jì)數(shù)
- 3)成員資格
- 五 處理缺失數(shù)據(jù)
- 1 濾除缺失數(shù)據(jù)
- 2 填充缺失數(shù)據(jù)
- 六 層次化索引
- 1 重排分級(jí)順序
- 2 根據(jù)級(jí)別匯總統(tǒng)計(jì)
- 3 使用DataFrame的列
- 七 其他有關(guān)pandas的話題
- 1 整數(shù)索引
- 2 面板數(shù)據(jù)
- 八 END
一 pandas及其重要性
- pandas是數(shù)據(jù)分析工作的首選庫(kù)。它含有使數(shù)據(jù)分析工作變得更快更簡(jiǎn)單的高級(jí)數(shù)據(jù)結(jié)構(gòu)和操作工具。
- pandas是基于Numpy構(gòu)建的讓以Numpy為中心的應(yīng)用變得更加簡(jiǎn)單。
- 它能滿足工作中的許多需求:
① 具備按軸自動(dòng)或顯式數(shù)據(jù)對(duì)齊功能的數(shù)據(jù)結(jié)構(gòu)。防止由于數(shù)據(jù)未對(duì)齊導(dǎo)致的常見錯(cuò)誤。
② 集成時(shí)間序列功能。
③ 技既能處理時(shí)間序列也能處理非時(shí)間序列數(shù)據(jù)的數(shù)據(jù)結(jié)構(gòu)。
④ 數(shù)學(xué)運(yùn)算和簡(jiǎn)約(agg),可以根據(jù)不同的元數(shù)據(jù)(軸編號(hào))處理。
⑤ 靈活處理缺失數(shù)據(jù)。
⑥ 合并及其他出現(xiàn)在常見數(shù)據(jù)庫(kù)中的關(guān)系型運(yùn)算。 - pandas可以解決的數(shù)據(jù)問(wèn)題隨著它的庫(kù)規(guī)模的增大而變得更加強(qiáng)大,成為數(shù)據(jù)分析一個(gè)不可或缺的工具。
二 pandas的數(shù)據(jù)結(jié)構(gòu)介紹
1 Series
- Series是一種類似于一維數(shù)組的對(duì)象,它由一組數(shù)據(jù)(各種Numpy數(shù)據(jù)類型)以及一組與之相關(guān)的數(shù)據(jù)標(biāo)簽(即索引)組成。由一組數(shù)據(jù)即可產(chǎn)生最簡(jiǎn)單的Series。
- Series的字符串表現(xiàn)形式為:索引在左邊,值在右邊。自動(dòng)創(chuàng)建一個(gè)0~N-1的整數(shù)型索引,可以通過(guò)values和index屬性獲取其數(shù)組表示形式和索引對(duì)象。
- 可以通過(guò)索引的方式選取Series的單個(gè)或者一組值。
- 數(shù)組運(yùn)算(如根據(jù)布爾型數(shù)組進(jìn)行過(guò)濾、標(biāo)量乘法、應(yīng)用數(shù)學(xué)函數(shù)等)會(huì)保留索引與值之間的鏈接。
- 可以將Series看作一個(gè)定長(zhǎng)的有序字典,索引到值之間是一個(gè)映射。
- 如果數(shù)據(jù)被存放在一個(gè)python字典中,也可以直接通過(guò)這個(gè)字典創(chuàng)建Series。
- 如果只傳入一個(gè)字典,則結(jié)果Series的索引就是原字典的鍵(有序排列)。
- Series最重要的一個(gè)功能是:它在算術(shù)運(yùn)算中會(huì)自動(dòng)對(duì)齊不同索引的數(shù)據(jù)。
- Series對(duì)象本身及其索引都有一個(gè)name屬性,該屬性跟pandas其他的關(guān)鍵功能關(guān)系非常密切:
2 DataFrame
- DataFrame是一個(gè)表格型的數(shù)據(jù)結(jié)構(gòu),含有一組有序的列,每列可以是不同的值類型(數(shù)值、字符串、布爾值等)。
- DataFrame既有行索引也有列索引,可以被看做是Series組成的字典(共同用一個(gè)索引)。DataFrame面向行和列的操作基本上是平衡的。
- DataFrame中的數(shù)據(jù)是以一個(gè)或多個(gè)二維塊存放的(而不是列表、字典或別的一維數(shù)據(jù)結(jié)構(gòu))。也可以輕松地將其表示為更高維度的數(shù)據(jù)(層次化索引的表格型結(jié)構(gòu),高級(jí)數(shù)據(jù)處理功能的關(guān)鍵要素)。
- 構(gòu)建DataFrame的方法①:直接傳入一個(gè)由等長(zhǎng)列或Numpy數(shù)組組成的字典。
- 結(jié)果DataFrame會(huì)自動(dòng)加上索引,且全部列會(huì)被有序排列。
- 如果指定了列序列,則DataFrame的列會(huì)按照指定順序進(jìn)行排列。
- 如果傳入的數(shù)據(jù)找不到,就會(huì)產(chǎn)生NA值
- 通過(guò)類似字典標(biāo)記的方式或?qū)傩缘姆绞?#xff0c;可以將DataFrame的列獲取為一個(gè)Series
- 返回的Series擁有原DataFrame相同的索引,且其name屬性也已經(jīng)被相應(yīng)的設(shè)置好。
- 行也可以通過(guò)位置或名稱的方式就行獲取,比如用索引字段ix。
- 列可以通過(guò)賦值的方式進(jìn)行修改。
- 為不存在的列賦值會(huì)創(chuàng)建一個(gè)新列。
- 將列表或數(shù)組賦值給某個(gè)列時(shí),其長(zhǎng)度必須跟DataFrame 長(zhǎng)度相匹配。如果是Series,會(huì)精確匹配DataFrame的索引,空位被缺失值填補(bǔ)。
- 構(gòu)建DataFrame的方法②:嵌套字典(字典的字典)
- 如果將嵌套字典傳遞給DataFrame,它會(huì)被解釋為:外層字典的鍵作為列,內(nèi)層鍵則作為行索引。
- 內(nèi)層字典的鍵會(huì)被合并、排序以形成最終 的索引。除非顯式指定了索引。
- 可以輸入給DataFrame構(gòu)造函數(shù)所能接受的各種數(shù)據(jù)
- 二維ndarray #數(shù)據(jù)矩陣,還可以傳入行標(biāo)和列標(biāo)。
- 由數(shù)組、列表或元組組成的字典 #每個(gè)序列會(huì)變成DataFrame的一列,所有序列的長(zhǎng)度必須相同。
- Numpy的結(jié)構(gòu)化/記錄數(shù)組 #類似于“由數(shù)組組成的字典”
- 由Series組成的字典
- 由字典組成的字典
- 字典組成的Series列表
- 列表或元組組成的另一個(gè)DataFrame
- Numpy的MaskedAarry
- 如果設(shè)置了DataFrame的index和columns屬性,這些信息會(huì)被現(xiàn)顯示出來(lái)。
- 跟Series一樣,values屬性也會(huì)以二維ndarray的形式返回DataFrame中的數(shù)據(jù)。
- 如果DataFrame各列的數(shù)據(jù)類型不同,則值數(shù)組的數(shù)據(jù)類型會(huì)選用能夠兼容所有列的數(shù)據(jù)類型。
3 索引對(duì)象
- pandas的索引對(duì)象負(fù)責(zé)管理軸標(biāo)簽和其他元數(shù)據(jù)(比如軸名稱等)。構(gòu)建Series或DataFrame時(shí),所用到的任何數(shù)組或其他序列的標(biāo)簽會(huì)被轉(zhuǎn)換成一個(gè)index
- index對(duì)象不可修改。不可修改性非常重要,這樣才能使index對(duì)象在多個(gè)數(shù)據(jù)結(jié)構(gòu)之間安全共享。
- index的功能也類似于一個(gè)固定大小的集合。
- 每個(gè)索引都有一些方法和屬性,可用于設(shè)置邏輯并回答有關(guān)該索引所包含的數(shù)據(jù)信息的問(wèn)題。
- index的方法和屬性:
- append # 連接另一個(gè)index對(duì)象,產(chǎn)生一個(gè)新的index
- diff # 計(jì)算差集,并得到一個(gè)index
- intersection # 計(jì)算交集
- union # 計(jì)算并集
- isin # 計(jì)算一個(gè)指示各值是否都包含在參數(shù)集合中的布爾型數(shù)組
- delete # 刪除索引i處的元素,并得到一個(gè)新的index
- drop # 刪除傳入的值,并得到新的index
- insert # 將元素插入到索引i處,并得到新的index
- is_monotonic # 當(dāng)各元素均大于等于前一個(gè)元素時(shí),返回True
- is_unique # 當(dāng)index沒有重復(fù)值時(shí),返回True
- unique # 計(jì)算index中唯一值得數(shù)組
三 基本功能
1 重新索引
- pandas對(duì)象的一個(gè)重要方法是reindex,作用是創(chuàng)建一個(gè)適應(yīng)新索引的新對(duì)象。根據(jù)新索引進(jìn)行重排。
- reindex的mathod選項(xiàng):
- ffill或pad # 前向填充值
- bfill或backfill # 后向填充值
- 對(duì)于DataFrame,reindex可以修改(行)索引、列,或兩個(gè)都修改。
- 利用ix的標(biāo)簽索引功能,重新簡(jiǎn)潔索引任務(wù)。
- reindex函數(shù)的參數(shù)
- index # 用作索引的新序列,既可以是index實(shí)例,也可以是其他數(shù)據(jù)結(jié)構(gòu)。index會(huì)被完全使用,就像沒有任何復(fù)制。
- method # 插值(填充)方式
- fill_value # 在重新索引的過(guò)程中,需要引用缺失值時(shí)使用的替代值。
- limit # 前向或后向填充時(shí)的最大填充量
- level # 在MultiIndex的指定級(jí)別上匹配簡(jiǎn)單索引,否則選取其子集。
- copy # 默認(rèn)為True,無(wú)論如何復(fù)制,如果為False,則新舊相等就不復(fù)制。
2 丟棄指定軸上的項(xiàng)
- 丟棄某條軸上的一個(gè)或多個(gè)項(xiàng)很簡(jiǎn)單,只要有一個(gè)索引數(shù)組或列表即可。由于需要執(zhí)行一些數(shù)據(jù)整理和集合邏輯,所以drop方法返回的是一個(gè)在指定軸上刪除了指定值的新對(duì)象。
- 對(duì)于DataFrame,可以刪除任意軸上的索引值。
3 索引、選取、過(guò)濾
- Series索引的工作方式類似于Numpy數(shù)組的索引,只不過(guò)Series的索引值不只是整數(shù)。
- 對(duì)DataFrame的索引其實(shí)就是獲取一個(gè)或多個(gè)列。
- 為了在DataFrame的行上進(jìn)行標(biāo)簽索引,引入專門的索引字段ix,可以通過(guò)Numpy式的標(biāo)記法以及軸標(biāo)簽從DataFrame中選取行和列的子集,是一種重新索引的簡(jiǎn)單手段。
- 對(duì)pandas對(duì)象中的數(shù)據(jù)的選取和重排方式有很多。在使用層次化索引時(shí)還能用到一些別的方法。
- DataFrame的索引選項(xiàng)
- obj.ix[:,val] # 選取單個(gè)列或列子集
- obj.ix[val1,val2] # 同時(shí)選取行和列
- reindex方法 # 將一個(gè)或多個(gè)軸匹配到新索引
- xs方法 # 根據(jù)標(biāo)簽選取單行或單列,并返回一個(gè)Series
- icol、irow方法 # 根據(jù)整數(shù)位置選取單列或當(dāng)行,并返回一個(gè)Seires
- get_value、set_value方法 # 根據(jù)行標(biāo)簽和列標(biāo)簽選取單個(gè)值。get_value是選取,set_value是設(shè)置。
4 算術(shù)運(yùn)算和數(shù)據(jù)對(duì)齊
- pandas最重要的一個(gè)功能是,它可以對(duì)不同索引對(duì)象進(jìn)行算術(shù)運(yùn)算。在將對(duì)象相加時(shí),如果存在不同的索引對(duì),則結(jié)果的索引就是該索引對(duì)的并集。
- 自動(dòng)的數(shù)據(jù)對(duì)齊操作在不重疊的索引處引入NA值,缺失值會(huì)在算術(shù)運(yùn)算中廣播。
- 對(duì)于DataFrame,自動(dòng)對(duì)齊會(huì)同時(shí)發(fā)生在行和列上。
1)在算術(shù)方法中填充值
- 在對(duì)不同索引的對(duì)象進(jìn)行算術(shù)運(yùn)算時(shí),可能希望在一個(gè)對(duì)象中某個(gè)軸鏢旗南在另一個(gè)對(duì)象中找不到時(shí)填充一個(gè)特殊值(比如0)。
- 靈活的算術(shù)方法
- add # +
- sub # -
- div # /
- mul # *
2)DataFrame和Series之間的運(yùn)算
- 默認(rèn)情況下,DataFrame和Series之間的算術(shù)運(yùn)算會(huì)將Series的索引匹配到DataFrame的列,然后沿著行一直向下廣播。
5 函數(shù)應(yīng)用和映射
- Numpy的ufuncs(元素級(jí)數(shù)組方法)也可用于操作pandas對(duì)象。
- 將函數(shù)應(yīng)用到由各列或行所形成的一維數(shù)組上。DataFrame的apply方法可以實(shí)現(xiàn)此功能。
- 元素級(jí)的Python函數(shù)也可以用。使用applymap函數(shù)可以得到frame中各個(gè)浮點(diǎn)值的格式化字符串。
- Series有一個(gè)應(yīng)用于元素級(jí)函數(shù)的map方法。
6 排序和排名
1)排序
- 按條件對(duì)數(shù)據(jù)集排序(sorting)是一種重要的內(nèi)置運(yùn)算。對(duì)行或列索引排序,可使用sort_index方法,返回一個(gè)已排序的新對(duì)象。
- 對(duì)于Series,若按值進(jìn)行排序,可使用其order方法:obj.order()
- 在排序時(shí),任何缺失值默認(rèn)都會(huì)被放到Series的末尾。
- 對(duì)于DataFrame,通過(guò)將一個(gè)或多個(gè)列的名字傳遞給by選項(xiàng)可對(duì)一個(gè)或多個(gè)列進(jìn)行排序。
2)排名
- 排名(ranking)跟排序關(guān)系密切,且它會(huì)增設(shè)一個(gè)排名值(從1開始,一直到數(shù)組中有效數(shù)據(jù)的數(shù)量)。與numpy.argsort間接排序索引差不多,只不過(guò)可以通過(guò)某種規(guī)則破壞平級(jí)關(guān)系。
- rank方法通過(guò)“為各組分配一個(gè)平均排名”的方式破壞平級(jí)關(guān)系
- obj.rank() # 直接排名
- obj.rank(method = ‘first’) # 根據(jù)值在原數(shù)據(jù)中出現(xiàn)的順序給出排名
- obj,rank(ascendiing = False, method = ‘max’) # 降序排名
- 排名時(shí)用于破壞平級(jí)關(guān)系的method選項(xiàng):
- ‘a(chǎn)verage’ # 在相等分組中,為各個(gè)值分配平均排名
- min # 使用整個(gè)分組的最小排名
- max # 使用整個(gè)分組的最小排名
- first # 按值在原數(shù)據(jù)中的出現(xiàn)順序排名
7 帶有重復(fù)值的軸索引
- 雖然pandas函數(shù)如(reindex)等都要求標(biāo)簽唯一,但這并不強(qiáng)制。
- 索引的is_unique屬性可以顯示索引對(duì)應(yīng)的值是否唯一。
- 對(duì)于重復(fù)值得索引,數(shù)據(jù)選擇返回的結(jié)果不同。如果索引對(duì)應(yīng)單個(gè)值,返回標(biāo)量值;如果索引對(duì)應(yīng)多個(gè)值,返回一個(gè)Series。
四 匯總和計(jì)算描述統(tǒng)計(jì)
- pandas對(duì)象擁有一組常用的數(shù)學(xué)和統(tǒng)計(jì)方法。大部分都屬于約簡(jiǎn)和匯總統(tǒng)計(jì),用于從Series中提取單個(gè)值(sum or mean)或從DataFrame的行或列中提取一個(gè)Series。與對(duì)應(yīng)的Numpy數(shù)組方法相比,它們都是基于沒有缺失數(shù)據(jù)的假設(shè)構(gòu)建的。
- 約簡(jiǎn)方法的選項(xiàng):
- ① axis # 約簡(jiǎn)的軸,DataFrame的行用0,列用1
- ② skipna # 排除缺失值,默認(rèn)值為True
- ③ level # 如果軸是層次化索引的(MultiIndex),則更具level分組簡(jiǎn)約
- 描述和匯總統(tǒng)計(jì)
- count # 非NA值得數(shù)量
- describe # 匯總統(tǒng)計(jì)描述
- min、max # 最小值和最大值
- argmin、argmax # 最小值和最大值的索引位置
- idximin、idxmax # 最小值和最大值的索引值
- quantile # 樣本分位數(shù)
- sum # 總和
- mean # 平均數(shù)
- median # 算術(shù)中位數(shù)
- mad # 根據(jù)平均值計(jì)算平均絕對(duì)誤差
- var # 方差
- std # 標(biāo)準(zhǔn)差
- skew # 偏度(三階矩)
- kurt # 峰度(四階距)
- cumsum # 累計(jì)和
- cummin、cummax # 累計(jì)最小值和累計(jì)最大值
- cumprod # 累計(jì)積
- diff # 一階分差(對(duì)時(shí)間序列很有用)
- pct_change #百分比變化
1 相關(guān)系數(shù)與協(xié)方差
- 有些匯總統(tǒng)計(jì)(如相關(guān)系數(shù)和協(xié)方差) 是通過(guò)參數(shù)計(jì)算出來(lái)的。
- Series的corr方法用于計(jì)算兩個(gè)Series中重疊的、非NA的、按索引對(duì)齊的值得相關(guān)系數(shù)。cov用于計(jì)算協(xié)方差。
- DataFrame的corr和cov方法將以DataFrame的形式返回完整的相關(guān)系數(shù)和協(xié)方差矩陣。
- 利用DataFrame的corrwith方法,可以計(jì)算列或行與另一個(gè)Series或DataFrame之間的相關(guān)系數(shù)。
2 唯一值、值計(jì)數(shù)、成員資格
1)唯一值
uniques = obj.unique() uniques.sort() # 對(duì)結(jié)果進(jìn)行排序2)值計(jì)數(shù)
- Series是按值頻率降序排列的。
- value_counts是一個(gè)頂級(jí)pandas方法 ,可用于任何數(shù)組或序列。
3)成員資格
- isin,用于判斷矢量化集合的成員資格
五 處理缺失數(shù)據(jù)
- 缺失數(shù)據(jù)(missing data)在大部分?jǐn)?shù)據(jù)分析中都很常見。pandas的設(shè)計(jì)目標(biāo)之一就是讓缺失數(shù)據(jù)的處理任務(wù)盡量輕松。
- pandas對(duì)象上的所有描述統(tǒng)計(jì)都排除了缺失數(shù)據(jù)。
- pandas使用浮點(diǎn)值(Not a Number)表示浮點(diǎn)和非浮點(diǎn)數(shù)組中的缺失數(shù)據(jù),只是一個(gè)便于被檢測(cè)出來(lái)的標(biāo)記。
- python內(nèi)置的None也會(huì)表當(dāng)作NaN處理。
- NA處理方法
- dropna # 根據(jù)各標(biāo)簽的值是否存在缺失數(shù)據(jù)對(duì)軸標(biāo)簽進(jìn)行過(guò)濾,可通過(guò)閾值調(diào)節(jié)對(duì)缺失值的容忍度。
- fillna # 用指定值或者插值(ffill或bfill)填充缺失數(shù)據(jù)。
- isnull # 返回一個(gè)布爾型對(duì)象
- notnull # isnull的否定形式
1 濾除缺失數(shù)據(jù)
- 對(duì)于Series,dropna返回一個(gè)僅含非空數(shù)據(jù)和索引值的Series
- DataFrame,稍微復(fù)雜一點(diǎn),dropna默認(rèn)丟棄任何含有缺失值的行,也可設(shè)置丟棄全NA或含有NA的行或列。
- 另一個(gè)濾除DataFrame行的問(wèn)題設(shè)計(jì)時(shí)間序列處理。若只想留下一部分觀測(cè)數(shù)據(jù),可以用thresh參數(shù)。
2 填充缺失數(shù)據(jù)
- fillna方法主要用于填補(bǔ)缺失數(shù)據(jù)。
- 填充常數(shù)值
- 通過(guò)一個(gè)字典數(shù)調(diào)用fillna,對(duì)不同的列填充不同的值。
- fillna默認(rèn)返回新對(duì)象,但也可以對(duì)現(xiàn)有對(duì)象進(jìn)行就地修改。
- 對(duì)reindex有效的插值方法也可以用于fillna。
- fillna也可以傳入Series的平均數(shù)或中位數(shù)。
- fillna函數(shù)參數(shù)說(shuō)明:
- ① value # 用于填充缺失值的標(biāo)量值或字典對(duì)象
- ② method # 插值方式。如果未函數(shù)調(diào)用時(shí)未指定其他參數(shù),默認(rèn)為’ffill’
- ③ axis # 待填充的軸,默認(rèn)axis = 0
- ④ inpalce # 修改調(diào)用者對(duì)象而不產(chǎn)生副本
- ⑤ limit # (對(duì)于向前和向后填充)可以連續(xù)填充的最大數(shù)量
六 層次化索引
- 層次化索引(hierarchical indexing)是pandas的一項(xiàng)重要功能,它使你能夠在軸上有用多個(gè)(兩個(gè)以上)索引級(jí)別。抽象點(diǎn)說(shuō),它使你能以低維度形式處理高維度數(shù)據(jù)。
- 這就是帶有MultiIndex索引的Series的格式化輸出形式。索引之間的“間隔”表示“直接使用上面的標(biāo)簽”。
- 對(duì)于一個(gè)層次化索引的對(duì)象,選取數(shù)據(jù)子集的操作很簡(jiǎn)單:
- 層次化索引在數(shù)據(jù)重塑和基于分組的操作(如透視表生成)中扮演著重要的角色。比如:unstack方法和其逆運(yùn)算stack方法:
- 對(duì)于一個(gè)DataFrame,每條軸都可以有分層索引,每層都可以有名字(可以是字符串,也可以是其他Python對(duì)象),如果指定了名稱,它們就會(huì)顯示在控制臺(tái)輸出中。(不要將索引名稱跟軸標(biāo)簽混為一談)
- 由于有了分部索引,因此可以輕松選取列分組。
1 重排分級(jí)順序
- 有時(shí),需要重新調(diào)整某條軸上各級(jí)別的順序,或根據(jù)指定級(jí)別上的值對(duì)數(shù)據(jù)進(jìn)行排序。swaplevel接受兩個(gè)級(jí)別編號(hào)或名稱,并返回一個(gè)互換了級(jí)別的新對(duì)象(數(shù)據(jù)不會(huì)發(fā)生變化)。
- sortlevel則根據(jù)單個(gè)級(jí)別中的值對(duì)數(shù)據(jù)進(jìn)行排序(穩(wěn)定的)。交換級(jí)別時(shí),常常也會(huì)用到sortlevel,這樣最終結(jié)果就有序了。
- 在層次化索引的對(duì)象上,如果索引是按字典方式從外到內(nèi)排序,即調(diào)用sortlevel(0)或sort_index()的結(jié)果,數(shù)據(jù)選取操作的性能會(huì)好很多。
2 根據(jù)級(jí)別匯總統(tǒng)計(jì)
- 許多對(duì)DataFrame和Series的描述和匯總統(tǒng)計(jì)都有一個(gè)level選項(xiàng),它用于指定在某條軸上求和的級(jí)別。類似pandas的groupby功能。
3 使用DataFrame的列
- 很多情況下,DataFrame的一個(gè)或多個(gè)列可以當(dāng)做索引來(lái)用,或者將索引轉(zhuǎn)變?yōu)镈ataFrame的列。
- DataFrame 的set_index函數(shù)會(huì)將其一個(gè)或多個(gè)列轉(zhuǎn)換為行索引,并創(chuàng)建一個(gè)新的DataFrame。
- 默認(rèn)情況下,這些被轉(zhuǎn)換為索引的列會(huì)被刪除,也可以調(diào)參保留。
- reset_index的功能與set_index剛好相反,層次化索引的級(jí)別會(huì)被轉(zhuǎn)移到列里面。
七 其他有關(guān)pandas的話題
1 整數(shù)索引
- 基于標(biāo)簽或位置的索引
- 為了保持良好的一致性。如果軸索引含有索引器,那么根據(jù)整數(shù)進(jìn)行數(shù)據(jù)選取的操作將總是面向標(biāo)簽,也包括用ix進(jìn)行切片。
- 如果需要可靠的、不考慮索引類型的、基于位置的索引,可以用Series的iget_value方法和DataFrame的irow和iloc方法。
2 面板數(shù)據(jù)
pandas有一個(gè)panel數(shù)據(jù)結(jié)構(gòu),可以看做一個(gè)三維版的DataFrame,pandas大部分開發(fā)工作都集中在表格型數(shù)據(jù)的操作上,層次化索引頁(yè)使得多數(shù)情況下不需要用到N維數(shù)組。
stacked = pdata.ix[:].to_frame() # panel的數(shù)據(jù)呈現(xiàn)形式 stacked.to_panel()八 END
總結(jié)
以上是生活随笔為你收集整理的【Python】Pandas基础:结构化数据处理的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 【Python】Numpy基础:数组和矢
- 下一篇: websocket python爬虫_p