這裡資料清洗需要用到的函式庫是pandas函式庫,下載方式還是在終端機運作:pip install pandas.
首先我們需要對資料進行讀取
import pandas as pd data = pd.read_csv(r'E:\PYthon\用户价值分析 RFM模型\data.csv') pd.set_option('display.max_columns', 888) # 大于总列数 pd.set_option('display.width', 1000) print(data.head()) print(data.info())
第3行是對資料進行讀取,pandas函式庫裡面有讀取函數呼叫即可,csv格式是讀取寫入速度最快的。
第4,5行是為了讀取的實話顯示全部的列,是因為很多列的話pycharm會把中間一些列隱藏掉,所以我們這為了他不隱藏就加這兩行程式碼。
第6行是顯示表頭,我們可以看到有什麼字段,列名
第7行是顯示表的基本信息,每一列有多少數據,字段是什麼類型的數據。非空的資料有多少,所以我們第一步就可以看得到基本上那一列有空值了。
data.info()後我們可以看到大部分資料都有541909行,所以我們大致猜到是Description , CustomerID 列漏結果了
# 空值处理 print(data.isnull().sum()) # 空值中和,查看每一列的空值 # 空值删除 data.drop(columns=['Description'], inplace=True) print(data.info()) data.isnull()判断是否为空。data.isnumll().sum()计算空值数量。
第5行進行空值刪除,這裡先刪除Description列的空值,inplace=True意思是對資料進行修改,如果沒有inplace=True,則不對data進行修改,列印資料還是跟之前一樣,或是重新定義一個變數進行賦值。
由於這一列空值資料比較少,這一列資料對我們資料分析沒有那麼重要,所以我們選擇刪除這一整列。
我們這個表格是對客戶進行篩選的,所以以CustomerID為準,強制刪除其他欄位
# CustomerID有空值 # 删除所有列的空值 data.dropna(inplace=True) # print(data.info()) print(data.isnull().sum()) # 由于CustomerID为必须字段,所以强制删除其他列,以CustomerID为准
這裡我們先對其他欄位進行型別轉換
型別轉換
# 转换为日期类型 data['InvoiceDate'] = pd.to_datetime(data['InvoiceDate']) # CustomerID 转换为整型 data['CustomerID'] = data['CustomerID'].astype('int') print(data.info())
以上我們處理了空值,接下來我們處理例外值。
查看表的基本資料分佈可以使用describe
print(data.describe())
可以看到資料Quantity 列中最小值為-80995.這列明顯有異常值,所以需要對這列進行異常值篩選。
只需要大於0的值。
data = data[data['Quantity'] > 0] print(data)
列印一下就只有397924行了。
# 查看重复值 print(data[data.duplicated()])
有5194行重複值,這裡的重複值是完全重複的,所以是沒用的資料我們可以刪除。
# 删除重复值 data.drop_duplicates(inplace=True) print(data.info())
刪除後對原來的表進行保存,再去查看一下表的基本資訊
現在還剩下392730條數據。資料到這一步就完成了資料清洗。
以上是Python中的資料清洗方法是什麼的詳細內容。更多資訊請關注PHP中文網其他相關文章!