京公网安备 11010802034615号
经营许可证编号:京B2-20210330
作者 | 吹牛Z
来源 | 数据不吹牛
原文 | Python数据分析实战基础 | 清洗常用4板斧
首先,导入案例数据集。因为案例数据存放在同一个Excel表的不同Sheet下,我们需要指定sheetname分别读取:
下面开始清洗的正餐。
01 增——拓展数据维度
1.1 纵向合并
这三个sheet的数据,维度完全一致(每列数据都是一样),纵向合并起来分析十分方便。说到纵向合并,concat大佬不请自来,他的招式简单明了——pd.concat([表1,表2,表3]),对于列字段统一的数据,我们只需把表依次传入参数:
concat大佬继续说到:“其实把我参数axis设置成1就可以横向合并.."说时迟那时快,我一个箭步冲上去捂住他的嘴巴“牛逼的人做好一件事就够了,横向的就交给merge吧~”
小Z温馨提示:pandas中很多函数功能十分强大,能够实现多种功能,但对于萌新来说,过多甚至交叉的功能往往会造成懵B的状态,所以这里一种功能先只用一种方式来实现。
1.2 横向合并
横向合并涉及到连接问题,为方便理解,我们构造一些更有代表性的数据集练手:
两个DataFrame是两张成绩表,h1是5位同学的数学、英语、语文成绩,h2是4位同学的篮球和舞蹈成绩,现在想找到并合并两张表同时出现的同学及其成绩,可以用merge方法:
我们来详解一下merge的参数,left和rgiht分别对应着需要连接的左表和右表,这里语数外成绩表是左表,篮球、舞蹈成绩是右表。
left_index与right_index是当我们用索引(这两个表的名字在索引中)连接时指定的参数,设置为on表示用该表的索引作为连接的条件(或者说桥梁)。假设姓名是单独的一列值,且需要根据姓名进行匹配,那就需要用“left_on = '姓名',right_on = '姓名'”,我们可以分别指定左表的匹配列和右表的匹配列。
how是指定连接方式,这里用的inner,表示我们基于姓名索引来匹配,只返回两个表中共同(同时出现)姓名的数据。下面详解一下inner还涉及到的其他参数——left,right,outer。
左右连接(left和right):
左连接(left)和右连接(right),我们可以直观理解为哪边的表是老大,谁是老大,就听谁的(所有行全部保持),先看左连接,左表h1原封不动,右边根据左表进行合并,如果存在相关的名字,就正常返回数据,如果不存在(韩梅梅、李雷),就返回空(NAN)值;右连接就是听右表的,左表有则返回无则为空。
外连接(outer):
外连接是两张表妥协的产物,我的数据全保留,你的也全保留,你有我无的就空着,你无我有的也空着。
02 删——删空去重
2.1 删空
在一些场景,源数据的缺失(空值)对于分析来说是干扰项,需要系统的删除。上文我们合并后的df数据集就是有缺失数据的:
要删除空值,一个dropna即可搞定:
dropna函数默认删除所有出现空值的行,即只要一行中任意一个字段为空,就会被删除。我们可以设置subset参数,例如dropna(subset = ['city']),来指定当一行中的city字段为空时,才会被删除。
2.2 去重
说是讲去重,但是案例数据比较干净,没有两行数据是完全一样的,所以我们要制造点困难,增加几行重复值:
把源数据重复两遍,赋值给repeat,这样每一行数据都有重复的数据。要把重复数据删掉,一行代码就搞定:
drop_duplicates方法去重默认会删掉完全重复的行(每个值都一样的行),如果我们要删除指定列重复的数据,可以通过指定subset参数来实现,假如我们有个奇葩想法,要基于“流量级别”这列进行去重,则可以:
我们会发现,流量有三个级别,通过指定subset参数,我们删除了这个字段重复的行,保留了各自不重复的第一行。继续展开讲,在源数据中,流量渠道为“一级”的有7行数据,每行数据其他字段都不相同,这里我们删除了后6行,只保留了第一行,但如果我们想在去重的过程中删除前面6行,保留最后一行数据怎么操作?答案很简单,指定keep参数即可。
keep值等于last,保留最后一行数据,不输入keep值时,系统默认会给keep赋值为first,就会保留第一行数据而删掉其他的。
03 查——基于条件查询
查,不是单纯的返回几行数据,而是根据业务实际需求,基于一定的条件查看和选择数据。
3.1 按条件索引/筛选
loc独白:你没有看错,哥的分量实在是太重了,所以又来抢个沙发,刷个脸熟。
这次需求是筛选出访客数大于10000的一级渠道,loc一下:
在行参数设置好同时满足访客数大于10000和流量级别等于“一级”这两个条件即可。
3.2 排序
很多情况下,我们都需要通过排序来观察数据规律,以及快速筛选出TOP N的数据项。对于案例数据,我们怎么样按交易金额进行排序并筛选出TOP3的渠道呢?
问题的关键就在于排序,这个时候sort_values函数就派上用场了:
整个操作十分简单,sort_values函数,顾名思义是按照数值进行排序,首先要传入的参数是列参数,即我们根据哪一列的数值来进行排序,ascending参数决定了排序顺序,等于Flase则是从大到小的降序,设置为True则是升序。
排序完之后,筛选TOP3渠道就非常简单:
补充一个知识点,如果跟着文章操作,会发现无论是删空的dropna,还是去重的drop_duplicates,或者是排序的sort_values,在对源数据进行操作后,源数据并未改变,这是因为我们没有对这几个函数的inplace值进行设置,如果设置成inplace = True,删空、去重和排序都会在源数据上生效。
但这里为了避免出现不必要的错误而无法更改,更建议大家把操作后的源数据赋值给新的变量,如new = df.dropna(),而不是将源数据的inplace参数设置为True。
04 分——分组和切分
话天下大势,合久必分,数据亦是如此。在分组的版块中,我们重点介绍groupby分组和cut切分。
4.1分组
在案例数据中,总的流量级别有三级,每一级下又有多个投放地区,如果我们想汇总看每个级别流量所对应的总访客数和支付金额,就需要用到分组了。
groupby是分组函数,最主要的参数是列参数,即按照哪一列或者哪几列(多列要用列表外括)进行汇总,这里是按照流量级别:
可以看到,直接分组之后,没有返回任何我们期望的数据,要进一步得到数据,需要在分组的时候对相关字段进行计算(常用的计算方法包括sum、max、min、mean、std):
后面加上了sum,代表我们先按照流量级别进行分组,再对分组内的字段求和。由于没有指定求和的列,所以是对所有数值型字段进行了求和。此处我们只想要各级别流量下的访客数和支付金额,需要指明参数:
流量级别作为汇总的依据列,默认转化为索引列,如果我们不希望它变成索引,向groupby内传入参数as_index = False即可:
4.2 切分
切分(分桶)操作常用于一维数组的分类和打标,cut函数能够高效的完成任务。它的主要参数和用法如下:
不要被复杂的解释迷惑,一个例子就完全搞懂了。
以案例数据为例,每个渠道都有对应的访客数,我们现在希望对各渠道访客级、千级和万级的渠道。
我们想对流量级别进行百、千、万的归类,所以把分组数值标准传入bins参数。从结果可以看到,在不设置right的情况下,分组区间是默认左开右闭的,而我们希望的是左闭右开,即百级流量渠道访客数在0-99之间,所以需要将right值设置为False。
下面我们直接对分组后的数据进行打标,访客数在0-99设置为“辣鸡”,100-999设置为百级,千级和万级以此类推,同时将打好标签的数据作为新列给到源
非常高效,一行半代码就搞定了分组、判断和打标的过程。
总结
本文从增、删、查、分四个模块,分别介绍了横向、纵向合并;删空、去重;筛选、排序和分组、切分等数据清洗过程中的常见操作。在实际运用中,各操作往往是你中有我,我中有你,共同为了营造一个“干净”的数据而努力。
数据分析咨询请扫描二维码
若不方便扫码,搜微信号:CDAshujufenxi
很多数据分析师写过无数个SELECT查询,但当被问到“如何新建一张表来固化中间数据”“创建视图和创建物理表有什么区别”“视 ...
2026-09-22CDA数据分析师 出品 作者:李诗怡 1. 金字塔原理 定义: 一种“先总后分、先结论后原因”的思考和表达方式。顶层为核心观点,中 ...
2026-09-22数据收集是数据分析、数据挖掘与数字化运营的源头工作,数据收集的完整性、准确性、时效性直接决定后续数据分析结果的可信度与业 ...
2026-09-21箱线图是数据分析中用于识别数据分布、判断离散程度、筛查异常值的核心图表。相比于直方图、趋势图,箱线图可以精准区分正常数据 ...
2026-09-21 很多数据分析师精通Excel函数和数据透视表,但当被问到“数据从哪里来”“表和视图有什么区别”“数据库管理系统和SQL是什么 ...
2026-09-21在数据库数据查询与数据分析工作中,日期时间是最常用的数据类型之一。原始数据库中存储的日期格式多为标准时间戳、年月日时分秒 ...
2026-09-20在时序数据分析中,增长率是衡量数据涨跌幅度、研判发展趋势、识别周期波动的核心指标,主要分为环比增长率与同比增长率。传统Ex ...
2026-09-20 很多企业团队并非缺乏指标,而是陷入“指标失控”:仪表盘上堆满实时跳动的数据,却无法回答“当前瓶颈在哪、下一步该做什么 ...
2026-09-20CDA数据分析师 出品 作者:李诗怡 STP模型(营销战略三步法) 定义: 现代营销战略核心框架,通过市场细分(S)、目标市场选择( ...
2026-09-18在互联网产品迭代、运营优化、界面改版与策略升级过程中,主观经验判断容易造成决策偏差、盲目改版、资源浪费等问题。AB实验(AB ...
2026-09-18 很多企业并不缺少指标,缺少的是让指标“串起来、动起来、用起来”的体系。零散指标像散落一地的珠子,指标体系则是那根把珠 ...
2026-09-18在电商行业精细化运营时代,流量红利逐步消退,粗放式投流、广撒网营销模式已无法适配市场竞争需求。依托用户点击、加购、收藏、 ...
2026-09-17在数据可视化与数据分析工作中,图表是将零散数据转化为直观业务规律的核心工具。不同图表拥有专属的数据逻辑与分析维度,能够从 ...
2026-09-17 很多数据分析师每天盯着GMV、DAU、转化率,但当被问到“哪些指标在所有行业都适用”“哪些指标只对电商有意义”“二者如何搭 ...
2026-09-17在企业数字化运营、业务流程管理与精细化管控体系中,流程运营是串联各项业务环节、保障工作落地、提升运转效率的核心载体。无论 ...
2026-09-16在数据分析与统计学研究中,卡方检验是分析分类变量关联性与差异性的重要方法,广泛应用于市场调研、行为统计、社会调查、商业数 ...
2026-09-16 很多数据分析师每天盯着GMV、DAU、转化率,但当被问到“什么是指标”“指标和维度有什么区别”“如何定义指标值的计算规则和 ...
2026-09-16CDA数据分析师 出品 作者:李诗怡 定义: 用户增长核心分析框架,刻画用户从接触产品到自发推荐的全生命周期,五个递进环节构建 ...
2026-09-15在数字化营销与精细化用户运营时代,企业传统的广撒网式营销模式成本高、转化率低,已无法适配精准商业竞争需求。客户画像作为大 ...
2026-09-15 很多数据分析师精通描述性统计,能熟练计算均值、中位数、标准差,但当被问到“用500个样本如何推断10万用户的真实满意度” ...
2026-09-15