python数据清理_Python-数据清理
在現實生活中,數據丟失始終是一個問題。諸如機器學習和數據挖掘之類的領域在模型預測的準確性方面面臨著嚴重的問題,因為缺少值會導致數據質量較差。在這些領域中,缺失值處理是使模型更準確和有效的主要重點。
什么時候以及為什么會丟失數據?
讓我們考慮對產品進行在線調查。很多時候,人們不會共享與他們有關的所有信息。很少有人會分享他們的經驗,但是不會分享他們使用該產品多長時間。很少有人分享他們使用該產品的時間,他們的經歷而不是他們的聯系信息。因此,總是以某種方式丟失一部分數據,這在實時情況下非常普遍。
現在讓我們看看如何使用熊貓處理缺失值(例如NA或NaN)。
# import the pandas libraryimportpandasaspdimportnumpyasnp
df=pd.DataFrame(np.random.randn(5,3),index=['a','c','e','f','h'],columns=['one','two','three'])df=df.reindex(['a','b','c','d','e','f','g','h'])printdf
其輸出如下-
one two three
a 0.077988 0.476149 0.965836
b NaN NaN NaN
c -0.390208 -0.551605 -2.301950
d NaN NaN NaN
e -2.000303 -0.788201 1.510072
f -0.930230 -0.670473 1.146615
g NaN NaN NaN
h 0.085100 0.532791 0.887415
使用重新索引,我們創建了一個缺少值的DataFrame。在輸出中,NaN表示不是數字。
檢查缺失值
為了使檢測的缺失值更容易(和不同陣列dtypes),熊貓提供ISNULL()和NOTNULL()功能,這也是對系列和數據幀的對象的方法-
例
importpandasaspdimportnumpyasnp
df=pd.DataFrame(np.random.randn(5,3),index=['a','c','e','f','h'],columns=['one','two','three'])df=df.reindex(['a','b','c','d','e','f','g','h'])printdf['one'].isnull()
其輸出如下-
a False
b True
c False
d True
e False
f False
g True
h False
Name: one, dtype: bool
清理/填充丟失的數據
熊貓提供了多種清除缺失值的方法。fillna函數可以通過以下幾種方法用非空數據“填充” NA值。
用標量值替換NaN
以下程序顯示了如何將“ NaN”替換為“ 0”。
importpandasaspdimportnumpyasnp
df=pd.DataFrame(np.random.randn(3,3),index=['a','c','e'],columns=['one','two','three'])df=df.reindex(['a','b','c'])printdfprint("NaN replaced with '0':")printdf.fillna(0)
其輸出如下-
one two three
a -0.576991 -0.741695 0.553172
b NaN NaN NaN
c 0.744328 -1.735166 1.749580
NaN replaced with '0':
one two three
a -0.576991 -0.741695 0.553172
b 0.000000 0.000000 0.000000
c 0.744328 -1.735166 1.749580
在這里,我們用零值填充;相反,我們還可以填充其他任何值。
向前和向后填充NA
使用“重新索引”一章中討論的填充概念,我們將填充缺少的值。
方法
行動
填充/填充
填充方法前進
填充/回填
向后填充方法
例
importpandasaspdimportnumpyasnp
df=pd.DataFrame(np.random.randn(5,3),index=['a','c','e','f','h'],columns=['one','two','three'])df=df.reindex(['a','b','c','d','e','f','g','h'])printdf.fillna(method='pad')
其輸出如下-
one two three
a 0.077988 0.476149 0.965836
b 0.077988 0.476149 0.965836
c -0.390208 -0.551605 -2.301950
d -0.390208 -0.551605 -2.301950
e -2.000303 -0.788201 1.510072
f -0.930230 -0.670473 1.146615
g -0.930230 -0.670473 1.146615
h 0.085100 0.532791 0.887415
刪除缺失值
如果只想排除缺失值,則將dropna函數與axis參數一起使用。默認情況下,axis = 0,即沿著行,這意味著如果一行中的任何值為NA,那么將排除整個行。
例
importpandasaspdimportnumpyasnp
df=pd.DataFrame(np.random.randn(5,3),index=['a','c','e','f','h'],columns=['one','two','three'])df=df.reindex(['a','b','c','d','e','f','g','h'])printdf.dropna()
其輸出如下-
one two three
a 0.077988 0.476149 0.965836
c -0.390208 -0.551605 -2.301950
e -2.000303 -0.788201 1.510072
f -0.930230 -0.670473 1.146615
h 0.085100 0.532791 0.887415
替換缺少的(或)通用值
很多時候,我們必須用某個特定值替換一個通用值。我們可以通過應用replace方法來實現。
用標量值替換NA是fillna()函數的等效行為。
例
importpandasaspdimportnumpyasnp
df=pd.DataFrame({'one':[10,20,30,40,50,2000],'two':[1000,0,30,40,50,60]})printdf.replace({1000:10,2000:60})
其輸出如下-
one two
0 10 10
1 20 0
2 30 30
3 40 40
4 50 50
5 60 60
總結
以上是生活随笔為你收集整理的python数据清理_Python-数据清理的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: js for foreach 快慢_js
- 下一篇: linux docker安装svn,使用