数据分析

技术数据分析 数据分析数据预处理
在本次数据分析过程中,缺失数据将被进一步划分成为三个部分,一类数据是数据为0的情况,一类是数据为空值的情况,一类是数据为特殊符号,例如“--”的数据。
针对不同的数据缺

数据分析

数据预处理

在这个数据分析过程中,缺失的数据会进一步分为三个部分,一是当数据为0时,二是当数据为空时,三是当数据带有特殊符号,如“-”时。

对于不同的数据缺失情况,本次分析将采用不同的处理方法:

1.对于数值为0的情况,需要进行实际分析,并返回原始数据,以确定数据为0时是否具有实际意义。如果没有,将其作为缺失值删除。

2.如果数据为空,如果该特征的缺失数据小于10%,将根据该特征的重要性进行综合判断。如果字段重要性较低,考虑直接删除;如果该字段的重要性较高,则使用插值或数据平均值来填充。

3.鉴于数据是一种特殊的符号,需要结合原始数据来判断数据是否缺失或异常。如果它是一个丢失的值,它将作为1操作处理。如果是异常值,将进行异常值处理,具体的异常值处理过程将在下面描述。

综合表:

XXX=pd.merge(XX,XX,how='left ',on='user_id ')

失踪率是:

total=df.isnull()。总和()。sort_values(升序=False)

百分比=df.isnull()。sum()/df.isnull()。count())。sort_values(升序=False)

missing _ data=PD . concat([合计,百分比],轴=1,键=['合计','百分比'])

missing_data.head(50)

XXX . apply(lambda x : sum(x . is null())/len(x))

缺失率可视化:

将missingno作为msno导入

%matplotlib内联

msno.matrix(XXX)

msno.bar(XXX)

删除XX中具有空值的行

XXX=XXX.dropna(轴=0,子集=['XX'])

填充空值

df1.fillna(0,inplace=True)

2.dffillna(方法=' pad') #用以前的值填充。

df2.fillna(方法='bfill ',极限=2,轴=1)

使用pandas_profiling生成各个领域的详细报告:

导入熊猫_简介

熊猫_侧写。简档报告(XXX)

相关热图:

msno .热图(XXX)

两个变量的无效相关范围是从-1(如果一个变量出现,另一个肯定不出现)到0(如果一个变量出现或不出现,对彼此没有影响)到1(如果一个变量出现,另一个肯定出现)。

数据缺失或缺失对相关性没有意义,所以图中没有相关性。在图中,大于-1和小于1表示强正相关和负相关,但因为有少量脏数据,所以不是绝对的。在处理数据时,需要注意其中的一些例外。

观察两个变量之间的相关性很方便,但是当数据集变大时,这个结论的可解释性就会变差。

msno .树木图(XXX)

树形图使用scipy提供的层次聚类算法,通过变量的无效相关性(根据二进制距离度量)将变量相互添加。在树的每一步中,变量根据哪个组合最小化剩余聚类的距离来划分。变量集的单调,它们的总距离越接近零,它们的平均距离越接近零。

距离为0的变量可以相互预测。当一个变量被填充时,另一个总是空的或填充的,或者两者都是空的。

叶子的高度显示了预测误差的频率。

异常值:

图,ax=plt .子图(1,1,figsize=(8,5))

df.boxplot(列='Volume ',ax=ax)

plt.show()

s=df[

'Volume']
print(s.describe())
df_= df.copy()
mean1 = df['Volume'].quantile(q=0.25)#下四分位差
mean2 = df['Volume'].quantile(q=0.75)#上四分位差
mean3 = mean2-mean1#中位差
topnum2 = mean2+1.5*mean3
bottomnum2 = mean2-1.5*mean3
print("正常值的范围:",topnum2,bottomnum2)
print("是否存在超出正常范围的值:",any(df['Volume']topnum2))
print("是否存在小于正常范围的值:",any(df['Volume']bottomnum2))
import matplotlib.pyplot as plt
plt.boxplot(x=df['Volume'])
plt.show()
replace_value1=df['Volume'][df['Volume']topnum2].max()
df.loc[df['Volume']topnum2,'Volume']=replace_value1
replace_value2=df['Volume'][df['Volume']bottomnum2].min()
df.loc[df['Volume']bottomnum2,'Volume']=replace_value2

