有不足之处请多多指教
*本文数据来自华中地区数学建模 数据有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);
领取专属 10元无门槛券
私享最新 技术干货