更多优质内容
请关注公众号

Python数据分析基础之Pandas(四) 数据处理之数据清洗-张柏沛IT博客

正文内容

Python数据分析基础之Pandas(四) 数据处理之数据清洗

栏目:Python 系列:Python数据分析系列 发布时间:2019-12-09 16:27 浏览量:2206

数据清洗就是处理缺失数据以及清除无意义的信息,如删除原始数据集中的无关数据,重复数据,平滑噪声数据,筛选掉与分析主题无关的数据,处理缺失值和异常值等

1.重复值处理

先用Pandas 的 duplicated方法:返回一个布尔的Series,显示是否有重复行,没有的为False
有重复行的从重复的第二行显示为True

再用DataFrame的drop_duplicates处理

duplicated(subset=None,keep="first")

subset 要识别重复的列标签下标 默认所有列标签
keep=first 第一次出现的保留,其他重复的干掉
keep=last 最后一次出现的保留
keep=False 重复的都干掉

duplicated和drop_duplicates如果都没设参数,默认判断全部列


from pandas import Series,DataFrame as df

df1 = df(
    {
        "age":[26,84,64,85,85],
        "name":["Ben","John","Jerry","John","John"],
     }
)

print(df1)

print(df1.duplicated())

print(df1.duplicated('name'))

print(df1.drop_duplicates("age"))

print(df1.duplicated(['name',"age"]))   #必须name和age都重复才会为true

print(df1.drop_duplicates(["age","name"]))      #去除掉name和age都重复的行

# 结果:
# 
#    age   name
# 0   26    Ben
# 1   84   John
# 2   64  Jerry
# 3   85   John
# 4   85   John
# 0    False
# 1    False
# 2    False
# 3    False
# 4     True
# dtype: bool
# 0    False
# 1    False
# 2    False
# 3    False
# 4     True
# dtype: bool
#    age   name
# 0   26    Ben
# 1   84   John
# 2   64  Jerry
# 3   85   John


2.缺失值处理:

缺失的数据会引起偏估计
缺失值的处理包括两步:缺失值的识别和处理

识别:
Panda上使用浮点值NaN表示缺失数据,使用 .isnull和.notnull判断是否缺失

处理:
数据补齐,删除对应行,不处理

dropna() 去除数据有空的行,参数how="all"表示整行的数据都为空才删除;axis=1是删除列

fillna() 用其他数值替代NaN

# coding=utf-8
from pandas import DataFrame as df
from pandas import read_csv
import os

path = os.path.abspath(r"../material/rz2.csv")

df1 = read_csv(path)

print(df1)
#            学号  姓名  英语    数分    高代  解几
# 0  2308024241  成龙  76  40.0  23.0  60
# 1  2308024244  周怡  66  47.0  47.0  44
# 2  2308024251  张波  85   NaN  45.0  60
# 3  2308024249  朱浩  65  72.0  62.0  71
# 4  2308024219  封印  73  61.0  47.0  46
# 5  2308024201  迟培  60  71.0  76.0  71
# 6  2308024347  李华  67  61.0  65.0  78
# 7  2308024307  陈田  76  69.0   NaN  69
# 8  2308024326  余皓  66  65.0  61.0  71
# 9  2308024219  封印  73  61.0  47.0  46

print(df1.isnull()) #查看为null的df
print(df1.notnull())    #查看不为null的df

#去除有空值的行
print(df1.dropna())

#数据补齐
print(df1.fillna("?"))   #使用自定义字符或者数字补齐
print(df1.fillna(method="pad"))   #使用前一个数据补齐
print(df1.fillna(method="bfill"))  #使用后一个数据补齐
print(df1.mean())   #返回一个Series,记录每个列的平均值,只返回数值类型的列的平均值,字符串则忽略
print(df1.fillna(df1.mean()))    #使用平均数补齐
print(df1.fillna({"数分":100,"高代":0}))  #为不同列填充不同的值

#如果想对df中的列进行字符串处理可以使用他的str属性
print(df1['姓名'].str.strip())






更多内容请关注微信公众号
zbpblog微信公众号

如果您需要转载,可以点击下方按钮可以进行复制粘贴;本站博客文章为原创,请转载时注明以下信息

张柏沛IT技术博客 > Python数据分析基础之Pandas(四) 数据处理之数据清洗

热门推荐
推荐新闻