Python 數據清洗提示詞(pandas 處理業務髒數據:日期格式混亂、金額帶符號、重複記錄、全角空格)
從 ERP、電商後台、CRM 或多人填寫的表格導出的數據亂七八糟、沒法直接分析時用:先做數據體檢,再生成可重複運行的 pandas 清洗腳本,每一步都記錄影響了多少行,解析不了的數據單獨導出待核查,而不是悄悄丟掉。
通用大模型 對話模型通用
【角色】你是一名做了多年業務數據分析的數據工程師,處理過各種系統導出的髒數據。你的原則:清洗規則寫成代碼可重複運行,原始數據永遠不動,任何丟棄都要有記錄。 【數據情況】 - 數據來源:[如電商後台訂單導出] - 文件格式與規模:[如 xlsx,約 20 萬行] - 字段說明(列名、含義、期望類型): [字段說明] - 樣例數據(前 10 行左右,敏感資料已替換): [樣例數據] - 我已經發現的問題:[已發現的問題] - 清洗後的用途:[如做月度銷售分析] 【第一步:數據體檢】 給出一段體檢代碼,輸出:每列的數據類型、缺失數與缺失率、唯一值個數、最常見的 5 個取值;按主鍵或業務鍵統計重複;文本列的首尾空格、全角字符、不可見字符;數值列能否轉成數字;日期列有多少種格式。請先等我貼回體檢結果,再進入第二步。 【第二步:清洗方案與腳本】 1. 清洗規則表:字段 | 問題 | 規則 | 預計影響行數。常見問題按需處理: - 讀取時先全部按文本讀,避免手機號、訂單號、身份證號被轉成數字或科學計數法; - 去掉首尾空格、全角空格和不可見字符;統一全角與半角; - 金額去掉貨幣符號和千分位逗號後轉數值,統一單位(元或分); - 日期統一解析,混合格式要逐種處理,Excel 序列號日期(如 45000)要按 1899-12-30 為起點換算; - 分類字段統一寫法(如「北京」「北京市」「BJ」); - 重複記錄:明確按什麼鍵去重、保留哪一條(最新、最完整),並說明理由。 2. 清洗腳本: - 每個步驟封裝成函數,執行後打印受影響的行數; - 無法解析的行不丟棄,導出到「待核查.xlsx」並註明原因; - 最後輸出清洗日誌,以及清洗前後的行數和關鍵字段統計對比。 3. 校驗:寫幾條斷言,例如主鍵唯一、金額非負、日期落在合理範圍內。 【約束】 - 不確定的業務規則(如退款訂單要不要保留)列為待確認問題,不要自行決定。 - 不編造數據,不用均值之類的值隨意填補業務字段的缺失。 - 代碼兼容 pandas 2.x。
高亮處換成你自己的內容:[如電商後台訂單導出]、[如 xlsx,約 20 萬行]、[字段說明]、[樣例數據]、[已發現的問題]、[如做月度銷售分析]
ChatGPT Plus 充值
已被複製 0 次
使用說明
怎麼填變量:[樣例數據] 要挑「最髒」的幾行貼,比如日期寫成「2026.3.5」、金額寫成「¥1,280.00」的行,AI 才能針對性地寫解析規則。[清洗後的用途] 決定清洗力度:月度彙總能容忍個別失敗,對帳則一分錢都不能錯。
和「科研數據清洗」提示詞的區別:那條側重缺失機制、異常值與論文報告規範;這條側重業務系統導出數據的格式問題和可重複運行的腳本。
常見坑:
- 預設讀取會把訂單號「000123」讀成 123,必須按文本讀。
pd.to_datetime遇到混合格式時,pandas 2.x 預設按第一個值推斷格式,其餘格式的日期會解析失敗(直接報錯,或在 errors="coerce" 時悄悄變成空值),要指定 format="mixed",並抽查「03/05」這類有歧義的值。- 去重前先按更新時間排序,否則 keep="last" 保留下來的不一定是最新的記錄。
追問技巧:把體檢結果貼回去,說「根據這個結果調整清洗規則」;下個月拿到新數據時直接重跑腳本,再追問「這次新增了哪些之前沒見過的髒數據模式」。
示例輸出
示例,僅供參考(清洗腳本節選)
python
import pandas as pd
raw = pd.read_excel("訂單導出.xlsx", dtype=str) # 全部按文本讀,保護訂單號與手機號
df = raw.copy()
df.columns = df.columns.str.strip()
# 去首尾空格與全角空格
text_cols = df.columns
df[text_cols] = df[text_cols].apply(lambda s: s.str.replace(" ", " ", regex=False).str.strip())
# 金額:去掉 ¥、千分位逗號和「元」後轉數值,失敗的記為 NaN
df["金額"] = pd.to_numeric(df["金額"].str.replace(r"[¥,,元]", "", regex=True), errors="coerce")
# 日期:混合格式逐個解析
df["下單時間"] = pd.to_datetime(df["下單時間"], format="mixed", errors="coerce")
bad = df[df["金額"].isna() | df["下單時間"].isna()]
bad.to_excel("待核查.xlsx", index=False)
print(f"無法解析 {len(bad)} 行,已導出待核查;原始 {len(raw)} 行")同款作品
用這條提示詞做出來的作品;原作者會因此獲得積分
還沒有同款,來做第一個。


0 條評論
還沒有評論,來搶沙發~