当前位置: 首页 > 后端技术 > Python

Python数据分析实战基础(一):初识Pandas

时间:2023-03-25 22:51:04 Python

作者|吹牛Z源|数据不吹牛这种糟糕的策略主要是因为当我刚开始使用Python处理数据时,选择所需的行和列太痛苦了,而且我没有点击Excel想要的地方的乐趣。第一篇潘师傅(初遇Pandas)教程只讲了考虑到空间问题的最基本的面向列的索引,但这显然不能满足同志们日益增长的个性化服务(选择)的需求。为了解除痛苦,增加乐趣,满足需求,在第二部分,我们将索引单独抽取出来,结合场景详细介绍两种常用的索引方法:第一种是基于索引的索引position(integer),case短小精悍,有一个粗略的理解就够了,实际中偶尔也会用到,但它的适用范围没有第二种广泛。第二类是name(label)-basedindexing,这是板书练习的重点,因为这将是我们后续数据清洗和分析的重要基石。首先简单介绍一下练习的案例数据:和第一个数据集一样,记录了不同流量来源下每个渠道的来源明细对应的访问量、支付转化率和客单价。数据集虽然短(复杂案例数据集会在基础部分结束后如约而至),但已经足够有代表性了,下面开始我们的指标表现。01基于位置(编号)的索引首先我们来看一下索引的运行方式:需要根据实际情况填写相应的行参数和列参数。场景1(行选择)目标:选择“流量来源”等于“级别1”的所有行。思路:用手指戳屏幕数数。一级通道从1号线到13号线,对应的线路索引为0-12。但是,默认情况下,Python切片包括开头和结尾。如果要选择0-12为索引行,我们要输入“0:13”,如果要选择所有列,则需要输入冒号“:”。场景二(栏目选择)目标:我们想看一下所有渠道的流量来源和客单价表。思路:所有流量通道,即所有行,我们在第一行的参数位置输入“:”;再看列,流量来源是第一列,客单价是第五列,对应的列索引分别是0和4:值得注意的是,如果要跨列选择,首先要构造position参数变成列表形式,这里是[0,4],如果是连续选择,不需要构造列表,直接输入0:5(只需要选择索引为0的列到索引为4的列).场景三(行列交叉选择)目标:我们想看到二级和三级流量来源对应的访客和支付转化率以及来源明细。思路:先看行,二级和三级通道对应的行索引为13:17,再次强调索引包括第一不包括最后的原则。我们传入的行参数是13:18;对于columns,我们需要trafficsources,sourcedetails,visitorsandconversions,即前4列,传入参数为0:4。02Indexbasedonname(label)为了建立横向对比感,我们还是使用上面三种场景。场景一:选中一级通道的所有行。思路:这次我们不需要数字位置。要过滤掉所有流量通道为“Level1”的行,只需要判断流量来源一栏中哪个值等于“Level1”即可。返回结果由True和False(布尔)组成,在本例中分别表示结果等于一级和不等于一级。在loc方法中,我们可以将这一列得到的值传入row参数position,Pandas会默认返回结果为True的行(这里是index从0到12的行),丢弃该行其结果为False,直接上例:场景二:我们想看一下所有渠道的流量来源和客单价表。思路:所有通道等于所有行。我们直接在行参数位置输入“:”。提取流量来源和客单价栏目,直接在栏目参数位置输入名称即可。由于这里涉及到两列,所以必须用一个列表来包裹:场景三:我们要提取来源明细对应的二级和三级流量来源、访问者和支付转化率。思路:行抽取使用判断,列抽取输入具体名称参数。这里给isin函数打个广告,可以帮助我们快速判断源数据中某一列(Series)的值是否等于列表中的值。以case为例,df['trafficsource'].isin(['secondary','third-level']),判断流量来源列的值等于“secondary”还是“third-level”",如果相等(等于任何一个)则返回True,否则返回False。如果我们将这个布尔判断结果传入row参数,就可以很容易的得到流量来源等于二级或者三级的渠道。既然loc的应用场景比较广泛,那我们就给他加个鸡腿,踏踏实实的练练手。在插入场景之前,我们先花30秒回顾一下Pandas的Series(系列)向量求值的用法。具体操作如下:加个尾巴,均值、标准差等统计值就出来了。明白了这一点,下面正式进入场景四。场景四:关于流量渠道数据,我们真的应该关注优质渠道。如果我们把访问量、转化率、客单价高于平均渠道的定义为优质渠道,那么如何找到这些渠道呢?思路:优质渠道必须同时满足访问量、转化量、客单量高于平均水平三个条件。这是解决问题的关键。先看平均值:然后判断每个索引列是否大于平均值:三个条件必须同时满足,并且它们之间是“与”的关系(同时满足)。在pandas中,为了表示同时满足,每个条件都要用“&”符号来连接条件,最好用括号来区分条件;如果是“或”关系(只满足一个),则使用“|”symboltoconnect:这样的连接后,返回True表示通道同时满足访客,转化率,客单价都高于平均值的条件,那么我们只需要通过将这些值放入行参数的位置。至此,我们直接筛选出4个关键指标均在平均水平以上的优质频道。这两种索引方式分别是基于位置(数字)的索引和基于名称(标签)的索引。关键是将你脑海中想要选择的行和列映射到对应的行参数和列参数上。稍加练习,我们就可以随心所欲地使用pandas来处理和分析数据。完成这一步,你会发现Python与Excel相比,是那样的美丽动人。这是Python数据分析实战基础的第一篇文章,主要是和Pandas的简单接触。已经掌握Pandas的同学可以加快快手翻页或者直接跳过本文。搜索···进入···小程序,解锁……更多专业内容和优质资讯,不要错过!