Pandas笔记6----------Pandas重复值处理、数据映射、异常值检测和过滤、抽样

1.删除重复行

  • 使用duplicated()函数检测重复的行
    • 返回元素为布尔类型的Series对象
    • 每个元素对应一行,如果该行不是第一次出现,则元素为True
    • 参数keep:first(标记重复行第一次出现的位置)、last(标记重复行最后一次出现的位置,默认)、False(标记所有重复行的位置)
    • 参数subset:在每一行对比时,只比较此列数据是否有重复值
import numpy as np
import pandas as pd
def make_df(indexs,columns):
    data = [[str(j)+str(i) for j in columns] for i in indexs]
    df = pd.DataFrame(data=data,index=indexs,columns=columns)
    return df
df = make_df([1,2,3,4],list('ABCD'))
df.loc[1] = df.loc[2]
print(df)
print('#####################################')
print(df.duplicated())
print('#####################################')
print(df.duplicated(keep='first'))
print('#####################################')
print(df.duplicated(keep='last'))
print('#####################################')
print(df.duplicated(keep=False))
print('#####################################')
print(df.duplicated(subset=['A','B']))
  • 使用drop_duplicates()函数删除重复行
    • 如果两行不完全重复,则无法直接删除,须使用subset参数
    • 使用keep参数控制保留哪一数据
import numpy as np
import pandas as pd
def make_df(indexs,columns):
    data = [[str(j)+str(i) for j in columns] for i in indexs]
    df = pd.DataFrame(data=data,index=indexs,columns=columns)
    return df
df = make_df([1,2,3,4],list('ABCD'))
df.loc[1] = df.loc[2]
df.loc[1,'D'] = 'F'
print(df)
print('#####################################')
print(df.drop_duplicates(subset=['A', 'B', 'C']))
print('#####################################')
print(df.drop_duplicates(subset=['A', 'B', 'C'],keep='last'))

2.数据映射

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

  • replace()函数:替换元素
import numpy as np
import pandas as pd
data = np.array([
    [60, 70, 80, 90],
    [65, 75, 85, 95],
    [62, 72, 82, 92],
    [68, 78, 88, 98]
])
index = ['小明','小红','小王','小张']
columns = ['Python','Java','C++','C#']
df = pd.DataFrame(data=data,index=index,columns=columns)
print(df)
print('####################################')
df2 = df.replace({85:101,98:102})
print(df2)
  • map()函数:适合处理某一单独的列,一般用在Series,不能用于DataFrame,可以使用lambda函数
import numpy as np
import pandas as pd
data = np.array([
    [60, 70, 57, 90],
    [65, 55, 78, 95],
    [62, 93, 82, 92],
    [68, 78, 99, 98]
])
index = ['小明','小红','小王','小张']
columns = ['
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值