Python批量清洗Excel數(shù)據(jù)的操作指南(去重+補(bǔ)缺失值+可視化)
一、需求背景
日常辦公/入門(mén)數(shù)據(jù)分析時(shí),常遇到Excel數(shù)據(jù)雜亂(重復(fù)值、缺失值、格式混亂),手動(dòng)處理耗時(shí);本文用Python批量搞定清洗+可視化,10行代碼解決重復(fù)工作,0基礎(chǔ)也能會(huì)。
二、數(shù)據(jù)準(zhǔn)備
公開(kāi)Excel數(shù)據(jù)集(含姓名、年齡、銷(xiāo)售額、地區(qū),帶重復(fù)值/缺失值),文末附下載鏈接,或直接用自己的Excel文件替換路徑即可。
三、核心步驟(代碼+詳細(xì)注釋)
步驟1:安裝庫(kù)+導(dǎo)入工具
!pip install pandas matplotlib openpyxl -q
# 導(dǎo)入庫(kù) import pandas as pd import matplotlib.pyplot as plt ???????plt.rcParams['font.sans-serif'] = ['SimHei']
步驟2:讀取Excel數(shù)據(jù)
# 讀取Excel文件(替換為你的文件路徑,Colab直接上傳后用文件名)
df = pd.read_excel('sales_data.xlsx', engine='openpyxl')
# 查看數(shù)據(jù)前5行+基本信息(快速了解數(shù)據(jù)結(jié)構(gòu))
print("數(shù)據(jù)預(yù)覽:")
print(df.head())
print("\n數(shù)據(jù)基本信息:")
print(df.info()) # 查看字段、數(shù)據(jù)類(lèi)型、缺失值數(shù)量步驟3:批量數(shù)據(jù)清洗(核心)
# 1. 刪除重復(fù)行(按所有字段去重)
df = df.drop_duplicates()
# 2. 處理缺失值(年齡/銷(xiāo)售額用平均值填充,地區(qū)用“未知”填充)
df['年齡'] = df['年齡'].fillna(df['年齡'].mean().round(0)) # 年齡取整
df['銷(xiāo)售額'] = df['銷(xiāo)售額'].fillna(df['銷(xiāo)售額'].mean())
df['地區(qū)'] = df['地區(qū)'].fillna('未知')
# 3. 格式統(tǒng)一(年齡轉(zhuǎn)為整數(shù),銷(xiāo)售額保留2位小數(shù))
df['年齡'] = df['年齡'].astype(int)
df['銷(xiāo)售額'] = df['銷(xiāo)售額'].round(2)
# 清洗后數(shù)據(jù)預(yù)覽
print("\n清洗后數(shù)據(jù):")
print(df.head())步驟4:簡(jiǎn)單可視化
4.1 各地區(qū)銷(xiāo)售額分布(柱狀圖)
region_sales = df.groupby('地區(qū)')['銷(xiāo)售額'].sum()
plt.figure(figsize=(10,4))
region_sales.plot(kind='bar', color='#66b3ff')
plt.title('各地區(qū)銷(xiāo)售額分布')
plt.xlabel('地區(qū)')
plt.ylabel('總銷(xiāo)售額(元)')
plt.xticks(rotation=45)
plt.grid(axis='y', alpha=0.3)
plt.show()4.2 年齡與銷(xiāo)售額關(guān)系(散點(diǎn)圖)
plt.figure(figsize=(8,4))
plt.scatter(df['年齡'], df['銷(xiāo)售額'], color='#ff6666', alpha=0.6)
plt.title('年齡與銷(xiāo)售額關(guān)系')
plt.xlabel('年齡')
plt.ylabel('銷(xiāo)售額(元)')
plt.grid(alpha=0.3)
plt.show()四、完整可復(fù)制代碼
# 安裝依賴(首次運(yùn)行)
!pip install pandas matplotlib openpyxl -q
# 導(dǎo)入庫(kù)
import pandas as pd
import matplotlib.pyplot as plt
plt.rcParams['font.sans-serif'] = ['SimHei']
# 1. 讀取Excel數(shù)據(jù)
df = pd.read_excel('sales_data.xlsx', engine='openpyxl')
print("原始數(shù)據(jù)預(yù)覽:")
print(df.head())
# 2. 數(shù)據(jù)清洗
df = df.drop_duplicates() # 去重
df['年齡'] = df['年齡'].fillna(df['年齡'].mean().round(0)).astype(int) # 補(bǔ)缺失值+轉(zhuǎn)整數(shù)
df['銷(xiāo)售額'] = df['銷(xiāo)售額'].fillna(df['銷(xiāo)售額'].mean()).round(2) # 補(bǔ)缺失值+保留2位小數(shù)
df['地區(qū)'] = df['地區(qū)'].fillna('未知') # 補(bǔ)缺失地區(qū)
print("\n清洗后數(shù)據(jù):")
print(df.head())
# 3. 可視化1:各地區(qū)銷(xiāo)售額
region_sales = df.groupby('地區(qū)')['銷(xiāo)售額'].sum()
plt.figure(figsize=(10,4))
region_sales.plot(kind='bar', color='#66b3ff')
plt.title('各地區(qū)銷(xiāo)售額分布')
plt.xlabel('地區(qū)')
plt.ylabel('總銷(xiāo)售額(元)')
plt.xticks(rotation=45)
plt.grid(axis='y', alpha=0.3)
plt.show()
# 4. 可視化2:年齡與銷(xiāo)售額關(guān)系
plt.figure(figsize=(8,4))
plt.scatter(df['年齡'], df['銷(xiāo)售額'], color='#ff6666', alpha=0.6)
plt.title('年齡與銷(xiāo)售額關(guān)系')
plt.xlabel('年齡')
plt.ylabel('銷(xiāo)售額(元)')
plt.grid(alpha=0.3)
plt.show()
# 5. 保存清洗后的數(shù)據(jù)到新Excel(可選)
df.to_excel('cleaned_sales_data.xlsx', index=False, engine='openpyxl')
print("\n清洗后的數(shù)據(jù)已保存為 cleaned_sales_data.xlsx")你平時(shí)用Excel處理數(shù)據(jù)時(shí),最頭疼“重復(fù)值”“缺失值”還是“格式轉(zhuǎn)換”?評(píng)論區(qū)說(shuō)你的痛點(diǎn),我給你針對(duì)性的簡(jiǎn)化代碼!
以上就是Python批量清洗Excel數(shù)據(jù)的操作指南(去重+補(bǔ)缺失值+可視化)的詳細(xì)內(nèi)容,更多關(guān)于Python批量清洗Excel數(shù)據(jù)的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!
相關(guān)文章
10 行Python 代碼實(shí)現(xiàn) AI 目標(biāo)檢測(cè)技術(shù)【推薦】
這篇文章主要介紹了10 行Python 代碼,實(shí)現(xiàn) AI 目標(biāo)檢測(cè)技術(shù),看完了代碼,我們?cè)谝黄鹆牧哪繕?biāo)檢測(cè)背后的技術(shù)背景,并解讀這10行Python代碼的由來(lái)和實(shí)現(xiàn)原理。感興趣的朋友跟隨小編一起看看吧2019-06-06
教你如何在pycharm中安裝opencv,tensorflow,keras
今天通過(guò)本教程教大家如何在pycharm中安裝opencv,tensorflow,keras,本文分步驟給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2021-08-08
在Python中操作列表之List.append()方法的使用
這篇文章主要介紹了在Python中操作列表之List.append()方法的使用,是Python入門(mén)學(xué)習(xí)中的基礎(chǔ)知識(shí),需要的朋友可以參考下2015-05-05
深入理解Python虛擬機(jī)中浮點(diǎn)數(shù)(float)的實(shí)現(xiàn)原理及源碼
在本篇文章當(dāng)中主要分析在 cpython 虛擬機(jī)當(dāng)中 float 類(lèi)型的實(shí)現(xiàn)原理以及與他相關(guān)的一些源代碼,文中的示例代碼講解詳細(xì),感興趣的可以了解一下2023-03-03
python中sys.argv參數(shù)用法實(shí)例分析
這篇文章主要介紹了python中sys.argv參數(shù)用法,實(shí)例分析了python中sys.argv參數(shù)的功能、定義及使用技巧,需要的朋友可以參考下2015-05-05
Python中實(shí)現(xiàn)WebSocket的示例詳解
WebSocket 是一種計(jì)算機(jī)通信協(xié)議,它為客戶端和服務(wù)器之間的雙向通信提供了一個(gè)全雙工的通道,本篇文章將詳解 Python 中如何實(shí)現(xiàn) WebSocket,感興趣的可以了解下2025-03-03
Python和Pandas版本的對(duì)應(yīng)關(guān)系詳細(xì)講解
Pandas是Python的核心數(shù)據(jù)分析支持庫(kù),提供了快速、靈活、明確的數(shù)據(jù)結(jié)構(gòu),旨在簡(jiǎn)單、直觀地處理關(guān)系型、標(biāo)記型數(shù)據(jù),這篇文章主要介紹了Python和Pandas版本對(duì)應(yīng)關(guān)系的相關(guān)資料,需要的朋友可以參考下2025-08-08
Python調(diào)用C# Com dll組件實(shí)戰(zhàn)教程
下面小編就為大家?guī)?lái)一篇Python調(diào)用C# Com dll組件實(shí)戰(zhàn)教程。小編覺(jué)得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2017-10-10
Python爬取YY評(píng)級(jí)分?jǐn)?shù)并保存數(shù)據(jù)實(shí)現(xiàn)過(guò)程解析
這篇文章主要介紹了Python爬取YY評(píng)級(jí)分?jǐn)?shù)并保存數(shù)據(jù)實(shí)現(xiàn)過(guò)程解析,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2020-06-06

