@
目錄
- Pandas進階處理
- 1. 進階處理-缺失值處理
- 1.1 如何進行缺失值處理
- 兩種思路:
- 如何處理nan
- 不是缺失值nan,有預設标記的
- 1.1 如何進行缺失值處理
- 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. 進階處理-缺失值處理
- 缺失值處理
- 資料離散化
- 合并
- 交叉表與透視表
- 分組與聚合
- 綜合案例
- 删除含有缺失值的樣本
- 替換/插補
- 判斷資料中是否存在NaN
-
pd.isnull(df)
-
pd.notnull(df)
-
-
-
不會修改原資料,需要接受傳回值df.dropna(inplace=False, axis='rows')
-
df.fillna(value, inplace=False)
-
: 替換成的值values
-
:True 會修改原資料 False 不會修改原資料,生成新的對象inplace
-
-
- 替換
?-> 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)
-
: array-like, Series, or DataFramedata
-
: 分組名字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'])

- 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進階處理
- 找到、探索兩個變量之間的關系
-
pd.crosstab(value1, value2)
-
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]})