AI智能
改变未来

python-pandas模块8-去重-函数与映射-替换值


pandas模块-去重-函数与映射-替换值

导入模块:

import numpy as npimport pandas as pdfrom pandas import Series,DataFramefrom numpy import nan as NA

1.去重

创建有重复的数据

df1 = DataFrame({\'k1\':list(\'aaabbbbccc\'),\'k2\':[1,1,2,2,3,3,3,4,2,1]},index=list(\'ABCDEFGHIJ\'))df1


之前学的方法

df1.k1.unique()

(1)通过 xxx.duplicated() 返回一个 是否是 重复数据的布尔序列

df1.k1.duplicated()


返回非重复的索引及其值

df1.k1[~df1.k1.duplicated()]


对重复值和非重复值技术

df1.k1.duplicated().value_counts()

(2)Series.drop_duplicates(keep=‘first’, inplace=False)

因为df1.k1取出来就是一个Series,所以这里直接用df1.k1

df1.k1.drop_duplicates()

df1.k1.drop_duplicates(keep=\'last\')

(3)DataFrame.drop_duplicates(subset=[ ] ,keep=‘first’ ,inplace = ‘False’)

参数:
subset = [列1,列2,…] 默认所有列相同的才丢掉,
keep=‘first’ 保留重复值的第一个index,
inplace = ‘False’ 不在原值去除

df1.drop_duplicates()

df1.drop_duplicates(subset=[\'k1\'])

df1.drop_duplicates(subset=[\'k2\'])

2.函数映射

创建一个DataFrame

df2 = DataFrame({\'nickname\':list(\'ABcd\'),\'unit\':[2,4,6,8]})df2

(1)已知 上述 abcd对应四种 动物 的简称。现在有个 字典中有四种,把四种动物增加到新列,首字母进行匹配
#先创建一个字典里面是abcd对应的动物名称animal = {\'b\':\'belt\',\'c\':\'cycle\',\'d\':\'donkey\',\'a\':\'ant\'}#先用函数将df2中的nickname列的值全转为小写df2.nickname.apply(lambda x:x.lower())#生成一个新列里面的值都是abcd对应的动物名称duiying=df2.nickname.apply(lambda x:animal[x.lower()])duiying#将新列加入df2df2[\'animal\']=duiyingdf2


(2)也可以用map()Series即可以使用apply操作与一列,也可以用map()操作于每个值
df2.nickname.map(str.lower)

3.替换值

先创建一个Series

s2 = Series([1,-999,100,-999,10,-1000,10,1000])s2

(1)将一个或多个值换成一个值

以前学的方法

s2.apply(lambda x:NA if x==-999 else x)


将一个值换成 NA

s2.replace(-999,NA)


将多个值换成一个值

s2.replace([-999,-1000],6666)

(2)将多个值换成多个值

方法1:

s2.replace([-999,-1000],[6666,7777])


方法2

s2.replace({-999:666,-1000:777})

赞(0) 打赏
未经允许不得转载:爱站程序员基地 » python-pandas模块8-去重-函数与映射-替换值