python数据清洗

数据的读写

用pandas

  • CSV格式
df=pd.read_csv('文件路径')
  • excel格式
df=pd.read_excel('文件路径')

数据的探索与描述

用pandas读取数据后,都是datafram格式的数据
查看数据的行列数

df.shape
  • 查看数据的概况
df.info()
  • 对数据进行简单的统计描述
df.describe()

数据简单处理

  • 去除数据间的空格
    查看是否有空格
 df.columns

提取列的名称

col=df.columns.values

列表推导式

df.columns=[x.strip() for x in col]

注:strip只能去除前后空格

  • 英文字母大小写的转换

重复值的处理

  • 寻找重复值
duplicated()
  • 当两条记录中所有的数据都相等时duplicated函数才会判断为重复值
  • duplicated支持从前向后(first),和从后向前(last)两种重复值查找模式
  • 默认是从前向后进行重复值的查找和判断,也就是后面的条目在重复值判断中显示为True
df.duplicated().sum()#即对重复值进行统计

产看重复值

df[df.duplicated()]
  • 删除重复记录
drop_duplicates(inplace=True)#inplace=True表示直接在源数据上进行操作

由于删除了原始数据,故需要对每一行数据前面的排列编号进行一次更新

df.index=range(df.shape[0])

缺失值的处理

  • 删除缺失值
  • 均值填补法
  • 向前填充/向后填充
  • 模型填补法

异常值的处理

查找相应的异常值

  • 大于三倍标准差
sta=(df['价格']-df['价格'].mean())/df['价格'].std()
df[sta.abs()>3]

节省大于价格的异常值

df[df.节省>df.价格]

提取出异常值的索引编号

delindex=pd.concat([df[df.节省>df.价格]],df[sta.abs()>3]]).index

根据提取出的索引编号删除源数据

df.drop(delindex,inplace=True)

查看处理后的数据

df.shape
  • 删除异常值的记录
  • 作为缺失值处理
df.isnull()#查看缺失值
df.notnull()#查看不是缺失值的数据
df.dropna()#删除缺失值
df.fillna()#填补缺失值

缺失值的统计

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

缺失值的填充
用平均值进行填充缺失值

df['价格'].fillna(round(df['价格'].mean(),0),inplace=True)
  • 平均值修正、盖帽法修正
  • 不处理:业务分析挖掘价值

文本字符串的处理

去除前后空格处理
处理中间有,()之类的数据:replace(’’,’’)
正则表达式提取所需数据
提取酒店评分

df['酒店评分']=df.酒店.str.extract('(\d\.\d)分/5分',expand=False)
\d表示数字
\.表示.
#引号中间的是提取的内容的形式,括号中间才是提取的真实内容
#数据中酒店评分的格式如:4.5、4.6
df['酒店评分']=df.酒店.str.extract(' (.+) ',expand=False)
#  .+表示所有内容
#整句话翻译就是,提取酒店列表中被两个空格中间的内容
df['天数']=df.路线名.str.extract('(\d+)天\d晚',expand=False)
\d+所有数字,不管有多少位
\d表示个位

时间格式序列的处理

将系统时间格式化
系统时间和时间戳相互转换
年月日提取

展开阅读全文

没有更多推荐了,返回首页

©️2019 CSDN 皮肤主题: 游动-白 设计师: 上身试试
应支付0元
点击重新获取
扫码支付

支付成功即可阅读