{ "cells": [ { "cell_type": "code", "id": "initial_id", "metadata": { "collapsed": true, "ExecuteTime": { "end_time": "2026-04-22T07:31:42.910929700Z", "start_time": "2026-04-22T07:31:37.243473300Z" } }, "source": [ "import pandas as pd\n", "import re\n", "import sys\n", "\n", "def remove_4byte_chars(text):\n", " \"\"\"\n", " 移除字符串中的 4 字节 UTF-8 字符(如 Emoji、部分生僻字)\n", " 这些字符的 Unicode 码点范围是 U+10000 到 U+10FFFF\n", " \"\"\"\n", " if isinstance(text, str):\n", " # 使用正则表达式匹配并移除 4 字节字符(即 Unicode 超出 BMP 平面)\n", " cleaned = re.sub(r'[\\U00010000-\\U0010FFFF]', '', text)\n", " return cleaned\n", " return text\n", "\n", "def sanitize_dataframe(df):\n", " \"\"\"\n", " 对 DataFrame 中所有字符串类型的列进行清洗\n", " \"\"\"\n", " for col in df.columns:\n", " if df[col].dtype == 'object': # 通常是字符串列\n", " df[col] = df[col].apply(remove_4byte_chars)\n", " return df\n", "\n", "# 示例:读取 Excel 文件\n", "def process_excel_file(file_path):\n", " # df = pd.read_excel(file_path, engine='openpyxl') # 支持 .xlsx\n", " df = pd.read_excel(file_path, engine='xlrd') # 支持 .xlsx\n", " print(\"原始数据:\")\n", " print(df.head())\n", "\n", " # 清洗数据\n", " df_cleaned = sanitize_dataframe(df.copy())\n", "\n", " print(\"\\n清洗后数据(已移除 4 字节字符):\")\n", " print(df_cleaned.head())\n", "\n", " # 保存或返回清洗后的数据\n", " df_cleaned.to_excel('cleaned_output.xlsx', index=False)\n", " print(\"\\n已保存清洗后的文件:cleaned_output.xlsx\")\n", " return df_cleaned\n", "\n", "# 示例:读取 CSV 文件\n", "def process_csv_file(file_path):\n", " df = pd.read_csv(file_path, encoding='utf-8') # 假设是 UTF-8 编码\n", " print(\"原始数据:\")\n", " print(df.head())\n", "\n", " df_cleaned = sanitize_dataframe(df.copy())\n", "\n", " print(\"\\n清洗后数据:\")\n", " print(df_cleaned.head())\n", "\n", " df_cleaned.to_csv('cleaned_output.csv', index=False, encoding='utf-8')\n", " print(\"\\n已保存清洗后的文件:cleaned_output.csv\")\n", " return df_cleaned\n", "\n", "file_path = fr\"C:\\Users\\hp_z66\\OneDrive\\Desktop\\钉钉文件\\客户车辆信息老六_可导入.xls\"\n", "process_excel_file(file_path)" ], "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "原始数据:\n", " 客户姓名 性别 车牌号 手机号码 标签 VIN码 车身颜色 备注 车辆所有人 发动机号 \\\n", "0 1 NaN 豫S38065 13174646666 NaN NaN NaN NaN NaN NaN \n", "1 先生 NaN 黑A92RS8 15004617481 NaN LMGAA1C51F1096393 NaN NaN NaN NaN \n", "2 先生 NaN 黑F05145 15244670275 NaN LSJW56761KG020310 NaN NaN NaN NaN \n", "3 先生 NaN 黑AV101M 18904650318 NaN LFV3A23C6G3051709 NaN NaN NaN NaN \n", "4 1 NaN 黑A1G3U7 13069966234 NaN NaN NaN NaN NaN NaN \n", "\n", " ... 会员号 可用积分 累计获取积分 专属门店 专属顾问 客户推广员工 注册日期 发证日期 车辆来源 车辆推广员工 \n", "0 ... NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN \n", "1 ... NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN \n", "2 ... NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN \n", "3 ... NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN \n", "4 ... NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN \n", "\n", "[5 rows x 37 columns]\n", "\n", "清洗后数据(已移除 4 字节字符):\n", " 客户姓名 性别 车牌号 手机号码 标签 VIN码 车身颜色 备注 车辆所有人 发动机号 \\\n", "0 1 NaN 豫S38065 13174646666 NaN NaN NaN NaN NaN NaN \n", "1 先生 NaN 黑A92RS8 15004617481 NaN LMGAA1C51F1096393 NaN NaN NaN NaN \n", "2 先生 NaN 黑F05145 15244670275 NaN LSJW56761KG020310 NaN NaN NaN NaN \n", "3 先生 NaN 黑AV101M 18904650318 NaN LFV3A23C6G3051709 NaN NaN NaN NaN \n", "4 1 NaN 黑A1G3U7 13069966234 NaN NaN NaN NaN NaN NaN \n", "\n", " ... 会员号 可用积分 累计获取积分 专属门店 专属顾问 客户推广员工 注册日期 发证日期 车辆来源 车辆推广员工 \n", "0 ... NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN \n", "1 ... NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN \n", "2 ... NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN \n", "3 ... NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN \n", "4 ... NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN \n", "\n", "[5 rows x 37 columns]\n", "\n", "已保存清洗后的文件:cleaned_output.xlsx\n" ] }, { "data": { "text/plain": [ " 客户姓名 性别 车牌号 手机号码 标签 VIN码 车身颜色 备注 车辆所有人 \\\n", "0 1 NaN 豫S38065 13174646666 NaN NaN NaN NaN NaN \n", "1 先生 NaN 黑A92RS8 15004617481 NaN LMGAA1C51F1096393 NaN NaN NaN \n", "2 先生 NaN 黑F05145 15244670275 NaN LSJW56761KG020310 NaN NaN NaN \n", "3 先生 NaN 黑AV101M 18904650318 NaN LFV3A23C6G3051709 NaN NaN NaN \n", "4 1 NaN 黑A1G3U7 13069966234 NaN NaN NaN NaN NaN \n", "... ... .. ... ... .. ... ... .. ... \n", "9917 陈双 NaN 黑AQ293H 13019712562 NaN LSYBCAAA4CW070101 NaN NaN NaN \n", "9918 奇瑞 NaN 黑AG21X5 18346069680 NaN LS5A3DBE5GA136962 NaN NaN NaN \n", "9919 奇瑞 NaN 黑A8DC02 18346069680 NaN LVVDA11A3AD070555 NaN NaN NaN \n", "9920 戴洪太 NaN 黑A579B1 18346262816 NaN LSVGX46R7E2049499 NaN NaN NaN \n", "9921 高先生 NaN 黑AH2R02 13796072678 NaN LGBP12E04CY105879 NaN NaN NaN \n", "\n", " 发动机号 ... 会员号 可用积分 累计获取积分 专属门店 专属顾问 客户推广员工 注册日期 发证日期 车辆来源 车辆推广员工 \n", "0 NaN ... NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN \n", "1 NaN ... NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN \n", "2 NaN ... NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN \n", "3 NaN ... NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN \n", "4 NaN ... NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN \n", "... ... ... .. ... ... ... ... ... ... ... ... ... \n", "9917 NaN ... NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN \n", "9918 NaN ... NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN \n", "9919 NaN ... NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN \n", "9920 NaN ... NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN \n", "9921 NaN ... NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN \n", "\n", "[9922 rows x 37 columns]" ], "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
客户姓名性别车牌号手机号码标签VIN码车身颜色备注车辆所有人发动机号...会员号可用积分累计获取积分专属门店专属顾问客户推广员工注册日期发证日期车辆来源车辆推广员工
01NaN豫S3806513174646666NaNNaNNaNNaNNaNNaN...NaNNaNNaNNaNNaNNaNNaNNaNNaNNaN
1先生NaN黑A92RS815004617481NaNLMGAA1C51F1096393NaNNaNNaNNaN...NaNNaNNaNNaNNaNNaNNaNNaNNaNNaN
2先生NaN黑F0514515244670275NaNLSJW56761KG020310NaNNaNNaNNaN...NaNNaNNaNNaNNaNNaNNaNNaNNaNNaN
3先生NaN黑AV101M18904650318NaNLFV3A23C6G3051709NaNNaNNaNNaN...NaNNaNNaNNaNNaNNaNNaNNaNNaNNaN
41NaN黑A1G3U713069966234NaNNaNNaNNaNNaNNaN...NaNNaNNaNNaNNaNNaNNaNNaNNaNNaN
..................................................................
9917陈双NaN黑AQ293H13019712562NaNLSYBCAAA4CW070101NaNNaNNaNNaN...NaNNaNNaNNaNNaNNaNNaNNaNNaNNaN
9918奇瑞NaN黑AG21X518346069680NaNLS5A3DBE5GA136962NaNNaNNaNNaN...NaNNaNNaNNaNNaNNaNNaNNaNNaNNaN
9919奇瑞NaN黑A8DC0218346069680NaNLVVDA11A3AD070555NaNNaNNaNNaN...NaNNaNNaNNaNNaNNaNNaNNaNNaNNaN
9920戴洪太NaN黑A579B118346262816NaNLSVGX46R7E2049499NaNNaNNaNNaN...NaNNaNNaNNaNNaNNaNNaNNaNNaNNaN
9921高先生NaN黑AH2R0213796072678NaNLGBP12E04CY105879NaNNaNNaNNaN...NaNNaNNaNNaNNaNNaNNaNNaNNaNNaN
\n", "

9922 rows × 37 columns

\n", "
" ] }, "execution_count": 2, "metadata": {}, "output_type": "execute_result" } ], "execution_count": 2 } ], "metadata": { "kernelspec": { "display_name": "F6+宜搭+其它", "language": "python", "name": "python3" }, "language_info": { "codemirror_mode": { "name": "ipython", "version": 3 }, "file_extension": ".py", "mimetype": "text/x-python", "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", "version": "3.13.11" } }, "nbformat": 4, "nbformat_minor": 5 }