05-1 pandas数据处理 删除duplicated()、替换replace(),映射map(),重命名rename()、聚合函数、排序take()、分组groupby()

pandas数据处理

1、删除重复元素duplicated()

使用duplicated()函数检测重复的行,返回元素为布尔类型的Series对象,每个元素对应一行,如果该行不是第一次出现,则元素为True(是重复的)

  • 使用drop_duplicates()函数删除重复的行
  • 使用duplicate()函数查看重复的行
import numpy as np
import pandas as pd
from pandas import Series,DataFrame
data = [[100,100,100],[90,90,88],[100,100,100],[90,90,87],[100,100,100]]
columns = ['python','c++','java']
index = list('ABCDE')
df = DataFrame(data=data,index=index,columns=columns)
df
python c++ java
A 100 100 100
B 90 90 88
C 100 100 100
D 90 90 87
E 100 100 100
df.duplicated(keep="first") # 告诉我们 当前行是否重复
# 参数默认是 keep="first" 保留开始的 意思是如果发现很多重复的元素 第一个不算重复的 后面的才是 某一行重复 就返回True
结果为:
A    False
B    False
C     True
D    False
E     True
dtype: bool
df.duplicated(keep="last") # keep last 如果遇到重复的元素 最后一个不算重复的 前面的才算重复 这一行重复了 就是True
结果为:
A     True
B    False
C     True
D    False
E    False
dtype: bool
df.duplicated(keep=False) # 只要有和别人完全一样的 不管在开头还是结尾 都算重复 这一行如果是重复的就返回 True
结果为:
A     True
B    False
C     True
D    False
E     True
dtype: bool
df.drop_duplicates() # {'first', 'last', False}, default 'first'
python c++ java
A 100 100 100
B 90 90 88
D 90 90 87
df.drop_duplicates(keep="last") 
python c++ java
B 90 90 88
D 90 90 87
E 100 100 100
df.drop_duplicates(keep=False) 
python c++ java
B 90 90 88
D 90 90 87

2. 映射

映射的含义:创建一个映射关系列表,把values元素和一个特定的标签或者字符串绑定

包含三种操作:

  • replace()函数:替换元素
  • 最重要:map()函数:新建一列
  • rename()函数:替换索引

1) replace()函数:替换元素

使用replace()函数,对values进行替换操作

Series替换操作
  • 单值替换
    • 普通替换
    • 字典替换(推荐)
  • 多值替换
    • 列表替换
    • 字典替换(推荐)
s1 = Series(data = [100,'peppa',np.nan,'chengdu'])
s1
结果为:
0        100
1      peppa
2        NaN
3    chengdu
dtype: objec

单值替换 普通替换

s1.replace(to_replace="peppa",value="佩琪")
结果为:
0        100
1         佩琪
2        NaN
3    chengdu
dtype: object

单值替换 字典替换( )

s1.replace({"chengdu":"成都"})
结果为:
0      100
1    peppa
2      NaN
3       成都
dtype: object

多值替换 列表替换 s1.replace([要替换的值1,要替换的值2,…],[替换成什么1,替换成什么2,…])

s1.replace([100,np.nan],["满分","空值"])
结果为:
0         满分
1      peppa
2         空值
3    chengdu
dtype: object

多值替换 字典替换( { 要替换的值:替换成什么,要替换的值:替换成什么 } )

s1.replace({100:"满分","peppa":"佩琪"})
结果为:
0         满分
1         佩琪
2        NaN
3    chengdu
dtype: object

Series参数说明:

  • method:对指定的值使用相邻的值填充
  • limit:设定填充次数
s2 = Series(data=np.array([80,100,100,100,89,78]))
s2
结果为:
0     80
1    100
2    100
3    100
4     89
5     78
dtype: int32

如果指定value不好 还可以找值来填充

s2.replace(to_replace=100,method="bfill") # 从后面找值来替换当前值
结果为:
0    80
1    89
2    89
3    89
4    89
5    78
dtype: int32
s2.replace(to_replace=100,method="ffill") # 从前面找
结果为:
0    80
1    80
2    80
3    80
4    89
5    78
dtype: int32
s2.replace(to_replace=100,method="ffill",limit=1) # limit 指定是最多往前或者往后找几个, 如果找不到就不填充了 ,limit 默认是None不限制
结果为:
0     80
1     80
2    100
3    100
4     89
5     78
dtype: int32
DataFrame替换操作
  • 单值替换

    • 普通替换
    • 按列指定单值替换{列标签:目标值}
  • 多值替换

  • 0
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值