前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >关于数据分析之空值处理

关于数据分析之空值处理

作者头像
python与大数据分析
发布2022-03-11 17:01:11
1.1K0
发布2022-03-11 17:01:11
举报
文章被收录于专栏:python与大数据分析

空值是数据分析中经常遇到的情况,让人无所适从,是当垃圾数据一样抛弃,还是置一些缺省值,尚未定论。就本人而言如果是文本型的一般会填充某个从未遇到的缺省值来替代,如果是数值,一般用加权平均代替,当然有更多的方法。 下图为几条样例数据,关于学生成绩的。

要进行缺失值分析,首先要进行数据读取,下文是读取csv文件的几个例子。

代码语言:javascript
复制
import numpy as np
from sklearn import neural_network
import pandas as pd
mydata= pd.read_csv('C:\Python\Pycharm\machine\schoolrecord.csv')
print('---------------------------行列取值-----------------------------')
print( '\norgdata=\n',mydata)
columnname=['id','maths','english']
newdata=mydata[columnname]
print( "\nmydata[['id','maths','english']]=\n",newdata)
newdata=mydata.iloc[:,3]
print( '\nmydata.iloc[:,3]=\n',newdata)
newdata=mydata.loc[:,'maths']
print( "\nmydata.loc[:,'maths']=\n",newdata)
newdata=mydata['maths']
print( "\nmydata['maths']=\n",newdata)
newdata=mydata.maths
print( '\nmydata.maths=\n',newdata)
row=mydata.loc[:,'maths']
print( "\nmydata.loc[:,'maths']=\n",row)

下列代码是关于缺失值构造的几种常规方法,填0、填平均值、填上一列上一行值。

代码语言:javascript
复制
print('---------------------------空值处理-----------------------------')
mydata= pd.read_csv('C:\Python\Pycharm\machine\schoolrecord.csv')
print( '\nmydata.isna()=\n',mydata.isna())
# 空值填充0
mydata.fillna(0,inplace=True)
print(mydata)
print( '\nmydata.fillna(0,inplace=True)=\n',mydata)

mydata= pd.read_csv('C:\Python\Pycharm\machine\schoolrecord.csv')
print('\nmydata.mean()\n=',mydata.mean())
# 空值填充均值
mydata.fillna(mydata.mean(),inplace=True)
print( '\nmydata.fillna(mydata.mean(),inplace=True)=\n',mydata)

mydata= pd.read_csv('C:\Python\Pycharm\machine\schoolrecord.csv')
# 空值错行填充
mydata.fillna(method='ffill',inplace=True)
print( "\nmydata.fillna(method='ffill',inplace=True)=\n",mydata)
mydata= pd.read_csv('C:\Python\Pycharm\machine\schoolrecord.csv')
# newdata=mydata.fillna(method='ffill',axis=1,inplace=True)  、
# 直接用inplace语法会抛出异常:raise NotImplementedError()
# 空值错列填充
newdata=mydata.fillna(method='ffill',axis=1)
print( "\nmydata.fillna(method='ffill',axis=1)=\n",newdata)

下文是通过多层感知机进行缺省值预测,也称为多层神经网络(大于等于3层,即至少含有1层隐含层),也称为全连接神经网络。

最简单的MLP只含一个隐层,即三层的结构

代码语言:javascript
复制
# 通过机器学习MLP神经网络算法填充缺失值
mydata= pd.read_csv('C:\Python\Pycharm\machine\schoolrecord.csv')
newdata=mydata.sort_values(by=['maths'],na_position='last')
print('\nnewdata=\n',newdata)
# 获取非空的训练集
train_x=newdata.iloc[:7,1:3]
print('\ntrainx=\n',train_x)
# 获取非空的结果集
train_y=newdata.iloc[:7,3:4]
print('\ntrainy=\n',train_y)
# 多层感知器分类器-MLPClassifier
model=neural_network.MLPClassifier()
# 进行模型训练
model.fit(train_x,train_y)
# 获取空的测试集
test_x=newdata.iloc[7:,1:3]
# 进行模型预测
test_y=model.predict(test_x)
print('\ntest_x=\n',test_x)
print('\ntest_y=\n',test_y)
newdata.iloc[7:,3:4]=test_y.tolist()
print('\nmydata=\n',mydata)
print('\nnewdata=\n',newdata)
本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2021-10-18,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 python与大数据分析 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档