pandas高级操作
pandas数据处理
1. 删除重复元素
使用
duplicated
函数检测重复的行,返回元素为布尔类型的Series对象,每个元素对应一行,如果该行不是第一次出现,则元素为True
- 使用
drop_duplicates()
函数删除重复的行- 使用
duplicated()
函数查看重复的行- 如果使用pd.concat([df1,df2],axis = 1)生成新的DataFrame,新的df中columns相同,使用duplicate()和drop_duplicates()都会出问题
df.duplicated(keep='last')
>>> 0 True
1 False
2 True
3 False
4 False
dtype: bool
df.drop_duplicates(keep='last')
# 使用drop函数删除重复元素
df.drop(df[df.duplicated()].index)
2. 映射
映射的含义:创建一个映射关系列表,把values元素和一个特定的标签或者字符串绑定
包含三种操作:
- replace()函数:替换元素(DataFrame\Series的函数)
- 最重要:map()函数:新建一列(Series的函数)
- rename()函数:替换索引(DataFrame的函数)
- DateFrame可以存在多种数据类型
- Series、numpy只能存在一种类型
- DateFrame赋值时如果有None,显示方式取决于该列的数据类型,如果为object,则为None,如果是float,则显示np.nan
1) replace()函数: 替换元素
使用replace()函数,对values进行替换操作
Series替换操作
- 单值替换
- 普通替换
- 字典替换
- 多值替换
- 列表替换
- 字典替换(推荐)
s = Series(data=[np.nan,'小七',19,10])
>>> 0 NaN
1 小七
2 19
3 10
dtype: object
s.replace(to_replace={
'小七':'张学友',19:21})
>>> 0 NaN
1 张学友
2 21
3 10
dtype: object
Series参数说明:
- method:对指定的值使用相邻的值填充
- limit:设定填充次数
- to_replace: 旧值
DataFrame替换操作
- 单值替换
- 普通替换
- 按列指定单值替换{列标签:替换值}
- 多值替换
- 列表替换
- 单字典替换(推荐)
# replace函数中不能接收None对象
df.replace(to_replace=np.nan,value=19)
# 接收键值对
df.replace(to_replace={
'boy':np.nan},value=True)
# 多值替换
df.replace(to_replace=['tom','tomGG'],value=['TOM','TOMGG'])
# 推荐使用一个能满足所有表格替换目的的字典来进行替换,便于后期维护
df.replace(to_replace={
'dancer':'DANCER','lucy':