天天看點

python--Pandas進階處理

@

目錄

  • Pandas進階處理
    • 1. 進階處理-缺失值處理
      • 1.1 如何進行缺失值處理
        • 兩種思路:
        • 如何處理nan
        • 不是缺失值nan,有預設标記的
    • 2. 進階處理-資料離散化
      • one-hot編碼&啞變量
      • 2.1 什麼是資料的離散化
      • 2.2 為什麼要離散化
      • 2.3 如何實作資料的離散化
    • 3. 進階處理-合并
    • 4. 進階處理-交叉表與透視表
      • 4.1 交叉表與透視表什麼作用
      • 4.2 使用crosstab(交叉表)實作
      • 4.3 pivot_table
    • 5. 進階處理-分組與聚合
      • 5.1 什麼是分組與聚合
      • 5.2 分組與聚合API
    • 6. 綜合案例

  • 缺失值處理
  • 資料離散化
  • 合并
  • 交叉表與透視表
  • 分組與聚合
  • 綜合案例

  1. 删除含有缺失值的樣本
  2. 替換/插補

  • 判斷資料中是否存在NaN
    • pd.isnull(df)

    • pd.notnull(df)

    • df.dropna(inplace=False, axis='rows')

      不會修改原資料,需要接受傳回值
    • df.fillna(value, inplace=False)

      • values

        : 替換成的值
      • inplace

        :True 會修改原資料 False 不會修改原資料,生成新的對象

  • 替換

    ?-> np.nan

    • df.replace(to_replace="?", value=np.nan)

      • to_replace

        :替換前的值
      • value

        :替換後的值
  • 處理

    np.nan

    缺失值的步驟
# 讀取資料
path = "https://archive.ics.uci.edu/ml/machine-learning-databases/breast-cancer-wisconsin/breast-cancer-wisconsin.data"
name = ["Sample code number", "Clump Thickness", "Uniformity of Cell Size", "Uniformity of Cell Shape", "Marginal Adhesion", "Single Epithelial Cell Size", "Bare Nuclei", "Bland Chromatin", "Normal Nucleoli", "Mitoses", "Class"]

data = pd.read_csv(path, names=name)
           

性别 年齡
A 1 23
B 2 30
C 18
物種 毛發
3

下邊更合理

老鼠

原始的身高資料:165,174,160,180,159,163,192,184

  • 對資料進行分組
    • 自動分組

      sr=pd.qcut(data, bins)

      - 自定義分組

      sr=pd.cut(data, bins)

      - 對資料進行分組将資料分組一般會與

      value_counts

      搭配使用,統計每組的個數
      • series.value_counts()

        :統計分組次數
  • 将分組好的結果轉換成one-hot編碼
    • pd.get_dummies(data, prefix=None)

      • data

        : array-like, Series, or DataFrame
      • prefix

        : 分組名字
# 1)準備資料
data = pd.Series([165,174,160,180,159,163,192,184], index=['No1:165', 'No2:174','No3:160', 'No4:180', 'No5:159', 'No6:163', 'No7:192', 'No8:184']) 
           
python--Pandas進階處理

  • numpy
    • np.concatnate((a, b), axis=)
    • 水準拼接
      • np.hstack()
    • 豎直拼接
      • np.vstack()
  • 按方向拼接
    • pd.concat([data1, data2], axis=1)

      • 按照行或列進行合并,axis=0為列索引,axis=1為行索引
  • 按索引拼接
    • pd.merge

      實作合并
  • pd.merge(left, right, how="inner", on=[索引])

    python--Pandas進階處理
python--Pandas進階處理

  • 找到、探索兩個變量之間的關系

  • pd.crosstab(value1, value2)

python--Pandas進階處理

  • DataFrame.groupby(key, as_index=False)

    • key

      :分組的列資料,可以多個
  • 案例:不同顔色的不同筆的價格資料
col =pd.DataFrame({'color': ['white','red','green','red','green'], 'object': ['pen','pencil','pencil','ashtray','pen'],'price1':[5.56,4.20,1.30,0.56,2.75],'price2':[4.75,4.12,1.60,0.75,3.15]})

           
python--Pandas進階處理

python--Pandas進階處理