Pandas: iloc和loc函数的使用

DataFrame最简单的索引便是df[‘列名’],同时两种主要的索引方式。

  • 第一种是基于位置(整数)的索引,通过指定我们要选哪几行和哪几列,来筛选出目标数据。
df.iloc[行索引, 列索引]
df.iloc[1, 1]

其中的行索引和列索引也可以用切片、布尔掩码等索引代替。

  • 第二种是基于名称(标签)的索引,既可以指定列具体的名称,又可以加上复杂的条件判断,筛选更加灵活。
    实际应用过程中,第二种应用得更广泛,操作起来更加灵活,并且更方便。
df.loc[行索引, 列索引]

案例分析

布尔掩码

本文将会用具体的案例场景介绍loc的索引,如下表(部分)所示
在这里插入图片描述

df['流量来源'] == '一级'

上述代码会返回带索引的布尔掩码

在loc方法中,我们可以把这一列判断得到的值传入行参数位置,Pandas会默认返回结果为True的行(这里是索引从0到12的行),而丢掉结果为False的行:

df.loc[df['流量来源'] == '一级',:]

在这里插入图片描述

df[‘流量来源’].isin([‘二级’, ‘三级’])函数可用于提取二级、三级流量来源

df.loc[df['流量来源'].isin(['二级','三级']),['流量来源','来源明细','访客数','支付转化率']]

在这里插入图片描述

isin函数能够帮助我们快速判断源数据中某一列(Series)的值是否等于列表中的值。拿案例来说,df[‘流量来源’].isin([‘二级’,‘三级’]),判断的是流量来源这一列的值,是否等于“二级”或者“三级”,如果等于(等于任意一个)就返回True,否则返回False。我们再把这个布尔型判断结果传入行参数,就能够很容易的得到流量来源等于二级或者三级的渠道。

位与运算符(&|~)实现多条件索引

df.loc[(df['访客数'] > df['访客数'].mean()) &
      (df['客单价'] > df['客单价'].mean()),:]

在这里插入图片描述

总结:

两个函数参数其实差不多,但iloc更适合用于数字索引,loc则是更适合复合条件式索引,这是因为loc函数可以直接识别带索引的布尔掩码而iloc往往不能识别带有index的DataFrame or Series,需要用values获得没有索引的数组,即df.iloc[df[‘列名’].values == 0。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值