python数据清洗

以下是python数据清洗常用的方法,所用的数据在我的资源里可以下载

import numpy as np
import pandas as pd


if __name__ == "__main__":

    '''
    #显示完整数据的方法
    pd.set_option('display.max_columns', 1000)
    pd.set_option('display.width', 1000)
    pd.set_option('display.max_colwidth', 1000)
    '''

    df = pd.read_csv("./qunar_freetrip.csv",index_col=0)
    df.head()
    #print(df.head(5)) 查看数据集的前面多少行
    #print(df.shape)    查看数据集基本情况,多少行,几个特征
    #print(df.info())    查看数据集的结构

    '''print(df.describe())    描述数值型数据的统计mean(均值) 1765.714905   474.139878
    std(方差) 2580.129644  168.893780
    '''

    #print(df.columns)   查看可以引用的特征
    #print(df["价格 "])
    col = df.columns.values  #将人特征列表赋值给col  ['出发地 ' ' 目的地' '价格 ' '节省' '路线名' '酒店' '房间' '去程航司' '去程方式' '去程时间' '回程航司''回程方式 ' '回程时间']
    df.columns = [x.strip() for x in col]   #去除所有特征值中的空格


    #处理重复值


    #print(df.duplicated())     #判断是否有重复值,所有特征中的数据都相同,就会返回一个true
    #print(df[df.duplicated()])  #布尔索引,找到所有重复值的位置
    #print(df.duplicated().sum())    #统计一共有多少重复值
    df.drop_duplicates(inplace=True) #inplace=True,表示直接再源数据上进行操作
    #print(df.shape)
    '''
    a = df.drop_duplicates()
    print(a)
    print(df.shape)
    '''
    #print(range(df.shape[0]))   #查看数据的索引的范围
    #df.index = range(df.shape[0])  #更新数据的索引
    #print(df)


    #处理异常值

    #print(df.describe().T)     查看数值型数据的统计情况

    #找出异常值
    #sta = (df['价格']-df['价格'].mean())/df['价格'].std()

    #print(df[sta.abs()>3])      #绝对值大于3倍标准差

    #找出节省的异常值
    #print(df[df.节省>df.价格])

    #将两个数据异常的表租组合起来     pd.concat([df[df.节省>df.价格],df[sta.abs()>3]])
    #提取异常值的索引
    #delindex = pd.concat([df[df.节省>df.价格],df[sta.abs()>3]]).index
    #print(delindex)

    #在源数据集中删除异常的数据
    #df.drop(delindex,inplace=True)
    #print(df.shape)


    #缺失值处理

    #print(df.isnull().sum())    #查看数据中的缺失值

    #df.notnull() 查看不是缺失值的数据  df.dropna()  删除缺失值   df.fillna()  填补缺失值


    #print(df[df.出发地.isnull()])      #输出出发地是空值的数据

    #df.loc[df.出发地.isnull(),'出发地'] = [str(x)[:2] for x in df.loc[df.出发地.isnull(),'路线名']]

    #print([str(x)[:2] for x in df.loc[df.出发地.isnull(),'路线名']])


    #df.loc[df.目的地.isnull(),'目的地'] = str(df.loc[df.目的地.isnull(),'路线名'].values)[5:7]

    #print(df[df.目的地.isnull()])


    #均值填充解决异常值

    df['价格'].fillna(round(df['价格'].mean(),0),inplace=True)

    df['节省'].fillna(round(df['节省'].mean(), 0), inplace=True)

    print(df.isnull().sum())
  • 4
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值