阿里雲03--Pandas快速入門課程筆記--進階篇

接上篇:

因爲阿里雲上的本課程並未提供代碼和課程資料下載,所以我跟隨授課老師,手敲了代碼,並從github上找到了入門進階篇用的兩個csv文件,爲了方便下載,本文所用數據和代碼已經上傳Github:有需要的同學點擊此處下載代碼和數據

4.6 高級處理–缺失值處理

  • 1)如何進行缺失值處理
    • 兩種思路:
      • 1)刪除含有缺失值的樣本
      • 2)替換/插補
    • 4.6.1 如何處理NaN
      • 1)判斷數據中是否存在NaN
        • pd.isnull(df)
        • pd.notnull(df)
      • 2)刪除含有缺失值的樣本
        • df.dropna(inplace=False)
        • 替換/插補
        • df.fillna(value, inplace=False)
  • 2)缺失值處理實例

4.6.1 如何處理NaN

判斷數據中是否存在NaN:pd.isnull(df)、pd.notnull(df)
處理方式:

  • 若存在缺失值NaN,並且是np.nan
    • 1 刪除存在缺失值:dropna(axis=, inplace=False)
      • inplace 默認爲False,表示不會修改原數據,需要接受返回值。若設置爲True,則修改原數據。
    • 2 替換缺失值 fillna(value, inplace=True)
      • value:替換爲的值
      • inplace:
        • True:會修改原數據
        • False:不替換修改元數據,生成新的對象。

4.6.2 不是缺失值NaN,有默認標記的。

例如?等標點符號

  • 替換?-> np.nan
    • df.replace(to_replace="?", value=np.nan)
    • 處理np.nan缺失值的步驟

4.6.3 總結

  • isnull、notnull判斷是否存在缺失值
  • dropna刪除np.nan標記的缺失值
  • fillna填充缺失值
  • replace替換具體的某些值

4.7 高級處理-數據離散化

性別 年齡
A 1 23
B 2 30
C 1 18

物種 毛髮
A 1
B 2
C 3

理想的分類設定,one-hot編碼/啞編碼
男 女 年齡
A 1 0 23
B 0 1 30
C 1 0 18

4.7.1 數據離散化

連續屬性的離散化就是將連續屬性的值域上,將值域劃分爲若干個離散的區間,最後用不同的符號或整數值代表落在每個子區間的屬性值。
在這裏插入圖片描述

4.7.2爲什麼要離散化

連續屬性離散化的目的是爲了簡化數據結構,數據離散化技術可以用來減少給定連續屬性值得個數。離散化方法經常作爲數據挖掘的工具。

4.7.3如何實現離散化

  • 1)分組
    • 自動分組sr = pd.qcut(data, bins)
      • data:被分組的數據
      • bins:分成幾組
    • 自定義分組sr = pd.cut(data, [])
    • 對數據進行分組將數據分組 一般會與value_counts搭配使用,統計每組的個數
      • series.value_counts():統計分組次數
  • 2)將分組好的結果轉換成one-hot編碼
    • pandas.get_dummies(data, prefix=None)
      • data:array-like、Series、DataFrame
      • prefix:分組名字

4.8 高級處理–合併

  • numpy
    • np.concatnate((a,b), axis=)
      • 水平拼接
        • np.hstack()
      • 豎直拼接
        • np.vstack()
    • 1)按方向拼接
      • pd.concat([data1, data2], axis=1)
    • 2)按索引拼接
      • pd.merge實現合併
      • pd.merge(left,right,how=“inner”,on=[索引]) #內連接 保存共有字段
      • pd.merge(left,right,how=“outer”,on=[索引]) #外連接 所有字段都保存,一方沒有的填充爲NaN

4.9 交叉表與透視表

4.9.1 交叉表與透視表的作用

4.9.2 使用crosstab(交叉表)實現

交叉表:用於計算已列數據對於另外一列數據的分組個數(尋找兩個列之間的關係)

  • pd.crosstab(value1, value2)

4.9.3 使用pivot_table(透視表)實現

  • DataFrame.pivot_table([], index=[])

4.10 高級處理–分組與聚合

4.10.1 什麼是分組與聚合?在這裏插入圖片描述

4.10.2 分組與聚合API

  • DataFrame
  • series

在這裏插入圖片描述

4.10.3 星巴克零售店鋪數據案例

代碼詳見github。

總結

在這裏插入圖片描述
在這裏插入圖片描述

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章