淘宝母婴购物数据可视化分析:从数据清洗到商业洞察
1. 淘宝母婴数据清洗实战从原始数据到分析就绪做数据分析最头疼的就是拿到一堆乱七八糟的原始数据淘宝母婴数据也不例外。我最近处理过一批天池比赛的脱敏数据光是清洗环节就踩了不少坑。先说说最基础的CSV导入用pandas的read_csv函数时新手最容易犯的错误就是路径问题。建议直接把数据文件放在项目根目录下用相对路径读取更安全import pandas as pd # 最佳实践使用相对路径raw字符串 trade_df pd.read_csv(r./data/tianchi_mum_baby.csv)数据类型转换是个隐形杀手。原始数据里日期可能是整数格式如20201231商品分类ID可能是数值但实际应该当字符串处理。这里有个实用技巧先用dtypes查看类型再用astype批量转换# 日期字段魔术转换 trade_df[day] pd.to_datetime(trade_df[day], format%Y%m%d) # 分类字段类型转换 for col in [category_1, category_2]: trade_df[col] trade_df[col].astype(str)处理异常值时我习惯先用describe()看分布。有次发现buy_mount字段最大值居然是10000明显是异常数据。我的经验法则是用3σ原则过滤std trade_df[buy_mount].std() mean trade_df[buy_mount].mean() clean_df trade_df[(trade_df[buy_mount] mean 3*std)]2. 时间维度分析的黄金法则母婴用品销售有很强的季节性我分析过三年数据后发现几个有趣现象。先用groupbyresample做时间颗粒度转换# 按周重采样 weekly_sales clean_df.resample(W, onday)[buy_mount].sum() # 季度对比 q_sales clean_df.groupby([clean_df[day].dt.year, clean_df[day].dt.quarter])[buy_mount].sum()春节效应特别明显。通过对比2013-2014年2月数据发现春节期间销量会暴跌60%以上。画图时注意标注关键日期import matplotlib.dates as mdates fig, ax plt.subplots(figsize(12,6)) ax.plot(weekly_sales.index, weekly_sales.values) # 标记春节 ax.axvline(pd.to_datetime(2014-01-31), colorr, linestyle--)双十一的爆发更惊人。分析11月日销数据时建议用移动平均线看趋势# 7日移动平均 daily_sales clean_df.groupby(day)[buy_mount].sum() daily_sales.rolling(7).mean().plot()3. 商品类目分析的三个关键视角一级类目分析就像看森林全景。我发现50008168类目推测是奶粉占总销量40%以上。用饼图时记得设置autopct显示百分比cat1_sales clean_df.groupby(category_1)[buy_mount].sum() plt.pie(cat1_sales, labelscat1_sales.index, autopct%.1f%%)二级类目分析要抓重点。用nlargest筛选TOP10配合横向条形图更直观top10_cat2 clean_df.groupby(category_2)[buy_mount].sum().nlargest(10) sns.barplot(ytop10_cat2.index, xtop10_cat2.values, orienth)商品关联分析能发现组合销售机会。用pandas的crosstab生成共现矩阵cross_table pd.crosstab(clean_df[user_id], clean_df[category_2]) # 筛选高频组合 frequent_items cross_table.T.dot(cross_table 0)4. 可视化技巧让数据自己讲故事时间序列推荐使用折线图面积图组合。用seaborn的lineplot方便添加置信区间sns.lineplot(datamonthly_sales, markero) plt.fill_between(monthly_sales.index, monthly_sales.values, alpha0.2)类目对比建议用堆叠柱状图。注意用sort_values提前排序cat_month clean_df.groupby([month,category_1])[buy_mount].sum().unstack() cat_month.sort_values(bymonth).plot(kindbar, stackedTrue)地理分布可以用热力图。虽然数据脱敏但通过区域编码能还原部分信息geo_data clean_df[user_id].str[:2].value_counts() plt.imshow(geo_data.values.reshape(8,8), cmapYlOrRd)5. 商业洞察的四个实战案例案例一发现某品牌奶粉在华东地区复购率异常低排查发现是物流时效问题。分析方法region_rebuy clean_df.groupby([user_region,auction_id])[day].count() rebuy_rate region_rebuy[region_rebuy1].count()/region_rebuy.count()案例二通过购物篮分析发现湿巾和尿不湿经常同单购买建议捆绑销售。关键代码from mlxtend.frequent_patterns import apriori frequent_itemsets apriori(basket_df, min_support0.01, use_colnamesTrue)案例三预测模型发现9月是婴儿车销售高峰提前备货使库存周转率提升30%。用sklearn做预测from sklearn.ensemble import RandomForestRegressor model RandomForestRegressor().fit(X_train, y_train)案例四用户分群显示高端客户更关注有机棉材质针对性推送使转化率提升15%。聚类方法from sklearn.cluster import KMeans kmeans KMeans(n_clusters3).fit(user_feature_df)6. 工具链选择Python还是专业BIPython适合深度分析但学习曲线陡峭。我常用的三板斧Jupyter Notebook做探索性分析PyCharm写复杂脚本VS Code调试自动化流程PowerBI更适合快速呈现。几个杀手锏功能自然语言问答生成图表实时数据刷新移动端查看报表Tableau在交互体验上更胜一筹。特别喜欢它的拖拽式操作参数控制故事板功能实际项目中我经常混用这些工具。先用Python清洗复杂数据再用BI工具做可视化看板。最近发现PyGWalker这个神器能在Notebook里实现Tableau式的交互import pygwalker as pyg walker pyg.walk(clean_df)处理淘宝母婴数据最深的体会是数据清洗要狠可视化要准商业洞察要快。有一次因为没处理好春节假期数据导致预测模型完全失效。后来我养成了习惯做时间序列分析时一定会手动标注所有法定节假日。
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2463843.html
如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!