溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶(hù)服務(wù)條款》

Python中的數(shù)據(jù)清洗方法是什么

發(fā)布時(shí)間:2023-03-27 15:24:22 來(lái)源:億速云 閱讀:122 作者:iii 欄目:開(kāi)發(fā)技術(shù)

這篇文章主要講解了“Python中的數(shù)據(jù)清洗方法是什么”,文中的講解內(nèi)容簡(jiǎn)單清晰,易于學(xué)習(xí)與理解,下面請(qǐng)大家跟著小編的思路慢慢深入,一起來(lái)研究和學(xué)習(xí)“Python中的數(shù)據(jù)清洗方法是什么”吧!

這里數(shù)據(jù)清洗需要用到的庫(kù)是pandas庫(kù),下載方式還是在終端運(yùn)行 : pip install pandas.

首先我們需要對(duì)數(shù)據(jù)進(jìn)行讀取

import pandas as pd
 
data = pd.read_csv(r'E:\PYthon\用戶(hù)價(jià)值分析 RFM模型\data.csv')
pd.set_option('display.max_columns', 888)  # 大于總列數(shù)
pd.set_option('display.width', 1000)
print(data.head())
print(data.info())

第3行是對(duì)數(shù)據(jù)進(jìn)行讀取,pandas庫(kù)里面有讀取函數(shù)調(diào)用即可,csv格式是讀取寫(xiě)入速度最快的。

第4,5行是為了讀取的實(shí)話顯示全部的列,是因?yàn)楹芏嗔械脑抪ycharm會(huì)把中間一些列隱藏掉,所以我們這為了他不隱藏就加這兩行代碼。

第6行是顯示表頭,我們可以看到有什么字段,列名

第7行是顯示表的基本信息,每一列有多少數(shù)據(jù),字段是什么類(lèi)型的數(shù)據(jù)。非空的數(shù)據(jù)有多少,所以我們第一步就可以看得到基本那一列有空值了。

Python中的數(shù)據(jù)清洗方法是什么

空值處理

data.info()后我們可以看到大部分?jǐn)?shù)據(jù)都有541909行,所以我們大致猜到是Description ,CustomerID 列漏結(jié)果了

# 空值處理
print(data.isnull().sum())  # 空值中和,查看每一列的空值
 
# 空值刪除
data.drop(columns=['Description'], inplace=True)
print(data.info())
data.isnull()判斷是否為空。data.isnumll().sum()計(jì)算空值數(shù)量。

第5行進(jìn)行空值刪除,這里先刪除Description列的空值,inplace=True意思是對(duì)數(shù)據(jù)進(jìn)行修改,如果沒(méi)有inplace=True,則不對(duì)data進(jìn)行修改,打印數(shù)據(jù)還是和之前一樣,或者重新定義一個(gè)變量進(jìn)行賦值。

由于這一列空值數(shù)據(jù)比較少,這一列數(shù)據(jù)對(duì)我們數(shù)據(jù)分析沒(méi)有那么重要,所以我們選擇刪除這一整列。

我們這個(gè)表是對(duì)客戶(hù)進(jìn)行篩選的,所以以CustomerID為準(zhǔn),強(qiáng)制刪除其他列

# CustomerID有空值
# 刪除所有列的空值
data.dropna(inplace=True)
# print(data.info())
print(data.isnull().sum())  # 由于CustomerID為必須字段,所以強(qiáng)制刪除其他列,以CustomerID為準(zhǔn)

這里我們先對(duì)其他字段進(jìn)行類(lèi)型轉(zhuǎn)換

類(lèi)型轉(zhuǎn)換

# 轉(zhuǎn)換為日期類(lèi)型
data['InvoiceDate'] = pd.to_datetime(data['InvoiceDate'])
 
# CustomerID 轉(zhuǎn)換為整型
data['CustomerID'] = data['CustomerID'].astype('int')
print(data.info())

以上我們處理了空值,接下來(lái)我們處理異常值。

異常值處理

查看表的基本數(shù)據(jù)分布可以使用describe

print(data.describe())

可以看到數(shù)據(jù)Quantity 列中最小值為-80995.這列明顯有異常值,所以需要對(duì)這一列進(jìn)行異常值篩選。

只需要大于0的值。

Python中的數(shù)據(jù)清洗方法是什么

data = data[data['Quantity'] > 0]
print(data)

打印一下就只有397924行了。

重復(fù)值處理

# 查看重復(fù)值
print(data[data.duplicated()])

Python中的數(shù)據(jù)清洗方法是什么

有5194行重復(fù)值,這里的重復(fù)值是完全重復(fù)的,所以是沒(méi)用的數(shù)據(jù)我們可以進(jìn)行刪除。

刪除重復(fù)值

# 刪除重復(fù)值
data.drop_duplicates(inplace=True)
 
print(data.info())

刪除后對(duì)原來(lái)的表進(jìn)行保存,再去查看一下表的基本信息

Python中的數(shù)據(jù)清洗方法是什么

現(xiàn)在還剩下392730條數(shù)據(jù)。數(shù)據(jù)到這一步就完成了數(shù)據(jù)清洗。

感謝各位的閱讀,以上就是“Python中的數(shù)據(jù)清洗方法是什么”的內(nèi)容了,經(jīng)過(guò)本文的學(xué)習(xí)后,相信大家對(duì)Python中的數(shù)據(jù)清洗方法是什么這一問(wèn)題有了更深刻的體會(huì),具體使用情況還需要大家實(shí)踐驗(yàn)證。這里是億速云,小編將為大家推送更多相關(guān)知識(shí)點(diǎn)的文章,歡迎關(guān)注!

向AI問(wèn)一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI