数据分析

技术数据分析 数据分析数据预处理
在本次数据分析过程中,缺失数据将被进一步划分成为三个部分,一类数据是数据为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)

相关推荐

  • kafka zookeeper存储结构图是怎样的

    技术kafka zookeeper存储结构图是怎样的这期内容当中小编将会给大家带来有关kafka zookeeper存储结构图是怎样的,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。ka

    攻略 2021年11月12日
  • 四大洋面积从大到小排,四大洋中哪个是最大,哪个最小

    技术四大洋面积从大到小排,四大洋中哪个是最大,哪个最小冰洋 北冰洋位于地球的最北面,大致以此北极为中心,介于亚洲、欧洲和北美洲北岸之间,是四大洋中面积和体积最小、深度最浅的大洋。面积约为1479万平方千米,仅占世界大洋面

    生活 2021年10月26日
  • Java基础之如何理解Object源码

    技术Java基础之如何理解Object源码本篇内容主要讲解“Java基础之如何理解Object源码”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“Java基础之如何理解Obje

    攻略 2021年10月23日
  • TiDB用什么保证备份的一致性

    技术TiDB用什么保证备份的一致性TiDB用什么保证备份的一致性,针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。背景作为一名MySQL DBA,就应该了解

    攻略 2021年11月30日
  • Javascript中DOM、节点和获取元素的示例分析

    技术Javascript中DOM、节点和获取元素的示例分析这篇文章给大家分享的是有关Javascript中DOM、节点和获取元素的示例分析的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。DOM文

    攻略 2021年11月2日
  • 数据库的语句应该如何优化

    技术数据库的语句应该如何优化这篇文章主要介绍了数据库的语句应该如何优化,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。  在MySQL数据库怎么加快查询速度

    攻略 2021年10月26日