Pandas 数据查找及修改操作 iloc() & loc() bool类型索引

代码运行基于jupyter notebook

一、数据加载

import pandas as pd
import pickle
with open('titanic.pickle', 'rb') as file:
    df = pickle.load(file)

二、.iloc() 用位置查找、修改数据

df = df.set_index('Name')
df.head()

在这里插入图片描述

查找数据

df.iloc[0:5, 1:3]

在这里插入图片描述

修改数据

print(df.iloc[0,4])
# 22.0
df.iloc[0,4] = 1000
df.head()

在这里插入图片描述

三、.loc() 用标签查找、修改数据

查找数据

df.loc['Heikkinen, Miss. Laina']

在这里插入图片描述

修改数据

print(df.loc['Heikkinen, Miss. Laina','Age'])
# 26.0 
df.loc['Heikkinen, Miss. Laina','Age'] = 18
df.head()

在这里插入图片描述

三、bool类型索引

# 选择船票价格大于40的乘客
#df[df['Fare'] > 40]
# 选择船票价格大于40的前五个乘客
#df[df['Fare'] > 40][:5]
# 选择前五个男性乘客
#df[df['Sex'] == 'male'][:5]
# 注意 df['Fare'] > 40 返回的一个bool类型列
# df[df['Fare'] > 40]才能选择出满足要求的数据行
df['Fare'] > 40

在这里插入图片描述

# 计算大于70岁的乘客的人数
# (df['Age']>70).sum()

#计算所有男性的平均年龄  这三行代码等价
# iloc貌似不能直接用布尔索引当做掩码
#ValueError: iLocation based boolean indexing cannot use an indexable as a mask

df.loc[df['Sex'] == 'male', 'Age'].mean()
df.iloc[(df['Sex'] == 'male').values, 4].mean()
df.iloc[list(df['Sex'] == 'male'), 4].mean()

四、参考资料

《Pandas Cookbook》第05章 布尔索引

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值