pandas数据处理
1、删除重复元素
使用duplicated()函数检测重复的行,返回元素为布尔类型的Series对象,每个元素对应一行,如果该行不是第一次出现,则元素为True
-
使用drop_duplicates()函数删除重复的行
-
使用duplicated()函数查看重复的行
import numpy as np
import pandas as pd
from pandas import Series,DataFramedf=DataFrame(data=np.random.randint(0,100,size=(8,3)),columns=list(“ABC”))
df.loc[3]=df.loc[1]
df.loc[5]=df.loc[1]
df
#=================================
A B C
0 63 33 92
1 72 16 51
2 60 8 16
3 72 16 51
4 52 80 19
5 72 16 51
6 8 85 40
7 91 14 14 -
keep表示要保留哪一个重复行,first保留第一个,last表示保留最后一个
df.duplicated(keep=“last”) -
可以借助dupicated函数来过滤出重复的行
df[df.duplicated(keep=“first”)] -
可以使用重复行的索引对重复行进行删除
df.drop(df[df.duplicated(keep=“first”)].index) -
可以直接使用drop_duplicates删除重复行
df.drop_duplicates(keep=“first”) -
如果使用pd.concat([df1,df2],axis = 1)生成新的DataFrame,新的df中columns相同,使用duplicate()和drop_duplicates()都会出问题
- 映射
映射的含义:创建一个映射关系列表,把values元素和一个特定的标签或者字符串绑定
包含三种操作:
- replace()函数:替换元素(DataFrame\Series的函数)
- 最重要:map()函数:新建一列(Series的函数)
- rename()函数:替换索引(DataFrame的函数)
- replace()函数:替换元素
使用replace()函数,对values进行替换操作
dic = {
"name":["lucy","mery","tom"],
"age":[29,25,18],
"address":["北京",np.nan,"上海"]
}
df = DataFrame(data=dic)
df
#======================================================
address age name
0 北京 29 lucy
1 NaN 25 mery
2 上海 18 tom
-
单值替换
df.replace(to_replace=“北京”, value=“广州”, inplace=True) -
多值替换,使用列表
df.replace(to_replace=[“广州”,np.nan], value=[“北京”,“深圳”])