一文帶你深入了解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\用戶價(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格式是讀取寫入速度最快的。
第4,5行是為了讀取的實(shí)話顯示全部的列,是因?yàn)楹芏嗔械脑抪ycharm會(huì)把中間一些列隱藏掉,所以我們這為了他不隱藏就加這兩行代碼。
第6行是顯示表頭,我們可以看到有什么字段,列名
第7行是顯示表的基本信息,每一列有多少數(shù)據(jù),字段是什么類型的數(shù)據(jù)。非空的數(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)行修改,如果沒有inplace=True,則不對(duì)data進(jìn)行修改,打印數(shù)據(jù)還是和之前一樣,或者重新定義一個(gè)變量進(jìn)行賦值。
由于這一列空值數(shù)據(jù)比較少,這一列數(shù)據(jù)對(duì)我們數(shù)據(jù)分析沒有那么重要,所以我們選擇刪除這一整列。
我們這個(gè)表是對(duì)客戶進(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)行類型轉(zhuǎn)換
類型轉(zhuǎn)換
# 轉(zhuǎn)換為日期類型
data['InvoiceDate'] = pd.to_datetime(data['InvoiceDate'])
# CustomerID 轉(zhuǎn)換為整型
data['CustomerID'] = data['CustomerID'].astype('int')
print(data.info())
以上我們處理了空值,接下來我們處理異常值。
異常值處理
查看表的基本數(shù)據(jù)分布可以使用describe
print(data.describe())
可以看到數(shù)據(jù)Quantity 列中最小值為-80995.這列明顯有異常值,所以需要對(duì)這一列進(jìn)行異常值篩選。
只需要大于0的值。

data = data[data['Quantity'] > 0] print(data)
打印一下就只有397924行了。
重復(fù)值處理
# 查看重復(fù)值 print(data[data.duplicated()])

有5194行重復(fù)值,這里的重復(fù)值是完全重復(fù)的,所以是沒用的數(shù)據(jù)我們可以進(jìn)行刪除。
刪除重復(fù)值
# 刪除重復(fù)值 data.drop_duplicates(inplace=True) print(data.info())
刪除后對(duì)原來的表進(jìn)行保存,再去查看一下表的基本信息

現(xiàn)在還剩下392730條數(shù)據(jù)。數(shù)據(jù)到這一步就完成了數(shù)據(jù)清洗??罩?,異常值,重復(fù)值,類型轉(zhuǎn)換。后面一篇文章是對(duì)數(shù)據(jù)進(jìn)行分析。
到此這篇關(guān)于一文帶你深入了解Python中的數(shù)據(jù)清洗的文章就介紹到這了,更多相關(guān)Python數(shù)據(jù)清洗內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
- 使用Python進(jìn)行數(shù)據(jù)清洗與存儲(chǔ)的基本方法
- 如何使用Python數(shù)據(jù)清洗庫(kù)
- 使用python數(shù)據(jù)清洗代碼實(shí)例
- 用Python進(jìn)行數(shù)據(jù)清洗以及值處理
- Python常用的數(shù)據(jù)清洗方法詳解
- 三個(gè)Python常用的數(shù)據(jù)清洗處理方式總結(jié)
- Python數(shù)據(jù)清洗&預(yù)處理入門教程
- python?文件讀寫和數(shù)據(jù)清洗
- Python實(shí)現(xiàn)數(shù)據(jù)清洗的示例詳解
- python數(shù)據(jù)清洗中的時(shí)間格式化實(shí)現(xiàn)
- Python實(shí)現(xiàn)數(shù)據(jù)清洗的18種方法
相關(guān)文章
Python Word文件自動(dòng)化實(shí)戰(zhàn)之簡(jiǎn)歷篩選
本文將利用Python自動(dòng)化做一個(gè)具有實(shí)操性的小練習(xí),即通過讀取簡(jiǎn)歷來篩選出符合招聘條件的簡(jiǎn)歷。文中的示例代碼講解詳細(xì),感興趣的小伙伴可以跟隨小編一起學(xué)習(xí)一下2022-05-05
python自動(dòng)化測(cè)試之從命令行運(yùn)行測(cè)試用例with verbosity
這篇文章主要介紹了python自動(dòng)化測(cè)試之從命令行運(yùn)行測(cè)試用例with verbosity,是一個(gè)較為經(jīng)典的自動(dòng)化測(cè)試實(shí)例,需要的朋友可以參考下2014-09-09
Flask傳遞URL參數(shù)的實(shí)現(xiàn)
在Flask中,傳遞URL參數(shù)是一種常見且強(qiáng)大的功能,本文主要介紹了Flask傳遞URL參數(shù)的實(shí)現(xiàn),具有一定的參考價(jià)值,感興趣的可以了解一下2024-09-09
python35種繪圖函數(shù)詳細(xì)總結(jié)
Python有許多用于繪圖的函數(shù)和庫(kù),比如Matplotlib,Plotly,Bokeh,Seaborn等,這只是一些常用的繪圖函數(shù)和庫(kù),Python還有其他繪圖工具,如Pandas、ggplot等,選擇適合你需求的庫(kù),可以根據(jù)你的數(shù)據(jù)類型、圖形需求和個(gè)人偏好來決定,本文給大家總結(jié)了python35種繪圖函數(shù)2023-08-08
Queue隊(duì)列中join()與task_done()的關(guān)系及說明
這篇文章主要介紹了Queue隊(duì)列中join()與task_done()的關(guān)系及說明,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2023-02-02
Python定時(shí)發(fā)送消息的腳本:每天跟你女朋友說晚安
今天小編就為大家分享一篇關(guān)于Python定時(shí)發(fā)送消息的腳本:每天跟你女朋友說晚安的文章,小編覺得內(nèi)容挺不錯(cuò)的,現(xiàn)在分享給大家,具有很好的參考價(jià)值,需要的朋友一起跟隨小編來看看吧2018-10-10

