首页 > 其他 > 详细

数据分析之基于pandas的数据清洗

时间:2020-06-30 17:26:07      阅读:67      评论:0      收藏:0      [点我收藏+]

处理丢失数据

  • 有两种丢失数据:
    • None
    • np.nan(NaN)
import pandas as pd
from pandas import DataFrame
import numpy as np

>>>type(np.nan)
float
  • 在pandas中如果遇到了None形式的空值则pandas会将其强转成NAN的形式。
np.nan + 1
结果: nan

pandas处理空值操作

  • isnull
  • notnull
  • any
  • all
  • dropna
  • fillna
# drop中axis 0:行,1:列
df.drop(labels=[‘none‘,‘none1‘],axis=1,inplace=True)            #1.将空对应的行数据删除

# any用来检测isnull返回的行中是否存在True,如果存在true,则该行返回ture
df.isnull().any(axis=1)
结果:
      0        True
      1       False
      2        True
      3        True
      4       False
      5        True
df.notnull().all(axis=1) #检测notnull返回的行中是否有False,如果存在false,则该行返回false
结果:
      0       False
      1        True
      2       False
      3       False
      4        True
      5       False

# 高级用法:直接将存有缺失数据的行删除
df.dropna(axis=0)
  • 将空值进行填充,使用空值的近邻值进行空值的填充
df.fillna(value=-999) #使用指定的值填充所有的空值

df.fillna(method=‘bfill‘,axis=0) #使用近邻值填充, bfill是前面,afill是后面

练习:自定义一个携带空值的df,然后要求使用列的均值填充列中的空值

df = DataFrame(data=np.random.randint(0,100,size=(10,8)))
df.iloc[1,3] = None
df.iloc[3,4] = np.nan
df.iloc[5,5] = np.nan
df.iloc[2,4] = np.nan
df.iloc[2,5] = np.nan

#使用列的均值填充每一列中的缺失值
for col in df.columns:
    #将存有空值的列找到
    if df[col].isnull().sum() > 0:
        df[col] = df[col].fillna(value=np.mean(df[col]))
# 处理一些重复的行数据,keep=last保留重复的最后一行,first保留第一行
df.drop_duplicates(keep=‘last‘)

处理异常数据

  • 自定义一个1000行3列(A,B,C)取值范围为0-1的数据源,然后将C列中的值大于其两倍标准差的异常值进行清洗
df = DataFrame(data=np.random.random(size=(1000,3)),columns=[‘A‘,‘B‘,‘C‘])
df.head()

#判定异常值的条件
std_twice = df[‘C‘].std() * 2
std_twice

#将存有异常值的行进行删除
df[‘C‘] > std_twice
#将存有异常值的行数据取出
df.loc[df[‘C‘] > std_twice]
indexs = df.loc[df[‘C‘] > std_twice].index #获取异常值对应行的行索引
df.drop(labels=indexs,axis=0)

数据分析之基于pandas的数据清洗

原文:https://www.cnblogs.com/freedom0923/p/13214822.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!