數據分析學習筆記4-----處理缺失數據
阿新 • • 發佈:2018-10-08
浮點 clas taf 方法 fill ilo light .data highlight
處理缺失數據
對於數值數據,pandas使用浮點值NaN(Not a Number)表示缺失數據。我們稱其為哨兵值。
濾除缺失數據
過濾掉缺失數據的辦法有很多種。你可以通過pandas.isnull或布爾索引的手工方法,但dropna可能會更實用一些。對於一個Series,dropna返回一個僅含非空數據和索引值的Series:
In [15]: from numpy import nan as NA In [16]: data = pd.Series([1, NA, 3.5, NA, 7]) In [17]: data.dropna() Out[17]: 0 1.0 2 3.5 4 7.0 dtype: float64
填充缺失數據
通過一個常數調用fillna就會將缺失值替換為那個常數值:
In [27]: df = pd.DataFrame(np.random.randn(7, 3)) In [28]: df.iloc[:4, 1] = NA In [29]: df.iloc[:2, 2] = NA In [30]: df Out[30]: 0 1 2 0 -0.204708 NaN NaN 1 -0.555730 NaN NaN 2 0.092908 NaN 0.769023 3 1.246435 NaN -1.296221 4 0.274992 0.228913 1.352917 5 0.886429 -2.001637 -0.371843 6 1.669025 -0.438570 -0.539741 In [33]: df.fillna(0) Out[33]: 0 1 2 0 -0.204708 0.000000 0.000000 1 -0.555730 0.000000 0.000000 2 0.092908 0.000000 0.769023 3 1.246435 0.000000 -1.296221 4 0.274992 0.228913 1.352917 5 0.886429 -2.001637 -0.371843 6 1.669025 -0.438570 -0.539741
通過一個字典調用fillna,就可以實現對不同的列填充不同的值
In [34]: df.fillna({1: 0.5, 2: 0}) Out[34]: 0 1 2 0 -0.204708 0.500000 0.000000 1 -0.555730 0.500000 0.000000 2 0.092908 0.500000 0.769023 3 1.246435 0.500000 -1.296221 4 0.274992 0.228913 1.352917 5 0.886429 -2.001637 -0.371843 6 1.669025 -0.438570 -0.539741
數據轉換
移除重復數據
In [45]: data = pd.DataFrame({‘k1‘: [‘one‘, ‘two‘] * 3 + [‘two‘], ....: ‘k2‘: [1, 1, 2, 3, 3, 4, 4]}) In [46]: data Out[46]: k1 k2 0 one 1 1 two 1 2 one 2 3 two 3 4 one 3 5 two 4 6 two 4
DataFrame的duplicated方法返回一個布爾型Series,表示各行是否是重復行(前面出現過的行)
In [47]: data.duplicated() Out[47]: 0 False 1 False 2 False 3 False 4 False 5 False 6 True dtype: bool
數據分析學習筆記4-----處理缺失數據