1.DataFrame数据的查询
1.1选取行
可以通过行索引或行索引位置的切片形式选取行数据。
data = { 'name':['张三', '李四', '王五', '小明'], 'sex':['female', 'female', 'male', 'male'], 'year':[2001, 2001, 2003, 2002], 'city':['北京', '上海', '广州', '北京'] } df = pd.DataFrame(data) print(df) print('显示前2行:\n',df[:2]) print('显示2-3两行:\n',df[1:3]) #---------------------------------------- name sex year city 0 张三 female 2001 北京 1 李四 female 2001 上海 2 王五 male 2003 广州 3 小明 male 2002 北京 显示前2行: name sex year city 0 张三 female 2001 北京 1 李四 female 2001 上海 显示2-3两行: name sex year city 1 李四 female 2001 上海 2 王五 male 2003 广州
除了切片形式之外,还可以通过head()和tail()方法获取多行数据,但这两种方法得到的数据都是从开头或结尾获取的连续数据。
head() | 默认获取前5行数据 |
head(n) | 获取前n行数据 |
tail() | 默认获取后5行数据 |
tail(n) | 获取后n行 |
sample(n) | 随机抽取n行显示 |
sample(frac=0.6) | 随机抽取60%的行 |
1.2选取列
选取列时不能使用切片形式,可以通过列索引标签或以属性的方式单独获取DataFrame的列数据。
w1 = df5[['name','year']] display(w1) display(df5.select_dtypes(exclude='int64').head())# 选择非‘int64’类型的列显示 #--------------------------------------------------------------------------- name year city 北京 张三 2001 上海 李四 2001 广州 王五 2003 北京 小明 2002 name sex city 北京 张三 female 上海 李四 female 广州 王五 male 北京 小明 male
1.3选取行和列
loc和iloc方法:
display(df5.loc[['北京','上海'],['name','year']] ) #显示北京和上海行中的name和year两列 print(df5.iloc[[1,3],[1,2]]) #-------------------------------------------- name year city 北京 张三 2001 北京 小明 2002 上海 李四 2001 sex year city 上海 female 2001 北京 male 2002
query方法:
display(df5.query(' year>2001')) display(df5.query('year>2001 & year<2003')) #-------------------------------------------- name sex year city 广州 王五 male 2003 北京 小明 male 2002 name sex year city 北京 小明 male 2002
2.DataFrame数据的编辑
2.1增加数据
增加一行数据直接通过append方法传入字典数据结构即可;增加列时,只需为新增的列赋值即可,如果要指定新增列的位置,可以用insert函数实现。
df5['score'] = [85,78,96,80] df5.insert(1,'no',['001','002','003','004']) print(df5) #-------------------------------------------- name no sex year score city 北京 张三 001 female 2001 85 上海 李四 002 female 2001 78 广州 王五 003 male 2003 96 北京 小明 004 male 2002 80
2.2删除数据
删除数据直接用drop方法,axis=0时删除行,axis=1时删除列,默认数据删除不修改原数据,如果在原数据上删除需要设置参数inplace=True。
# 删除数据的行 df5.drop('广州',axis=0,inplace = True) display(df5) # 删除数据的列 df5.drop('sex',axis = 1,inplace = True) display(df5) #--------------------------------------- name no sex year score city 北京 张三 001 female 2001 85 上海 李四 002 female 2001 78 北京 小明 004 male 2002 80 name no year score city 北京 张三 001 2001 85 上海 李四 002 2001 78 北京 小明 004 2002 80
2.3修改数据
df5.replace('张三','小王',inplace=True) display(df5) #--------------------------------------- name no year score city 北京 小王 001 2001 85 上海 李四 002 2001 78 北京 小明 004 2002 80
2.4修改列名
通过使用rename()函数来修改列名
df5.rename(columns={'no':'number'}, inplace=True) display(df5) #------------------------------------------------- name number year score city 北京 小王 001 2001 85 上海 李四 002 2001 78 北京 小明 004 2002 80