接上篇:
因爲阿里雲上的本課程並未提供代碼和課程資料下載,所以我跟隨授課老師,手敲了代碼,並從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)
- 1)判斷數據中是否存在NaN
- 兩種思路:
- 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:不替換修改元數據,生成新的對象。
- 1 刪除存在缺失值:dropna(axis=, inplace=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():統計分組次數
- 自動分組sr = pd.qcut(data, bins)
- 2)將分組好的結果轉換成one-hot編碼
- pandas.get_dummies(data, prefix=None)
- data:array-like、Series、DataFrame
- prefix:分組名字
- pandas.get_dummies(data, prefix=None)
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
- np.concatnate((a,b), axis=)
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。
總結