
「AI Python 系列」第 02 栏 · AI数据可视化全栏 15 篇 · 零成本跟完 作者梅雅达编程笔记首发CSDN摘要以前做数据探索要自己写代码算均值、看分布、找相关性现在可以让 AI 来。本篇用智谱 GLM-4.7-Flash永久免费自动分析一份电商数据集AI 帮你描述数据特征、发现异常、找相关性、给出初步洞察。完整代码可跑教你把 AI 变成数据分析的副驾驶。前 10 篇学了pandas处理和三个可视化库。现在数据准备好了工具也齐全了——但分析还是要你一行行写代码。如果 AI 能帮你看数据、告诉你这组数据有什么特征哪个变量和销量最相关呢GLM-4.7-Flash 永久免费支持 200K 上下文。把数据描述喂给它它就能帮你做探索性分析。一、基本思路核心流程很简单原始数据 → pandas 做基础统计 → 把统计结果喂给 AI → AI 给出分析洞察我们不是让 AI 直接读原始 CSV那太长了而是先让pandas算好统计摘要再把摘要给 AI 解读。二、准备工作importosimportjsonimportpandasaspdimportnumpyasnpfromdotenvimportload_dotenvfromzhipuaiimportZhipuAI# 初始化 AI 客户端clientZhipuAI(api_keyos.getenv(ZHIPUAI_API_KEY))defask_ai(question,context):调用 GLM-4.7-Flashresponseclient.chat.completions.create(modelglm-4.7-flash,messages[{role:system,content:你是一个数据分析专家擅长从数据描述中发现规律和洞察。回答要简洁、有洞察、说人话。},{role:user,content:f{context}\n\n问题{question}}])returnresponse.choices[0].message.content三、造一份分析数据# 模拟一份 100 行的电商订单数据np.random.seed(42)n100dfpd.DataFrame({订单日期:pd.date_range(2025-01-01,periodsn,freqD),商品:np.random.choice([手机,笔记本,耳机,平板,手表],n),价格:np.random.choice([999,1999,2999,3999,4999,5999],n),数量:np.random.randint(1,6,n),渠道:np.random.choice([天猫,京东,拼多多,抖音],n,p[0.35,0.3,0.2,0.15]),用户等级:np.random.choice([普通,银卡,金卡,钻石],n,p[0.5,0.25,0.15,0.1]),退货:np.random.choice([0,1],n,p[0.9,0.1]),})# 加入一些规律# 金卡和钻石用户买高价商品更多foriinrange(n):ifdf.loc[i,用户等级]in[金卡,钻石]:ifnp.random.random()0.4:df.loc[i,价格]np.random.choice([3999,4999,5999])# 抖音渠道退货率高一些ifdf.loc[i,渠道]抖音:ifnp.random.random()0.7:df.loc[i,退货]1四、让 AI 做数据探索4.1 数据概览# 用 pandas 做基础统计stats_summaryf 数据集基本信息 - 共{len(df)}行{len(df.columns)}列 - 列名{, .join(df.columns)}- 日期范围{df[订单日期].min().strftime(%Y-%m-%d)}到{df[订单日期].max().strftime(%Y-%m-%d)}数值型字段统计{df.describe().to_string()}各字段缺失值数量{df.isnull().sum().to_string()}print(ask_ai(请对这份电商数据集做一个全面的概览分析指出关键特征和需要关注的问题。,stats_summary))AI 的回复是这样的这份数据集样本量较小100行但数据质量极高无缺失值。以下是核心洞察和需要关注的问题1. 核心矛盾高客单价与高退货率并存客单价极高平均价格约 3689 元数量约 2.8 件意味着平均每笔订单收入接近 1 万元。这说明你的产品定位偏向高端或大件商品。退货率惊人平均退货率为23%。这是一个非常危险的信号。洞察用户愿意花大钱买但买完又退了。这通常不是价格问题而是品控、尺码不符、或者货不对板。建议必须深入分析“商品”和“渠道”列。是哪个品类退货率最高是在哪个渠道退货的2. 业务背景春节旺季效应时间点数据集中在 1 月初到 4 月中旬其中2 月 19 日均值正处于2025 年春节假期。洞察业务在春节期间非常活跃说明你的产品切中了春节期间的消费热点可能是礼品、年货等。建议利用“用户等级”列分析一下春节期间的大客户VIP退货情况防止核心流失。3. 数据特征与风险价格波动大价格标准差1721接近均值的 50%说明产品线跨度大从 999 元到 5999 元都有。单量稳定单次购买数量主要集中在 1-5 件之间中位数 3说明是家庭装或套装购买。潜在风险既然有 23% 的退货结合高价格损失金额可能非常可观会严重侵蚀利润。总结 这是一份“看起来很美实则隐患重重”的数据。一句话建议别急着庆祝高收入马上查清楚那 23% 的人为什么退货否则高昂的物流和包装成本会让你白忙一场。4.2 分类统计# 各维度的统计group_statsf 按渠道统计{df.groupby(渠道).agg(订单数(价格,count),平均客单价(价格,mean),退货率(退货,mean)).round(3).to_string()}按用户等级统计{df.groupby(用户等级).agg(订单数(价格,count),平均客单价(价格,mean),平均数量(数量,mean)).round(2).to_string()}按商品统计{df.groupby(商品).agg(订单数(价格,count),平均价格(价格,mean),总销售额(价格,lambdax:(x*df.loc[x.index,数量]).sum())).to_string()}print(ask_ai(请分析各渠道、用户等级、商品的销售差异给出有价值的洞察。,group_stats))AI 会发现渠道分析京东订单最多但客单价最低退货率最低。用户更理性谨慎满意度高。抖音订单最少但客单价最高退货率最高。冲动消费明显购买后易后悔。天猫/拼多多处于中间水平拼多多退货率略高于天猫。用户等级分析普通用户订单量最大客单价最低购买数量最多。价格敏感型倾向多买便宜商品。高等级用户客单价显著高于普通用户购买数量较少。注重品质而非数量。钻石用户订单最少但客单价最高是最有价值的客户群体。商品分析平板最畅销订单数和总销售额最高是主打产品。耳机单价最高利润空间大总销售额第二。手表单价最低总销售额最少可能是入门级产品。手机单价较高需求稳定但不是最畅销。核心洞察渠道策略京东适合走量抖音可主打高客单价但需降低退货率。用户运营普通用户可通过促销提高客单价高等级用户需专属服务提升忠诚度。商品组合平板作为主打耳机作为高利润产品手表可作为入门级引流。退货管理抖音渠道需优化产品展示和用户预期降低退货率。4.3 相关性分析# 数值型字段的相关性numeric_cols[价格,数量,退货]corr_matrixdf[numeric_cols].corr()corr_textf 数值字段相关系数矩阵{corr_matrix.round(3).to_string()}额外信息 - 高价值用户金卡/钻石购买的平均价格{df[df[用户等级].isin([金卡,钻石])][价格].mean():.0f}元 - 普通用户购买的平均价格{df[df[用户等级]普通][价格].mean():.0f}元 print(ask_ai(请分析这些变量之间的相关性有什么值得注意的发现,corr_text))从相关系数矩阵看三个变量间几乎不存在线性关系价格与数量微弱负相关(-0.097)价格略高时购买量略降价格与退货微弱正相关(0.043)高价产品退货略高数量与退货微弱正相关(0.028)买得多退货略多最值得注意的发现是价格对购买决策和退货行为的影响微乎其微。然而高价值用户平均支付价格高出33.8%(4275元 vs3195元)说明价格敏感度存在用户分层但这与整体退货率无关。这暗示价格策略可能不是影响销售表现的关键因素用户价值分层比单纯价格调整更重要。4.4 一键全量分析把上面整合成一个函数以后拿到数据直接用defai_explore_data(df,target_colNone):用 AI 对 DataFrame 做全面的探索性分析# 1. 收集数据摘要summary_parts[]# 基本信息summary_parts.append(f数据集{len(df)}行 ×{len(df.columns)}列)summary_parts.append(f列名和类型\n{df.dtypes.to_string()})# 数值统计numeric_dfdf.select_dtypes(include[np.number])iflen(numeric_df.columns)0:summary_parts.append(f\n数值统计\n{numeric_df.describe().round(3).to_string()})# 分类统计cat_colsdf.select_dtypes(include[object,category]).columnsforcolincat_cols:vcdf[col].value_counts()summary_parts.append(f\n{col}分布\n{vc.to_string()})# 缺失值missingdf.isnull().sum()ifmissing.any():summary_parts.append(f\n缺失值\n{missing[missing0].to_string()})else:summary_parts.append(\n无缺失值)# 相关性iflen(numeric_df.columns)2:corrnumeric_df.corr().round(3)summary_parts.append(f\n相关系数矩阵\n{corr.to_string()})context\n.join(summary_parts)# 2. 让 AI 分析question请对这份数据做全面的探索性分析EDA包括1数据整体特征 2关键发现 3异常或值得关注的点 4建议后续深入分析的方向。iftarget_col:questionf 重点关注与{target_col}的关系。returnask_ai(question,context)# 使用resultai_explore_data(df)print(result)数据整体特征小型数据集100行×7列无缺失值商品类别电子产品为主(平板、笔记本、手表、手机、耳机)销售渠道传统电商平台主导(京东33%、天猫30%)用户构成普通用户占51%高等级用户(金卡钻石)占29%价格区间999-5999元中位数3999元略高于均值3689元退货率23%显著高于行业平均水平关键发现高退货率23%的订单发生退货远高于电商行业通常的5-10%渠道集中京东和天猫合计占63%的订单渠道依赖度较高用户分层明显普通用户占比过半高价值用户(金卡钻石)占比不足30%购买习惯平均每单购买2.8件商品中位数为3件显示客户倾向于批量购买弱相关性各变量间线性关系较弱表明影响因素可能更复杂异常或值得关注的点异常高退货率23%的退货率需要紧急关注可能涉及产品质量或描述不符问题用户结构失衡普通用户占比过高忠诚度计划效果可能不佳渠道发展不均新兴渠道(抖音)仅占17%增长策略可能需要调整价格分布均值小于中位数表明可能存在部分低价商品拉低整体均价建议后续深入分析方向退货原因分析按商品类型和用户等级细分退货率找出问题根源用户价值评估计算不同等级用户的LTV(生命周期价值)优化资源分配渠道效能对比分析各渠道的转化率、获客成本和ROI购物篮分析研究商品组合模式发现交叉销售机会时间序列分析探索销售趋势和季节性模式优化库存和促销策略五、进阶让 AI 生成分析代码不只是分析统计结果你还可以让 AI 直接写分析代码defai_generate_analysis_code(df,task):让 AI 根据数据结构和任务描述生成分析代码# 构造数据描述data_descf DataFrame 信息 - 形状{df.shape}- 列名和类型{df.dtypes.to_string()}- 前 5 行数据{df.head().to_string()}promptf{data_desc}任务{task}请写出完整的 Python 代码使用 pandas包含必要的注释。只输出代码不要解释。 responseclient.chat.completions.create(modelglm-4.7-flash,messages[{role:system,content:你是一个 Python 数据分析专家。只输出可运行的代码不要多余解释。},{role:user,content:prompt}])coderesponse.choices[0].message.content# 去掉可能的 markdown 代码块标记codecode.replace(python,).replace(,).strip()returncode# 使用示例codeai_generate_analysis_code(df,分析每个渠道的平均客单价和退货率找出退货率最高的渠道)print(code)# 执行生成的代码exec(code)AI 会生成这样的代码importpandasaspd# 假设数据已经加载到df中# 计算每个订单的金额df[订单金额]df[价格]*df[数量]# 计算每个渠道的平均客单价avg_order_valuedf.groupby(渠道)[订单金额].mean().reset_index()avg_order_value.rename(columns{订单金额:平均客单价},inplaceTrue)# 计算每个渠道的退货率return_ratedf.groupby(渠道)[退货].mean().reset_index()return_rate.rename(columns{退货:退货率},inplaceTrue)# 合并客单价和退货率channel_analysispd.merge(avg_order_value,return_rate,on渠道)# 找出退货率最高的渠道highest_return_channelchannel_analysis.loc[channel_analysis[退货率].idxmax()]# 输出结果print(各渠道平均客单价和退货率分析:)print(channel_analysis)print(\n退货率最高的渠道:)print(highest_return_channel)六、实用技巧6.1 处理大数据集GLM-4.7-Flash 支持 200K token但直接把 1 万行数据全塞给 AI 不现实太长、太贵。正确的做法是# 先采样iflen(df)500:sample_dfdf.sample(500,random_state42)else:sample_dfdf# 让 AI 分析统计摘要而不是原始数据summaryf 数据总量{len(df)}行 以下是 500 行随机样本的统计摘要{sample_df.describe().to_string()}分类字段分布基于全量数据{df.select_dtypes(object).apply(lambdax:x.value_counts().to_dict()).to_string()}6.2 分步提问比一次问完效果好# 第一步先让 AI 了解数据print(ask_ai(这是数据的基本统计摘要你先了解一下。,stats_summary))# 第二步针对发现深入追问print(ask_ai(你刚才提到退货率有差异能否详细分析各渠道各商品的退货率,group_stats))# 第三步让 AI 给出建议print(ask_ai(基于以上分析给我 3 个可以落地的业务建议。,))6.3 注意事项AI 的分析是基于你给它的统计摘要不是原始数据。摘要越详细分析越准AI 可能编造不在数据中的结论——永远验证 AI 的说法数值结论一定要用代码算出来不要直接信 AI 说的数字七、小结用 AI 做数据探索的核心方法pandas做统计AI 做解读pandas算得准AI 说得好喂统计摘要不喂原始数据省 token也避免上下文过长可以让 AI 写分析代码但要验证输出的代码能跑、结果正确分步追问比一次塞完效果好先概览 → 再深入 → 最后建议AI 不是替代你做分析而是帮你更快地发现方向。你还是要理解数据、验证结论、做出判断。下一篇讲怎么让 AI 帮你做数据透视——不用写代码用自然语言问就行。往期回顾Day 01 · 数据可视化到底在干啥为什么 AI 让它变简单了Day 02环境搭建 Python 数据分析零成本工具包Day 03 · Pandas 快速上手读取、清洗、整理数据 文章已被快递鸟社区收录Day 04 · 数据清洗缺失值、异常值、重复值一站式处理Day 05 · Matplotlib 基础折线图、柱状图、饼图、散点图Day 06 · 图表美化配色、标注、子图布局、中文显示Day 07 · Seaborn 进阶统计图表一行代码搞定Day 08 · Pyecharts 入门可交互的中文图表Day 09 · Pyecharts 进阶地图、时间线、组合图表Day 10 · PlotlyWeb 级交互式数据展示下期预告Day 12 自然语言做数据透视——直接用中文问线上渠道各商品的总销售额是多少AI 自动转成代码执行零代码基础也能做数据分析。专栏-「AI Python 系列」第 02 栏 ·AI数据可视化连载中-「AI Python 系列」第 01 栏 · AI自动化办公连载中-「AI Python 系列」第 03 栏 · Python 爬虫实战连载中资源领取关注作者获取本栏完整代码和数据集原创声明本文为梅雅达编程笔记原创作品未经允许不得转载。