Excel跑不动?Python不会写?这个Skill一键搞定数据处理

张开发
2026/4/21 19:45:39 15 分钟阅读

分享文章

Excel跑不动?Python不会写?这个Skill一键搞定数据处理
这是一个关于“数据处理技能”的系统性指南。数据处理是连接原始数据与科研结论的桥梁无论从事的是社会科学、生物信息学还是工程研究这套技能都通用。一、数据处理核心流程原始数据 → 清洗 → 转换/整合 → 分析 → 可视化 → 结果解释 ↑ ↑ ↑ ↑ ↑ (最耗时) (最关键) (因任务而异) (核心) (沟通)二、数据获取1. 数据来源分类类型示例特点公开数据集Kaggle、UCI、ImageNet、Gene Expression Omnibus可复现、有基准、适合练手爬虫获取网页数据、社交媒体API、政府开放数据需合法性判断、动态内容需渲染实验/问卷传感器读数、实验室测量、问卷调查自己生成、成本高、控制力强数据库查询SQL提取公司/机构内部数据需权限、量大2. 数据格式识别格式常见扩展名读取工具Python表格型.csv,.xlsx,.tsvpandas.read_csv()/read_excel()JSON.jsonpandas.read_json()或json库文本.txt,.log原生open()图片.jpg,.pngPIL,opencv音频.wav,.mp3librosa,scipy.io.wavfile科学格式.npy,.h5,.matnumpy,h5py,scipy.io.loadmat三、数据清洗耗时约60%-80%这是最重要且最容易被忽视的环节。常见脏数据及处理问题类型现象处理方法缺失值NaN、null、空白单元格删除dropna、填充均值/中位数/众数fillna、插值法、模型预测填充重复值相同行出现多次drop_duplicates()去重保留首次或末次异常值年龄999、收入负数业务规则判定 IQR法 / Z-score法 识别 → 删除或修正格式不一致“北京” vs “BJ” vs “beijing”统一映射表 正则表达式re模块标准化数据类型错误数字被存成字符串如“123”、日期存成文本astype()转换、pd.to_datetime()解析无关列/行空列、全是同一个值的列、表头外的说明行手动筛选删除清洗代码示例Python pandasimportpandasaspdimportnumpyasnp dfpd.read_csv(raw_data.csv)# 1. 查看整体信息df.info()df.describe()# 2. 处理缺失值df.isnull().sum()# 统计每列缺失数df[age].fillna(df[age].median(),inplaceTrue)# 用中位数填充数值列df.dropna(subset[label],inplaceTrue)# 删除标签缺失的行# 3. 处理重复值df.drop_duplicates(inplaceTrue)# 4. 处理异常值以IQR法为例Q1df[income].quantile(0.25)Q3df[income].quantile(0.75)IQRQ3-Q1 lowerQ1-1.5*IQR upperQ31.5*IQR dfdf[(df[income]lower)(df[income]upper)]# 5. 格式标准化df[city]df[city].str.lower().replace({bj:beijing,sh:shanghai})df[date]pd.to_datetime(df[date_str])四、数据转换与特征工程将数据整理成适合分析/建模的形态。常用转换操作操作说明代码示例数据透视长表 ↔ 宽表pd.pivot_table()/pd.melt()分组聚合按类别统计df.groupby(category)[value].mean()特征缩放消除量纲影响标准化(x - mean)/std归一化(x - min)/(max - min)编码分类变量文本类别转数字独热编码pd.get_dummies()标签编码LabelEncoder特征构造从现有列生成新特征年龄→年龄段、日期→星期几数据分箱连续值离散化pd.cut()/pd.qcut()代码示例# 标准化sklearnfromsklearn.preprocessingimportStandardScaler scalerStandardScaler()df[[feature1,feature2]]scaler.fit_transform(df[[feature1,feature2]])# 独热编码df_encodedpd.get_dummies(df,columns[city,gender],drop_firstTrue)# 构造新特征df[hour]pd.to_datetime(df[timestamp]).dt.hour df[is_weekend](df[day_of_week]5).astype(int)五、探索性数据分析EDA在建模之前先“认识”你的数据。EDA必做清单任务工具/方法目的查看前几行df.head()直观感受数据数值分布df.hist(),sns.boxplot()看偏态、异常值相关性矩阵df.corr(),sns.heatmap()找强相关特征类别分布df[col].value_counts(), 饼图检查类别不平衡缺失模式missingno.matrix()缺失是否随机双变量关系散点图、分组箱线图探索变量间关系Python可视化快速入门matplotlib seabornimportmatplotlib.pyplotaspltimportseabornassns# 直方图df[age].hist(bins30)plt.title(Age Distribution)plt.show()# 箱线图按类别分组sns.boxplot(xcategory,yvalue,datadf)plt.xticks(rotation45)plt.show()# 相关性热图plt.figure(figsize(10,8))sns.heatmap(df.corr(),annotTrue,cmapcoolwarm,fmt.2f)plt.show()# 散点图矩阵多变量sns.pairplot(df[[feature1,feature2,feature3,target]])六、常用工具链推荐环节推荐工具适用人群/场景快速探索Excel 数据透视表小数据1万行、非技术背景脚本处理Python (pandas, numpy)最通用、可复现、适合10万行以上统计分析R (tidyverse)统计学家、生物信息学偏好大数据SQL Python (Dask, Polars)内存放不下的数据10GB可视化seaborn, plotly, Tableau静态图用seaborn交互用plotly缺失值/异常值missingno, pyod专门化检查七、完整数据处理流程示例Python假设任务分析某电商用户行为数据预测是否购买。# 1. 导入importpandasaspdimportnumpyasnpimportmatplotlib.pyplotaspltimportseabornassns# 2. 读取dfpd.read_csv(user_behavior.csv,parse_dates[action_time])# 3. 初探print(df.shape,df.dtypes)print(df.isnull().sum())# 4. 清洗df.drop_duplicates(inplaceTrue)df[age].fillna(df[age].median(),inplaceTrue)dfdf[df[price]0]# 价格必须为正# 5. 特征工程df[hour]df[action_time].dt.hour df[action_type]pd.Categorical(df[action_type]).codes# 类别转数字user_statsdf.groupby(user_id).agg(total_clicks(action_id,count),avg_price(price,mean)).reset_index()dfdf.merge(user_stats,onuser_id,howleft)# 6. 拆分X,yXdf.drop([purchased,action_time],axis1)ydf[purchased]# 7. 标准化fromsklearn.preprocessingimportStandardScaler num_cols[age,price,total_clicks,avg_price]scalerStandardScaler()X[num_cols]scaler.fit_transform(X[num_cols])# 8. 最终数据概览X.info()X.head()八、常见误区与避坑指南误区正确做法数据清洗靠肉眼检查编写可重复运行的清洗脚本随意删除含缺失值的行先分析缺失模式判断是否随机缺失未检查异常值直接建模先做箱线图、Z-score异常值可能蕴含重要信息如欺诈标准化在拆分数据后做先划分训练/测试集再分别做标准化防止数据泄露可视化只用来“秀”可视化应贯穿全程是发现问题的第一工具忽略数据来源和文档永远保留数据字典字段含义、单位、编码规则九、一句话速记先问问题→获取数据→清洗最耗时→探索画图统计→转换→交付给分析/建模每一步都记录确保可复现。

更多文章