(二)使用Pandas进行数据分析 - 查询数据的几种方法

Pandas查询数据的几种方法

  1. df.loc方法,根据行、列的标签值查询   (# .loc既能查询,又能覆盖写入)
  2. df.iloc方法,根据行、列的数字位置查询
  3. df.where方法
  4. df.query方法

Pandas使用df.loc查询数据的方法

  1. 使用单个label值查询数据
  2. 使用值列表批量查询数据
  3. 使用数值区间进行范围查询
  4. 使用条件表达式查询
  5. 调用函数查询

Attention!

  • 以上查询方法,既适用于行,也适用于列
  • 注意观察降维 DataFrame > Series > Value

1. 使用单个label值查询数据

每一行和每一列,都可以只传入单个值,实现精确匹配(这里可以发现降维的效果)

# 得到DataFrame中某个单元格的单个值
df.loc['行名称','列名称']

# 得到一个Series(这里传入的列名是一个值列表)
df.loc['行名称',['列名称_1','列名称_2']]

2. 使用值列表批量查询

# 得到一个DataFrame
df.loc[['行名称_1','行名称_2'],['列名称_1','列名称_2']]

3. 使用数值区间进行范围查询

这里注意,应用于 loc 的区间既包含开始,也包含结束。

# 行index按区间
df.loc['行名称_1':'行名称_2','列名称']

# 列index按区间
df.loc['行名称','列名称_1':'列名称_2']

# 行列index均按区间
df.loc['行名称_1':'行名称_2','列名称_1':'列名称_2']

这里我们可以看到,传入的行、列值不再是一个列表,而是以  “ :” 连接的一个区间,并且需要注意的是传入的值并不是索引号,而是索引标签值,按照行、列在DataFrame中的顺序进行区间分割

4. 使用条件表达式查询

使用条件表达式可以返回一个布尔列表,这个列表的长度等于行数或者列数(一般常用于行)

# 进行一个简单的查询,温度低于10度的所有记录
df.loc[df['WenDu'] < 10,:] # df['WenDu']取出温度这一列进行条件匹配,后面的冒号代表查询所有列

# 多条件查询
df.loc[(df['WenDu'] < 10) & (df['WenDu'] > 0),:]

df['WenDu'] < 10 返回的是一个包含布尔值的Series, < 10 的记录为True,反之为False。

5. 调用函数查询

# 直接写 lambda 表达式
df.loc[lambda df : (df['WenDu'] < 10) & (df['WenDu'] > 0),:]

当按照行进行筛选时,loc方法会将每一行的Series传给lambda的df变量,同样会得到一个布尔结果,用于筛选行(或列)数据。

也可以自己编写函数,但要注意的是在loc中使用函数时只需要输入函数名即可,函数本身也可以当成变量传递,其参数取决于外部的变量。

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值