综合模型

import time
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
import os
from sklearn.model_selection import train_test_split
from sklearn.preprocessing import StandardScaler
from pylab import mpl
mpl.rcParams['font.sans-serif'] = ['SimHei']
from matplotlib import rcParams
from sklearn.linear_model import LinearRegression
from sklearn.neighbors import KNeighborsRegressor
from sklearn.svm import SVR
from sklearn.linear_model import Lasso
from sklearn.linear_model import Ridge
from sklearn.neural_network import MLPRegressor
from sklearn.tree import DecisionTreeRegressor
from sklearn.tree import ExtraTreeRegressor
from pylab import mpl
import sklearn as sns
from scipy.stats import norm
from scipy import stats
import warnings
warnings.filterwarnings("ignore")
%matplotlib inline
from sklearn.ensemble import RandomForestRegressor
from sklearn.ensemble import GradientBoostingRegressor
from sklearn.ensemble import BaggingRegressor
x1=df1.loc[:,df1.columns!='总价']
y1=df1.loc[:,'总价']
x_dum=pd.get_dummies(x1)
scale_x=StandardScaler()
x2=scale_x.fit_transform(x_dum)
scale_y=StandardScaler()
y1=np.array(y1).reshape(-1,1)
y2=scale_y.fit_transform(y1)
y2=y2.ravel()
y_log=np.log(y)
x3_train,x3_test,y3_train,y3_test = train_test_split(x_dum,y_log,test_size = 0.3,random_state = 1)
from xgboost import XGBRegressor
models=[DecisionTreeRegressor(),RandomForestRegressor(),GradientBoostingRegressor(),BaggingRegressor()]
models_str=['DecisionTree', ' XGBoost','RandomForest' , ' GradientBoost',' Bagging']
score_adapt=[]
ypred=np.zeros(x3_test.shape[0],)
for name, model in zip(models_str, models) :
print('开始训练模型:'+name+'平滑处理')
model=model#平熠处理=logy
model.fit (x3_train,y3_train)
y_pred=model.predict(x3_test)
score=model.score(x3_test,y3_test)
ypred_original=np.e**y_pred
ypred_original=ypred_original*0.2
ypred+=ypred_original
score_adapt. append(str(score)[:5])

内容来源网络,如有侵权,联系删除,本文地址:https://www.230890.com/zhan/100414.html

(0)

相关推荐

  • 离职后公积金可以全部取出来吗,辞职后能全部提取公积金吗

    技术离职后公积金可以全部取出来吗,辞职后能全部提取公积金吗如果是外地户口员工离职后公积金可以全部取出来吗,在和单位解除劳动关系之后,员工是可以申请提取住房公积金的,而且是可以申请销户提取,是可以将住房公积金账户内所有余额

    生活 2021年10月31日
  • Golang和Lua相遇会擦出什么火花

    技术Golang和Lua相遇会擦出什么火花这篇文章主要介绍“Golang和Lua相遇会擦出什么火花”,在日常操作中,相信很多人在Golang和Lua相遇会擦出什么火花问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操

    攻略 2021年11月9日
  • oracle sql调优

    技术oracle sql调优 oracle sql调优oracle的sql优化]基于oracle的sql优化
    【博主】高瑞林
    【博客地址】http://www.cnblogs.com/grl214一.编

    礼包 2021年12月3日
  • sparkmllib算法实例(sparkmllib系统推荐)

    技术如何进行SparkMllib主题模型案例的分析如何进行SparkMllib主题模型案例的分析,很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获

    2021年12月17日
  • Ubuntu20.04如何安装wxWidgets-3.1.3

    技术Ubuntu20.04如何安装wxWidgets-3.1.3这篇文章主要介绍了Ubuntu20.04如何安装wxWidgets-3.1.3,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获

    攻略 2021年11月15日
  • css如何引入外部样式表

    技术css如何引入外部样式表这篇文章将为大家详细讲解有关css如何引入外部样式表,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。 引入方法:1、使用link标

    攻略 2021年11月11日