本文目录导读:

在数据处理中,实用脚本通常用于自动化重复性任务、清洗数据、转换格式、提取信息以及进行初步分析,以下是几个常见的应用场景及对应的脚本类型(以 Python 和 Shell 为例):
数据清洗与预处理
- 处理缺失值:检查并填充或删除空值(如
pandas中的fillna()、dropna())。 - 去重:识别并移除重复记录(如
pandas的drop_duplicates())。 - 类型转换:统一日期格式、数值类型(如将字符串日期转为
datetime)。 - 异常值检测:基于统计方法(Z-score、IQR)或规则(如年龄大于150)过滤异常数据。
示例脚本片段(Python):
import pandas as pd
df = pd.read_csv('data.csv')
df.dropna(subset=['email'], inplace=True)
df['date'] = pd.to_datetime(df['date'], errors='coerce')
格式转换与整合
- CSV/Excel/JSON/Parquet互转:批量导入导出不同格式数据。
- 结构化日志解析:将非结构化日志(如Apache日志)转为表格数据。
- 多文件合并:将同目录下多个CSV文件合并为一个数据集。
示例(Shell + Python):
# Shell: 合并所有CSV到一个文件,跳过表头
awk 'FNR==1 && NR!=1 {next} {print}' *.csv > merged.csv
数据提取与抓取(ETL)
- 正则解析:从文本中提取邮箱、电话号码、URL等模式。
- API数据拉取:定时从REST API获取数据并存入数据库。
- 网页爬虫:对网站数据进行结构化采集(如价格、新闻标题)。
示例(Python + requests):
import requests, re
resp = requests.get('https://api.example.com/data')
emails = re.findall(r'\b[A-Za-z0-9._%+-]+@[A-Za-z0-9.-]+\.[A-Z|a-z]{2,}\b', resp.text)
统计分析报表生成
- 汇总统计:计算平均值、中位数、分位数、频率分布。
- 交叉分析:生成透视表(如按月份和地区的销售额汇总)。
- 可视化输出:自动生成图表(如折线图、柱状图)并导出为PNG或PDF。
示例(pandas + matplotlib):
import matplotlib.pyplot as plt
df.groupby('category')['value'].sum().plot(kind='bar')
plt.savefig('summary.png')
数据校验与一致性检查
- 字段约束检查:验证是否满足非空、唯一性、外键关系。
- 逻辑校验:检查开始时间是否早于结束时间,数值范围是否合理。
- 差异比对:比较两个数据集(分为旧版与新版),输出增删改记录。
示例(Python):
new_set = set(df1['id']) old_set = set(df2['id']) added = new_set - old_set removed = old_set - new_set
自动化调度与监控
- 定时任务脚本:用 cron(Linux)或 Task Scheduler(Windows)定期执行数据同步、备份。
- 数据质量告警:当缺失率超过阈值或出现异常值时发送邮件/钉钉通知。
- 增量更新处理:记录上次处理位置,只处理新增或修改的数据。
数据库操作与迁移
- 批量插入/更新:用
sqlite3、psycopg2、SQLAlchemy将文件数据写入关系数据库。 - 查询导出:将SQL查询结果直接导出为CSV或Excel。
- 模式对比:对比两个数据库的表结构差异。
示例(Shell + MySQL):
mysql -u root -p database -e "SELECT * FROM table INTO OUTFILE '/tmp/export.csv' FIELDS TERMINATED BY ','"
特征工程(机器学习准备)
- 编码转换:One-Hot编码、标签编码分类变量。
- 尺度缩放:标准化(Z-score)或归一化(Min-Max)。
- 特征衍生:基于日期提取星期、月份;基于文本计算TF-IDF。
实用脚本的优势
- 可重复性:一键执行,避免手动操作错误。
- 效率:分钟级处理手动需要数小时的任务。
- 可维护性:将逻辑封装为函数或配置文件,便于修改。
- 可扩展性:可叠加多个脚本构建数据管道(Pipeline)。