Python批量清洗Excel數(shù)據(jù)的操作指南(去重+補(bǔ)缺失值+可視化)
一、需求背景
日常辦公/入門數(shù)據(jù)分析時,常遇到Excel數(shù)據(jù)雜亂(重復(fù)值、缺失值、格式混亂),手動處理耗時;本文用Python批量搞定清洗+可視化,10行代碼解決重復(fù)工作,0基礎(chǔ)也能會。
二、數(shù)據(jù)準(zhǔn)備
公開Excel數(shù)據(jù)集(含姓名、年齡、銷售額、地區(qū),帶重復(fù)值/缺失值),文末附下載鏈接,或直接用自己的Excel文件替換路徑即可。
三、核心步驟(代碼+詳細(xì)注釋)
步驟1:安裝庫+導(dǎo)入工具
!pip install pandas matplotlib openpyxl -q
# 導(dǎo)入庫 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ù)類型、缺失值數(shù)量步驟3:批量數(shù)據(jù)清洗(核心)
# 1. 刪除重復(fù)行(按所有字段去重)
df = df.drop_duplicates()
# 2. 處理缺失值(年齡/銷售額用平均值填充,地區(qū)用“未知”填充)
df['年齡'] = df['年齡'].fillna(df['年齡'].mean().round(0)) # 年齡取整
df['銷售額'] = df['銷售額'].fillna(df['銷售額'].mean())
df['地區(qū)'] = df['地區(qū)'].fillna('未知')
# 3. 格式統(tǒng)一(年齡轉(zhuǎn)為整數(shù),銷售額保留2位小數(shù))
df['年齡'] = df['年齡'].astype(int)
df['銷售額'] = df['銷售額'].round(2)
# 清洗后數(shù)據(jù)預(yù)覽
print("\n清洗后數(shù)據(jù):")
print(df.head())步驟4:簡單可視化
4.1 各地區(qū)銷售額分布(柱狀圖)
region_sales = df.groupby('地區(qū)')['銷售額'].sum()
plt.figure(figsize=(10,4))
region_sales.plot(kind='bar', color='#66b3ff')
plt.title('各地區(qū)銷售額分布')
plt.xlabel('地區(qū)')
plt.ylabel('總銷售額(元)')
plt.xticks(rotation=45)
plt.grid(axis='y', alpha=0.3)
plt.show()4.2 年齡與銷售額關(guān)系(散點(diǎn)圖)
plt.figure(figsize=(8,4))
plt.scatter(df['年齡'], df['銷售額'], color='#ff6666', alpha=0.6)
plt.title('年齡與銷售額關(guān)系')
plt.xlabel('年齡')
plt.ylabel('銷售額(元)')
plt.grid(alpha=0.3)
plt.show()四、完整可復(fù)制代碼
# 安裝依賴(首次運(yùn)行)
!pip install pandas matplotlib openpyxl -q
# 導(dǎo)入庫
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['銷售額'] = df['銷售額'].fillna(df['銷售額'].mean()).round(2) # 補(bǔ)缺失值+保留2位小數(shù)
df['地區(qū)'] = df['地區(qū)'].fillna('未知') # 補(bǔ)缺失地區(qū)
print("\n清洗后數(shù)據(jù):")
print(df.head())
# 3. 可視化1:各地區(qū)銷售額
region_sales = df.groupby('地區(qū)')['銷售額'].sum()
plt.figure(figsize=(10,4))
region_sales.plot(kind='bar', color='#66b3ff')
plt.title('各地區(qū)銷售額分布')
plt.xlabel('地區(qū)')
plt.ylabel('總銷售額(元)')
plt.xticks(rotation=45)
plt.grid(axis='y', alpha=0.3)
plt.show()
# 4. 可視化2:年齡與銷售額關(guān)系
plt.figure(figsize=(8,4))
plt.scatter(df['年齡'], df['銷售額'], color='#ff6666', alpha=0.6)
plt.title('年齡與銷售額關(guān)系')
plt.xlabel('年齡')
plt.ylabel('銷售額(元)')
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")你平時用Excel處理數(shù)據(jù)時,最頭疼“重復(fù)值”“缺失值”還是“格式轉(zhuǎn)換”?評論區(qū)說你的痛點(diǎn),我給你針對性的簡化代碼!
以上就是Python批量清洗Excel數(shù)據(jù)的操作指南(去重+補(bǔ)缺失值+可視化)的詳細(xì)內(nèi)容,更多關(guān)于Python批量清洗Excel數(shù)據(jù)的資料請關(guān)注腳本之家其它相關(guān)文章!
相關(guān)文章
Python存儲List數(shù)據(jù)到文件(text/csv/excel)幾種常見方法
在數(shù)據(jù)分析中經(jīng)常需要從csv格式的文件中存取數(shù)據(jù)以及將數(shù)據(jù)寫書到csv文件中,下面這篇文章主要給大家介紹了關(guān)于Python存儲List數(shù)據(jù)到文件(text/csv/excel)的幾種常見方法,需要的朋友可以參考下2024-02-02
python實(shí)現(xiàn)逐個讀取txt字符并修改
今天小編就為大家分享一篇python實(shí)現(xiàn)逐個讀取txt字符并修改,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2018-12-12
Python下singleton模式的實(shí)現(xiàn)方法
這篇文章主要介紹了Python下singleton模式的實(shí)現(xiàn)方法,有一定的借鑒價值,需要的朋友可以參考下2014-07-07
Macbook air m1安裝python/anaconda全過程(圖文)
這篇文章主要介紹了Macbook air m1安裝python/anaconda全過程(圖文),文中通過圖文介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2021-03-03
Python多線程編程(八):使用Event實(shí)現(xiàn)線程間通信
這篇文章主要介紹了Python多線程編程(八):使用Event實(shí)現(xiàn)線程間通信,,需要的朋友可以參考下2015-04-04

