数据清洗

有不足之处请多多指教

*本文数据来自华中地区数学建模 数据有10万行之多 研究问题为糖尿病的大数据分析 笔者主要介绍数据预处理部分

工欲善其事,必先利其器

pyhton环境配置

python官方下载地址https://www.python.org/

找到对应操作系统下的python

最新版本为3.7 笔者所用版本为3.6

Anaconda 安装

官方提供的下载地址https://www.anaconda.com/download/

上述网站的下载速度较慢且容中断,推荐使用清华大学开源软件镜像站提供的下载接

https://mirrors.tuna.tsinghua.edu.cn/

anaconda/archive/

包导入/数据导入

from pandas import Series,DataFrame

from pandas import read_csv

df = read_csv(r'c://Users//Linaom//Desktop//demo//data.csv')

df.shape #查看数据

Out[170]: (101766, 50)

#观察数据发现以下数据缺失较多

x2 = df.payer_code.count()

x3 = df.medical_specialty.count()

pre_x1 = (len(df)-x1)/len(df)

pre_x2 = (len(df)-x2)/len(df)

pre_x3 = (len(df)-x3)/len(df)

data={'缺失率':[pre_x1 ,pre_x2 ,pre_x3 ],'type':['weight', 'payer_code' ,'medical_specialty']}

pre_=DataFrame(data)

#给出缺失率

pre_

Out[173]:

type 缺失率

0 weight 0.968585

1 payer_code 0.395574

2 medical_specialty 0.490822

#缺失数据处理

del df['weight']

del df['payer_code']

df['medical_specialty']=df["medical_specialty"].fillna("missing")

#删除缺失率较高的 weight payer_code 暂时保留medical_specialty 可能与题目研究问题相关

#重复值处理 集中在多次入诊病人

df.duplicated(['patient_nbr']).tail() #显示重复数据后五行

df[df.duplicated(['patient_nbr'])] #全部显示重复数据

df1=df.drop_duplicates(['patient_nbr']) #删除重复数据

df1.isnull().tail() #显示空行

df1.isnull().any() #显示空列

df1[df1.isnull().values==True]

df1=df1.dropna(axis=0, how='any') #删除空行

df1.shape

Out[177]: (68358, 48) #预处理后的数据

数据的保存

df1.to_csv("c://Users//Linaom//Desktop//data1.csv", index=False);

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20180726G0PS7200?refer=cp_1026
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

扫码关注云+社区

领取腾讯云代金券