代码运行基于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()