玩轉Pandas,讓數據處理更easy系列5

01

系列回顧

玩轉Pandas系列已經連續推送3篇,盡量貼近Pandas的本質原理,結合工作實踐,按照使用Pandas的邏輯步驟,系統地並結合實例推送Pandas的主要常用功能,已經推送的3篇文章:

玩轉Pandas,讓數據處理更easy系列1

玩轉Pandas,讓數據處理更easy系列2

玩轉Pandas,讓數據處理更easy系列3

玩轉Pandas,讓數據處理更easy系列4

以上4篇總結了Pandas主要的兩個數據結構:

  • Series(一維)和DataFrame(二維),
  • 系統地介紹了創建,索引,增刪改查Series, DataFrame等常用操作介面,
  • 總結了Series如何裝載到DataFrame中,以及一個實際應用多個DataFrame的實戰項目例子。
  • 總結了多層索引,Pivot操作,sort操作等

值得推薦的是,Pandas廣泛應用在金融,統計,社會科學,和許多工程領域。Pandas和R語言直接無縫銜接。Pandas是基於Numpy(Numpy基於Python)基礎開發,因此能和帶有第三方庫的科學計算環境很好地進行集成。

02

Pandas核心應用場景

按照使用邏輯,盤點Pandas的主要可以做的事情:

  1. 能將Python, Numpy的數據結構靈活地轉換為Pandas的DataFrame結構(玩轉Pandas,讓數據處理更easy系列1; 玩轉Pandas,讓數據處理更easy系列2)
  2. DataFrame可以方便地實現增加和刪除行、列 ( 玩轉Pandas,讓數據處理更easy系列2)
  3. 智能地帶標籤的切片,好玩的索引提取大數據集的子集(玩轉Pandas,讓數據處理更easy系列2 )
  4. 自動數據對齊,完全可以不考慮行、列標籤,直接append list.
  5. 靈活地對數據集Reshape和按照不同軸變化數據的Pivot操作。玩轉Pandas,讓數據處理更easy系列4
  6. 強大的I/O操作。提供介面: CSV and delimited, Excel files, databases, and saving / loading data from the ultrafast HDF5 format.(玩轉Pandas,讓數據處理更easy系列2)
  7. 通俗易懂地在DataFrame結構上實現merge和join操作(merge操作見:玩轉Pandas,讓數據處理更easy系列3)

  8. 善於處理missing data,如NaN, non-floating數據。
  9. 強大而靈活的分組功能,在數據集上實現分-應用-合的操作,達到整合和改變數據形狀的目的。
  10. 時間序列的處理功能,生成 data range,移動的時間窗,時間移動和lagging等。

03

處理Missing data

missing data,缺失數據,在數據系統中是比較常見的一個問題,而pandas的設計目標就是讓missing data的處理工作盡量輕鬆。

pandas使用浮點NaN表示浮點和非浮點數組中的缺失數據,它沒有什麼具體意義,只是一個便於被檢測出來的標記而已,pandas對象上的所有描述統計都排除了缺失數據。

下面看下關於missing data處理常用的幾個API。

isnull 返回一個含有布爾的對象,這些布爾表示哪些是缺失

notnull isnull 的否定式

dropna 根據各標籤中是否存在缺失數據對軸標籤進行過濾,返回不為NaN的值,具體裡面的參數包括:

DataFrame.dropna(axis=0, how=any, thresh=None, subset=None, inplace=False)

fillna 用指定值填充NaN值, DataFrame.fillna(value=None, method=None, axis=None, inplace=False, limit=None, downcast=None, **kwargs)

其中,method : {『backfill』, 『bfill』, 『pad』, 『ffill』, None}, default None

axis : {0 or 『index』, 1 or 『columns』}

舉例說明如何使用,假如有如下一張表 pd_data

調用pd_data.isnull(),返回所有元素是否為null的布爾結果:

調用 pd_data.dropna(),默認值下,axis=0 , how=any,也就是只要每行中有一個元素為NaN,則直接過濾掉此行,返回的結果如下所示:

調用pd_data.fillna(),採用標量值填充,則所有的NaN值都取為1.0,

pd_data4.fillna(1)

採用字典值填充,對應的列取對應字典中的填充值:

pd_data4.fillna({name:none,score:60,rank:none})

再說method關鍵詞填充效果,當method設置為 ffill時,填充效果如下所示,取上一個有效值填充到下面行,

原有NaN的表格:

執行如下:

pd_data.fillna(method=ffill)

執行如下:

pd_data.fillna(method=backfill)

04

concatenate操作

concatenate是連接兩個及以上的DataFrame的操作,一個簡單的concatenate例子,給定兩個DataFrame,concatenate它們,

df1 = pd.DataFrame({A: [A0, A1, A2, A3],

B: [B0, B1, B2, B3],

C: [C0, C1, C2, C3],

D: [D0, D1, D2, D3]},

index=[0, 1, 2, 3])

df2 = pd.DataFrame({A: [A4, A5, A6, A7],

B: [B4, B5, B6, B7],

C: [C4, C5, C6, C7],

D: [D4, D5, D6, D7]},

index=[4, 5, 6, 7])

result = pd.concat( [df1,df2] )

df1:

df2:

合併後:

默認axis=0,即沿著行方面連接,如果axis設置為1,會沿列方向擴展,行數為兩者間行數的較大者,較小的用NaN填充。

concatenate還可以創建帶層級的索引,關於這部分暫不展開介紹。

以上總結了DataFrame在處理空缺值的常用操作,及連接多個DataFrame的concat操作。

如想下載以上代碼,請後台回復: pandas

小編對所推文章分類整理,歡迎後台回複數字,查找感興趣的文章: 1. 排序演算法

2. 圖演算法(含樹)

3. 動態規劃

4. LeetCode

5. Python

6. 數據處理三劍客 7. 數學知識

8. 數據預處理

9. 機器學習演算法實例大全 10. 深度學習

11. Tensorflow

12. 自然語言處理 13. 上海沙龍

更多文章:

深度學習|大師之作,必是精品

演算法channel關鍵詞和文章索引

邏輯回歸| 原理解析及代碼實現

邏輯回歸| 演算法兌現為python代碼

決策樹

對決策樹剪枝

sklearn分類和回歸

提煉出分類器演算法

貝葉斯分類

樸素貝葉斯分類器:例子解釋

樸素貝葉斯分類:拉普拉斯修正

單詞拼寫糾正器python實現

半樸素貝葉斯分類器

支持向量機參數求解

支持向量機之軟間隔和核函數

如果文章對您有幫助,歡迎點贊、轉發。你的支持=彼此的進步

演算法channel ∣原創乾貨分享

weixin.qq.com/r/cjhGXpj (二維碼自動識別)

微信群: gz113097485 QQ交流群:646901659


推薦閱讀:

數據缺失值的4種處理方法
數據挖掘和網路爬蟲有什麼關聯區別?
郎叫獸的自我介紹信
怎樣理解時間序列二
數據挖掘中常見的特徵工程方法

TAG:數據挖掘 | 大數據 | 數據分析 |