Python数据清洗

数据清洗

一. 数据的读写

import pandas as pd
df = pd.read_csv('文件路径',index_col=0) # 读取csv文件,index_col将某行作为数据的索引
df = pd.read_excel('文件路径') # 读取Excel文件
df.head(num) # 查看数据 num代表行数,无则为全部数据
eg:
df = pd.read_csv('test.csv')

二. 数据的探索与描述

df.shape  # 查看数据的形状 (行,列)
df.info() # 了解数据的结构
df.describe() # 显示数值型数据的的描述统计
df.describe().T # 行列转置

三. 数据简单处理

df.columns # 查看列名
df.列名 或者 df['列名']# 查看这列的全部信息
col = f.columns.values # 提取列名值
df.columns = [x.strip() for x in col] # 去掉列名中的空格

四.重复值的处理

df.duplicated() #查找并显示数据表中的重复值的位置 返回布尔型数据(true为有重复值,反之亦然) 
#注意:只有当两条记录所有的数据都相等时duplicated函数才会判断为重复值
# 默认是从前向后进行重复值的查找和判断(两行相同,会判断后者为重复值)
df[df.duplicated()] #显示所有重复值的信息
df.duplicated().sum() # 计算重复值的个数
df.drop_duplicates(inplace=True) # 删除数据表中的重复值, 参数inplace代表是否在原数据集中删除(true 代表原数据集操作)
df.index = range(df.shape[0]) # 索引重置

五.异常值的处理

"""
1.删除异常值的记录
2.作为缺失值处理
3.平均值修正、盖帽法修正
4.不处理 业务分析挖掘价值
"""
eg:
# 3倍标准差 找出'价格'异常值
 sta = (df.['价格']-df.['价格'].mean())/df['价格'].std()
 df[sta.abs()>3]
#找出'节省'异常值
df[df.节省>df.价格]
# 注意: 对于建模来说,通常会删掉异常值 但对于业务来说,异常值可能包含有更多的价值
# 删除异常值
delindex = pd.concat([df[df.节省>df.价格], df[sta.abs()>3]]).index #concat 将表拼接
df.drop(delindex, inpalce=True) # drop 删除表

六.缺失值的处理

"""
1.删除缺失值
2.均值填补法
3.向前填充/向后填充
4.模型填补法, 如随机森林
"""
"""
df.isnull() # 查看缺失值
df.notnull() # 查看不是缺失值的数据
df.dropna() # 删除缺失值
df.fillna() # 填补缺失值
"""
eg:
df.isnull().num() # 查看缺失值数量
# 出发地数据缺失(根据其它数据提取补充)
df.loc[df.出发地.isnull(), '出发地']= [str(x)[:2] for x in df.loc[df.出发地.isnull(),'路线名']]  # df.loc[] 区域选取
# 目的地数据缺失(根据其它数据提取补充)
df.loc[df.出发地.isnull(), '目的地']=str(df.loc[df.出发地.isnull(),'路线名'].values)[5:7]
# 价格缺失值 (取平均值填充)
df['价格'].fillna(round(df['价格'].mean(),0),inplace=True)
# 节省缺失值 (取平均值填充)
df['节省'].fillna(round(df['节省'].mean(),0),inplace=True)

七.文本字符串的处理

"""
1.去除前后空格处理
2.处理中间有,()之类的数据,使用replace(',','')
3.正则表达式提取所需数据
"""
# 提取酒店评分
df['酒店评分']=df.酒店.str.extract('(\d.\d)分/5分',expend=False)  # expend=False 返回index expend=True 返回DataFrame

# 提取酒店等级
df['酒店等级']=df.酒店.str.extract('(.+)',expend=False)

八. 时间格式序列的处理

"""
1.将系统时间格式化
2.系统时间和时间戳相互转换
3.年月日的提取
"""
posted @ 2022-02-19 16:03  泡面爱吃冰淇淋  阅读(173)  评论(0)    收藏  举报