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

it2023-10-17  69

代码运行基于jupyter notebook

文章目录

一、数据加载二、.iloc() 用位置查找、修改数据查找数据修改数据 三、.loc() 用标签查找、修改数据查找数据修改数据 三、bool类型索引四、参考资料

一、数据加载

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章 布尔索引

最新回复(0)