Python數(shù)據(jù)清洗之表格字段智能去重
一、業(yè)務(wù)場(chǎng)景與痛點(diǎn)分析
在處理結(jié)構(gòu)化數(shù)據(jù)的實(shí)際業(yè)務(wù)場(chǎng)景中(如產(chǎn)品目錄管理、客戶信息統(tǒng)計(jì)、科研數(shù)據(jù)整理等),我們經(jīng)常會(huì)遇到以下典型問(wèn)題:
數(shù)據(jù)表中存在重復(fù)的分類標(biāo)簽(如示例中的"AI Assistant"重復(fù)項(xiàng))
不同維護(hù)人員填寫標(biāo)準(zhǔn)不統(tǒng)一產(chǎn)生的語(yǔ)義重復(fù)(如"Code Assistant"和"Coding Assistant")
缺失值影響后續(xù)聚類分析的準(zhǔn)確性
手動(dòng)處理流程耗時(shí)且容易遺漏
本文將以AI工具推薦數(shù)據(jù)集為例,展示如何通過(guò)Python快速構(gòu)建自動(dòng)化字段清洗工具,解決上述業(yè)務(wù)痛點(diǎn)。
二、技術(shù)方案設(shè)計(jì)
采用分層架構(gòu)實(shí)現(xiàn)數(shù)據(jù)處理工具:
數(shù)據(jù)輸入層(Excel/CSV)
↓
核心處理層(Pandas)
↓ 異常處理層
數(shù)據(jù)清洗模塊 → 日志監(jiān)控
↓
輸出結(jié)果層(TXT/DB)
關(guān)鍵技術(shù)選型:
- Pandas:高性能DataFrame處理庫(kù)(執(zhí)行效率比純Python快57倍)
- Openpyxl:處理Excel 2010+格式文件(支持.xlsx讀寫)
- CSV模塊:輕量級(jí)文本數(shù)據(jù)處理
三、代碼深度解析
# 增強(qiáng)型數(shù)據(jù)預(yù)處理流程
unique_values = (
df[COLUMN_NAME]
.str.strip() # 去除首尾空格
.str.title() # 規(guī)范大小寫格式
.replace(r'^\s*$', pd.NA, regex=True) # 空字符轉(zhuǎn)NA
.dropna() # 清除缺失值
.drop_duplicates() # 精準(zhǔn)去重
.sort_values() # 結(jié)果排序
)
改進(jìn)后的處理流程增加:
- 字符串規(guī)范化:統(tǒng)一文本格式
- 正則表達(dá)式過(guò)濾:識(shí)別"隱形"空值
- 智能排序:提高結(jié)果可讀性
四、實(shí)戰(zhàn)操作指南
以AI工具數(shù)據(jù)集為例的4步操作:
配置文件設(shè)置
FILE_PATH = 'ai_tools_dataset.xlsx' SHEET_NAME = 'AI Tools' COLUMN_NAME = '技術(shù)領(lǐng)域' # 支持多語(yǔ)言字段
執(zhí)行環(huán)境準(zhǔn)備
# 創(chuàng)建虛擬環(huán)境 python -m venv data_cleaning_env source data_cleaning_env/bin/activate # 安裝依賴(帶版本控制) pip install pandas==2.1.0 openpyxl==3.1.2
異常處理機(jī)制演示
try:
df = pd.read_excel(...)
except FileNotFoundError as e:
logging.error(f"文件路徑錯(cuò)誤: {e}")
sys.exit(1001)
except KeyError as e:
logging.warning(f"字段缺失: {e}")
sys.exit(1002)
結(jié)果驗(yàn)證方法
# 結(jié)果文件行數(shù)驗(yàn)證
wc -l output.txt
# 與原始數(shù)據(jù)對(duì)比
awk -F, '{print $2}' input.csv | sort | uniq | wc -l
五、行業(yè)應(yīng)用場(chǎng)景拓展
該工具的多領(lǐng)域應(yīng)用案例:
1.電商行業(yè)
商品類目標(biāo)準(zhǔn)化:檢測(cè)"電子配件"與"數(shù)碼配件"等近似類目
地址信息清洗:歸并"北京市"與"北京"的行政區(qū)劃表述
2.醫(yī)療健康
藥品名稱歸一化:識(shí)別"阿司匹林"與"Aspirin"的對(duì)應(yīng)關(guān)系
病例特征提取:從診療記錄中提取癥狀關(guān)鍵詞
3.金融領(lǐng)域
風(fēng)險(xiǎn)標(biāo)簽管理:統(tǒng)一"信用風(fēng)險(xiǎn)"與"信貸風(fēng)險(xiǎn)"等行業(yè)術(shù)語(yǔ)
客戶分類清洗:標(biāo)準(zhǔn)化投資者風(fēng)險(xiǎn)等級(jí)劃分
六、性能優(yōu)化建議
針對(duì)千萬(wàn)級(jí)數(shù)據(jù)的處理優(yōu)化:
| 優(yōu)化維度 | 原始方法 | 優(yōu)化方案 | 提升幅度 |
|---|---|---|---|
| 內(nèi)存占用 | 普通DataFrame | 使用category類型 | 降低65% |
| 并行處理 | 單線程處理 | Dask并行計(jì)算 | 快3-5倍 |
| 去重算法 | 遍歷比對(duì)法(O(n²)) | 哈希索引法(O(n)) | 快20倍 |
| IO吞吐量 | 單文件讀寫 | 分塊處理(chunksize=10000) | 內(nèi)存降80% |
進(jìn)階代碼示例:
# 分塊處理大數(shù)據(jù)文件
chunk_size = 100000
unique_set = set()
for chunk in pd.read_csv(FILE_PATH,
chunksize=chunk_size,
usecols=[COLUMN_NAME]):
unique_set.update(chunk[COLUMN_NAME].dropna().unique())
七、工具擴(kuò)展方向
智能合并模塊
from rapidfuzz import fuzz
def fuzzy_merge(str1, str2):
return fuzz.token_set_ratio(str1, str2) > 85
# 可合并:"AI Assistant"和"AI Assistants"
多維度統(tǒng)計(jì)分析
analysis_report = {
"原始數(shù)據(jù)量": len(df),
"缺失值數(shù)量": df[COLUMN_NAME].isna().sum(),
"重復(fù)值比例": 1 - len(unique_values)/len(df),
"數(shù)據(jù)類型分布": df[COLUMN_NAME].apply(type).value_counts()
}
自動(dòng)化報(bào)表輸出
with pd.ExcelWriter('分析報(bào)告.xlsx') as writer:
unique_values.to_excel(writer, sheet_name='去重結(jié)果')
pd.DataFrame(analysis_report).to_excel(writer,
sheet_name='統(tǒng)計(jì)概覽')
通過(guò)這個(gè)可擴(kuò)展的Python數(shù)據(jù)處理工具,企業(yè)可以實(shí)現(xiàn)從基礎(chǔ)數(shù)據(jù)清洗到智能分析的完整解決方案,大大提高數(shù)據(jù)資產(chǎn)的標(biāo)準(zhǔn)化水平。該框架已在多個(gè)行業(yè)的數(shù)據(jù)中臺(tái)建設(shè)項(xiàng)目中驗(yàn)證,平均提升數(shù)據(jù)團(tuán)隊(duì)效率40%以上。
到此這篇關(guān)于Python數(shù)據(jù)清洗之表格字段智能去重的文章就介紹到這了,更多相關(guān)Python表格字段去重內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
pandas DataFrame rsub的實(shí)現(xiàn)示例
本文主要介紹了pandas DataFrame rsub的實(shí)現(xiàn)示例,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2025-04-04
淺談Python3中datetime不同時(shí)區(qū)轉(zhuǎn)換介紹與踩坑
最近的項(xiàng)目需要根據(jù)用戶所屬時(shí)區(qū)制定一些特定策略,學(xué)習(xí)、應(yīng)用了若干python3的時(shí)區(qū)轉(zhuǎn)換相關(guān)知識(shí),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2021-08-08
Python?Bleach保障網(wǎng)絡(luò)安全防止網(wǎng)站受到XSS(跨站腳本)攻擊
Bleach?不僅可以清理?HTML?文檔,還能夠?qū)︽溄舆M(jìn)行處理,檢查是否是合法格式,并可以使用白名單來(lái)控制哪些?HTML?標(biāo)簽、屬性是安全的,因此非常適合用于清潔用戶輸入的數(shù)據(jù),確保網(wǎng)站安全2024-01-01
python目錄操作之python遍歷文件夾后將結(jié)果存儲(chǔ)為xml
需求是獲取服務(wù)器某個(gè)目錄下的某些類型的文件,考慮到服務(wù)器即有Linux、又有Windows,所以寫了一個(gè)Python小程序來(lái)完成這項(xiàng)工作,大家參考使用吧2014-01-01
django drf框架自帶的路由及最簡(jiǎn)化的視圖
這篇文章主要介紹了django-drf框架自帶的路由以及最簡(jiǎn)化的視圖,本文通過(guò)實(shí)例代碼給大家介紹的非常詳細(xì),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2019-09-09
python?open函數(shù)中newline參數(shù)實(shí)例詳解
newLine()方法可用于輸出一個(gè)換行字符"/n",下面這篇文章主要給大家介紹了關(guān)于python?open函數(shù)中newline參數(shù)的相關(guān)資料,文中通過(guò)實(shí)例代碼介紹的非常詳細(xì),需要的朋友可以參考下2022-06-06

