目录
1.DataFrame数据的查询
1.1选取行
1.2选取列
1.3选取行和列
2.DataFrame数据的编辑
2.1增加数据
2.2删除数据
2.3修改数据
2.4修改列名
可以通过行索引或行索引位置的切片形式选取行数据。
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%的行 |
选取列时不能使用切片形式,可以通过列索引标签或以属性的方式单独获取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
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
增加一行数据直接通过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
删除数据直接用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
df5.replace('张三','小王',inplace=True)
display(df5)
#---------------------------------------
name no year score
city
北京 小王 001 2001 85
上海 李四 002 2001 78
北京 小明 004 2002 80
通过使用rename()函数来修改列名
df5.rename(columns={'no':'number'}, inplace=True)
display(df5)
#-------------------------------------------------
name number year score
city
北京 小王 001 2001 85
上海 李四 002 2001 78
北京 小明 004 2002 80