很多人学数据分析的时候,第一反应是到处找复杂的案例、搞一套看起来很高级的模型,结果拿到真实业务数据那一刻直接懵掉。我见过太多这样的同学了:下载了一个数据集,打开一看几百列,然后完全不知道从哪下手。其实数据分析这件事,最重要的是先有一套路,而不是先有一堆工具。我这两年陆陆续续带过不少新人,也复盘过自己的分析习惯,发现用一个小而完整的电商零售数据集走一遍全流程,是最快建立分析骨架的方式。这篇文章就把我平时分析这类数据的一套完整流程拆给你们看,从拿到数据到最后输出结论,每一步做了什么、为什么这么做、踩过哪些坑,都会讲清楚。
1. 拿到数据集先别急着跑代码:业务理解是第一步
1.1 这个电商数据集到底是什么
我这里用的是一份模拟的某生活消费品电商平台一年期订单数据,字段不算多,大概十几列:订单编号、下单时间、商品ID、商品名称、一级品类、二级品类、单价、数量、订单金额、运费、折扣金额、用户ID、用户注册时间、收货省份、收货城市、支付渠道、订单状态。你看,这个结构很典型,几乎覆盖了电商分析最常用的维度——时间、商品、用户、地区、渠道。
为什么要强调先理解数据?因为绝大多数学员拿到数据就急着导入工具,然后df.head()看一眼就没了。这时候你根本不知道数据里的“业务含义”。比如“订单金额”到底包不包含运费?折扣金额是用户优惠还是平台补贴?订单状态里面哪些是成功订单、哪些是取消订单?这些问题没搞清楚之前,所有统计结果都是空中楼阁。
我的习惯是先花半小时做三件事:第一,对着字段清单逐个写下“这个字段在业务里是什么意思”;第二,确认每行数据是“订单行”还是“订单商品行”(如果一个订单买了两件商品,是占两行还是一行,分析口径完全不同);第三,看数据的时间范围和状态标签是不是完整的。就拿订单状态来说,如果一份数据里有已支付、已发货、已完成、已取消四种状态,你做GMV分析的时候就一定要想清楚:算不算已取消的订单?我自己的处理习惯是,分析销售额相关指标时先剔除取消订单,而分析用户下单行为时则保留全部记录,因为取消行为本身也能反映问题。
1.2 分析目标拆解与KPI选择
业务理解完之后,下一个关键是明确分析目标。同一份电商数据,老板问的问题不同,你的分析侧重点完全不一样。如果是想了解整体经营状况,核心KPI就是GMV(成交总额)、订单量、支付用户数、客单价;如果想知道哪个品类值得加大投入,就要做品类销售贡献和增速分析;如果想做用户运营,就要盯复购率、用户分层、沉默用户占比。
我建议新手在动手之前,把这次分析的“核心问题”写成一页纸,然后拆成可量化的具体指标。比如“分析平台整体销售表现”可以拆成:
- 月度GMV和订单量的趋势变化
- 客单价和折扣力度的关系
- 一级品类的销售额构成
- 不同支付渠道的转化效率
- 用户复购的基本画像
这五个小问题就是数据分析的靶子。后面所有的取数、清洗、图表、结论,全部围绕这些靶子来打。不要想着“顺便把用户流失模型也做了”,一次分析解决一个核心问题,做到能落地的程度,比做十个半吊子维度强得多。
2. 数据清洗:整整半天都在和脏数据打交道
2.1 字段类型与缺失值处理:先摸清底细
很多人以为数据清洗就是把空值删掉,其实没那么简单。拿到数据之后,第一步是看每个字段的“数据类型”是不是符合预期。比如下单时间这一列,如果读进来之后显示是字符串而不是时间类型,后面的时间趋势分析全废。再比如金额字段,如果某些行里存的是"12.5元"这种带文本的值,也没办法直接算总和。
缺失值处理是清洗环节的重头戏。我建议用四个维度来排查空值:缺失比例、字段重要性、缺失是否随机、业务上能否合理地填补。还是拿我这份数据说,用户ID在部分订单行里是空的,我做了个统计差不多只有 0.3% 的缺失,那直接删除这几行完全没影响;但商品名称缺失了 5%,那就要小心了,可能需要去商品ID关联补充,或者把这块数据单独标记为“未知商品”,而不是粗暴地删掉,因为一旦删掉,品类分析的比例就会被悄悄扭曲。
我的实操经验是分三步走:
- 先跑一个缺失值概览,看哪些字段缺得多、哪些缺得少
- 对缺得少的字段,判断是否可以按业务规则补上(比如某商品ID有值时商品名缺失,可以直接关联回去)
- 对缺得多且不影响核心分析的字段,建立“是否缺失”的新特征保留着,防止以后要用
这里尤其要提醒的是“时间字段”的缺失:订单时间是电商分析的命脉,如果超过1%缺失,我通常直接放弃小时级别的分析,但保留日期级别的趋势分析,因为按日聚合可以容掉少数几个丢时间的数据点。反之,如果你要做的正是精细化时段分析,缺失率又高,那这块数据就不能用。
2.2 重复值、异常值与统一格式:常见坑位清单
重复值这个坑,看起来简单,但处理策略得想清楚。完全一模一样的行(所有字段都相同)几乎可以确定是重复记录,删除就行。麻烦的是那种“部分重复”——比如同一订单号出现两次,但其中一行没填收货省份。这种一般要注意:先看订单号,如果一个订单号对应多个商品,那是正常的(多商品订单),但如果同一个订单号+同一个商品ID出现两次,就要小心是不是录重了。
异常值这块,我给一个非常实用的判断思路:不要孤立地看数值,要把数值放到业务场景里看。最典型的例子是单价为0的“商品”。我这份模拟数据里就有几十条单价为0但数量为正的订单,单独看像是异常值,但结合订单金额和折扣金额来看,就会发现属于“满减优惠后实际支付为0”的促销订单,这是合法业务。而单价超过10000元的某标价异常订单,结合品类看就知道是数据录入错误。所以说到底,异常值不是纯统计学问题,而是“是否符合业务常识”的问题。
还有一个多数教程不会强调的坑:格式统一。商品名称里的空格、省份字段偶尔出现“北京市/北京/北京市 ”这种写法、支付渠道中“支付宝”“ali pay”“AliPay”三个名称并存……每一条都是统计分析时的地雷。我的处理方式是:字符串类型字段统一去除首尾空格并规范大小写,省市级字段按国家级行政区划代码表做一次映射,渠道字段先分组再统一映射。做完这些,再跑 group by 的时候就不会看到一堆明明同一事物却被拆成好几类的数据了。
3. 探索性数据分析:用图先把数据“看”明白
3.1 单变量分布:最容易被忽略的第一步
清洗完数据,很多新手就急着去算总GMV、总订单量,然后画一个折线图完事。这不够。我强烈建议先做一遍“单变量分布分析”——就是只盯一个字段,看它的整体形态。这一步的价值在于:它能提前暴露数据的病理特征,也能为后续建模或分箱提供依据。
先说订单金额(剔除取消订单后)。我画了直方图,发现它呈现出典型的长尾分布,绝大多数订单在50到200元之间,但尾巴一直拖到几千元。这意味着如果用平均值描述客单价,会被少数大单带着走,此时更稳健的指标是“中位数”。比如某个月的客单价平均值是180元,但中位数只有120元,你要是在汇报里只写“客单价180”,老板会以为是普遍消费水平,实际上半个平台的用户消费不到120元。所以我做分析的时候,对这种偏态分布字段,平均值和中位数两个数一块看,差距越大说明分层越明显。
再看单价和数量的分布。单价分布可以直观地看出平台主营价格带——你的商品是高客单还是低客单,用户群体完全不同。数量分布则经常会出现一个“尖峰”在数量=1,这很正常,说明大部分用户单次只买一件,多件订单是小部分。如果你发现数量>10的订单特别多,要去核实一下是不是有批发或团购订单混进来了,这会严重扭曲你对“普通用户行为”的判断。
3.2 多变量关系:找到藏在数据里的线索
单变量看完了,接下来就是把字段和字段放到一起做关系分析。这一阶段的核心不是做多复杂的模型,而是通过交叉表、分组聚合和散点图,快速锁定“哪些变量之间有强关联”。
我这里做了一个典型的操作:按一级品类分组,统计每个品类的订单量、销售额、平均单价、平均折扣率。结果很有意思——某些品类(比如零食)订单量很大但销售额占比不高,属于“高频低客单”的引流品类;而某些品类(比如家电)订单量不大但销售额贡献突出,属于“低频高客单”的利润品类。这两种品类的运营策略完全不一样:前者要保复购和连带率,后者要保客单价和转化率。没有这一步交叉分析,你在看“哪个品类销售最好”的时候,很容易被单一指标带偏——销售额第一的品类,不一定是利润第一的品类,更不一定是用户最忠诚的品类。
另一个很值得看的关系是“时间×支付渠道”。我把月度和支付渠道做成透视表,发现某些渠道在特定月份占比突然上升。顺着日期标签一查,发现是平台搞周年庆活动的时候,某个支付渠道推出了随机立减,瞬时交易量暴涨。这个结论如果只看总趋势是发现不了的,只有把维度切到渠道和时间两个交叉点才能看到。做多变量分析,本质上就是在给“整体结论”做解剖,找到每一个数字波动背后的驱动因子。
4. 业务指标拆解:从销售额到复购率的完整链路
4.1 整体销售趋势与周期性规律
拆解业务指标的第一步,是看整体趋势和周期规律,这也是最有“体感”的分析环节。我会把日订单量和日GMV拉成时间序列,先看全貌,再看波峰波谷的点。
我这里的数据反映出一个非常明确的规律:周末订单量显著高于工作日,尤其是周五到周日,属于典型的“周末消费型”电商。更明显的是,每月下旬会出现一次订单量小高峰,追查了一下,发现和平台固定发券时间完全重合。这就是时间序列分析的切入点——你不是在画一张图看高低起伏,而是在给每一个“峰”和“谷”找业务解释。找到了解释,分析才有价值;找不到解释的异常波动,就要标出来提醒业务方去排查(比如是不是数据漏了、是不是支付接口出过故障)。
这里强烈建议做一个动作:按“星期几”看平均订单量和平均客单价。因为“周末订单多”不够,还需要知道“周末的客单价是高还是低”,这直接影响到营销活动的设计逻辑。比如我这边数据显示,周末订单量高但客单价明显低于工作日,说明周末用户以小额即时消费为主,此时推大额满减的效果未必好,推低价凑单品反而更匹配消费心理。
4.2 品类与地区维度:找到增长引擎
拆完整体趋势,一定要下钻到品类和地区维度。品类分析的推荐姿势是:“销售额贡献”和“订单量贡献”交叉看,再加一个“月环比增速”指标。销售额占比高+增速快的品类是明星品类,要重点保;销售额占比高+增速慢的是现金牛品类,要稳住基本盘;销售额占比低+增速快的是潜力品类,可以考虑给资源测试;销售额占比低+增速慢的,大概属于长尾品类,不必花太多精力。把品类当成一个组合来管理,而不是逐一孤立地看,才算真正理解了结构。
地区维度的分析比较实用。按省份聚合之后,我发现销售额排名前五的省份占了总销售额将近45%,但订单量占比没那么高,说明这些省份的客单价远高于平均水平——大概率是经济较发达地区,用户对高客单商品接受度高。对应的运营启发是:广告投放预算是否可以更聚焦到高转化地区;物流履约能力是否可以优先保障这些区域的时效。分析不是罗列排名,而是通过维度拆解,把结论翻译成业务动作。
这个环节还有个小技巧:尽量用“双重分组”(比如省份×品类)去看,而不是只看一张省份汇总表。因为一个品类在A省份卖爆,在B省份可能完全没人买,单看地区总排名会掩盖这种差异。我每次都会挑一番TOP5销售额品类中各区域内部的占比,及时发现异常地区,比如某些偏远省份的电器品类销售额异常高,后来一查是有企业采购订单混入,直接剔除。
4.3 用户生命周期:复购与流失的真相
用户维度的分析是电商数据的精华部分,也是大多数教程讲得最浅的部分。很多人只会算一个新客数和老客数,但我建议从“用户成长阶梯”来看:新客首单→复购→活跃→流失,每一层都对应不同的运营策略。
我基于订单数据和用户注册时间,给每个用户打了几个基础标签:首单时间、最近一次下单时间、累计订单数、累计消费金额。然后做了三个层级的分析。第一层是整体复购率:统计所有下单用户中,有过两次及以上购买行为的占比是多少。第二层是按首单月份看用户留存:1月首次下单的用户,到2月还有多少比例继续下单,到3月呢?这个指标直接揭示“拉新—激活—留存”链条的健康度。第三层是RFM简化版:把用户按“最近一次下单距今时间”“累计下单次数”“累计消费金额”三个维度统统切分,分成高价值活跃、高价值沉默、低价值活跃、低价值沉默等几类,然后统计每类人数占比和销售额占比。
说起来都是常见指标,但实操中很容易踩一个口径坑:算“复购用户”的时候,到底是算“有两次以上购买的用户数占所有下单用户数的比例”,还是“本月下单用户中,历史上买过两次以上的用户占比”?这两个概念差很多。我统一采用的是后一种“老客占比”口径,因为它在月度之间可比,也更贴近业务日常用语。每个指标一定要先定义清楚口径,再写代码,否则分析做完才发现口径不对,返工成本非常高。
5. 可视化与结论输出:让非技术同事也能看懂
5.1 图表选型的几条实用原则
数据分析的最后一步往往是输出报告。报告的核心不是把图表堆上去,而是让一个不了解数据的同事看图之后能直接说出关键结论。图表选型这块我有几条很实用的习惯。
先说时间趋势,统一用折线图,而且一次不要放超过三条线,线多了就看不清了。如果要同时放GMV和订单量两个量纲不同的指标,用双Y轴要警惕:我一般避免双Y轴,因为它容易诱导视觉对比。比如左轴GMV、右轴订单量,两边的刻度比例可以被人为改得看起来同步或反向。如果非要表达两个指标的关系,我更喜欢分上下两个子图,共享X轴,这样既直观又不容易误导。
再看份额类数据,比如品类销售额占比,我用堆叠柱状图而不是饼图。因为饼图的维度一多,色块挤在一起很难比较,堆叠柱状图可以顺带看出每个类别的占比随时间的变化。对比类数据,比如不同支付渠道的客单价,用柱状图加数据标签最直接。而字段之间相关性的展示,一律用散点图,再配一个简单的相关系数文字说明,不要直接在图上拟合一堆复杂曲线,除非业务上有明确的理论依据。
5.2 从分析到建议:数据怎么变成业务动作
做再多图,落到报告里的核心仍然是“结论—证据—建议”这种结构。我的习惯是先写一句话结论,然后列出支撑结论的数据证据,最后给一个具体可执行的建议。
举一个例子。通过数据我看到“周末订单量高但客单价低”,结论是:平台销售高峰集中在周末,但依赖小额订单支撑。支撑证据是:周末日均订单量比工作日高32%,但客单价低18%。建议就是:周末期间增加“凑单满减”类活动,通过调整起送门槛带动客单价上升;而在工作日推动大额消费品类的限时优惠,拉平平日销售低谷。
这种输出方式的要点是:不要让读者自己从图表里“悟”出观点。你是分析师,你的工作就是明确指出数据在说什么、对业务意味着什么、建议接下来做什么。每个建议都应该对应到某一个具体指标,比如“客单价”“复购率”“某品类销售额占比”,否则建议就是空话。我在带新人的时候经常说一句话:“如果你给的结论,老板听完不需要问‘所以呢’,那就说明到位了。”
报告的呈现上,配色建议克制一点,一个主题色加一个强调色就够,颜色标成“异常高”“异常低”看的时候才醒目。把核心指标做成一个三到五行的KPI卡放在报告最前面,紧接着就是关键图表和结论建议,不要再把过程性的探索步骤全放进去。分析过程中的探索图,只选最有说服力的三四张进报告,其余留在工作笔记里就好。
6. 实操避坑清单与学习路径建议
6.1 我从这份数据里踩过的几个具体的坑
清理这份模拟电商数据的时候,有几个坑我印象特别深,拿出来给你们排雷。
第一个坑是“订单金额”的加总陷阱。这份数据里订单金额字段其实已经包含了运费,但一开始我直接用订单金额合计当GMV,结果发现和支付渠道流水对不上。后来查字段说明才意识到,运费收入也混在订单金额里,而GMV的口径通常要么含运费要么不含,必须统一。各位在分析自己的数据时,第一件事先问清楚金额字段的构成,否则就是给自己埋雷。
第二个坑是“折扣金额”为负数。我对折扣金额做分布统计时,发现竟然有负数,一开始以为是数据错误,后来才知道是部分订单发生了“退款差价”,系统把退款记为负折扣。这种情况如果不处理,所有折扣率分析都会偏移。我的处理方式是把负值单独提取出来,再结合退款状态判断,不做无脑绝对值。
第三个坑是“同一用户多个账号”。数据分析里经常假设用户ID就是唯一用户,但实际业务中同一个人可能注册了两个账号。我这次的数据虽然没做实名关联,但在做用户分层的时保留了用户ID维度,同时提醒业务方这个数据的用户数有被高估的可能。这个照实说明比假装精确更有价值。
这三个坑指向同一个道理:数据分析里没有一步到位的“标准答案”,每一个环节都要带着“这个数字真的符合业务逻辑吗”的疑问去过。有了这个疑问,你就不会在清洗阶段就把异常值一把删除,也不会在出结论时忽略口径的歧义。
6.2 新手如何通过这类数据集练出分析手感
如果你现在刚学数据分析不久,我的建议是不要急着去啃机器学习算法,先把“一份数据集从生到熟”的过程走通十遍。具体可以这样练:每拿一份新数据,固定走完“业务理解→数据清洗→单变量分布→分组交叉→指标拆解→图表输出→结论建议”这条完整链路,每一遍都尝试换一个业务侧重点,比如这周关心品类,下周关心用户,再下周关心地区。同一个数据集从不同角度反复磨,你才会真正理解“业务目标决定分析路径”这句话。
投入时间方面,我的亲身体会是:清洗和探索占七成时间,真正的“分析”和出结论只占三成。哪个环节薄弱,就集中补哪个环节。如果你拿到数据习惯性一头扎进Python开始写聚合,先停下来,强迫自己把该回答的业务问题先写在纸上,列好指标清单,然后再打开工具。这样练上几轮,你会发现自己的分析速度和分析质量都有非常大的提升。
另外,建议自始至终保留一份“分析笔记”,记录每个数据集的字段口径、清洗动作、踩坑点。以后遇到类似数据,直接翻笔记就能少走很多弯路。我自己整理的数据集笔记到现在已经积累了厚厚一沓,每次做新项目之前翻一翻,思路基本马上就能清晰起来。
最后再说一个小技巧:分析做完之后,隔两天再把报告拿回来自己看一遍。这一遍你会非常容易发现哪里结论下得太满、哪里有更好的表达方式。反复修改的过程,才是分析能力真正沉淀的过程。数据分析这件事,靠的不是灵感,而是把一个又一个细节做到位——你把这套流程走熟了,面对任何电商零售数据,就不会再有“不知道从哪下手”的慌张感了。