Python数据分析和特征处理

数据处理过程

一般步骤

  • 定义所要解决的问题,针对该问题得到一些基础的想法
  • 查阅与问题相关的文献,找到适合解决问题的几种方法
  • 然后改进这些方法以适合自己的要求

了解数据

  • 理解问题:查看数据的每一个变量,并对其进行简单分析,把认为最重要的几个挑出来
  • 单因素分析:关注因变量,并对其深入分析
  • 多因素研究:分析因变量与自变量之间的关系
  • 数据清洗:处缺失数据和异常值
  • 检验假设:检查数据是否和多元分析方法的假设达到一致

准备工作

  • 变量:变量的名字
  • 变量类型:数值或者类别
  • 划分:按种类划分变量
  • 期望:我们所期望变量所达到的对自变量的影响程度
  • 结论:对该变量得出的重要结论,最好与期望一致

Python数据描述与处理

因变量数据描述

#绘制直方图
sns.distplot(df['Dependent variable']);

#数据偏度和峰度
print("Skewness: %f"%df['Dependent variable'].skew())
print("Kurtosis: %f"%df['Dependent variable'].kurt())

相关性变量分析

#因变量与数值型变量关系
#绘制散点图,查看与变量的关系
df.plot.scatter(x=var,y=depvar)

#因变量与类别型变量关系
#绘制箱线图,查看趋势
sns.boxplot(x= ,y= ,data= )

#相关系数矩阵
corrmat = df.corr()
#热图
sns.heatmap(corrmat)

#因变量以及相关变量彼此之间的散点图
sns.set()
cols=[var......]
sns.pairplot(df[cols])
plt.show()

缺失数据处理

缺失数据是否具有普遍性?
缺失数据是否有律可循?
我们需要保证缺失数据的处理不会出现偏离或者隐藏任何难以忽视的真相

#将每个变量的缺失占比排序
total = df.isnull().sum().sort_values(ascending=False)
percent = (df.isnull().sum()/df.isnull.count).sort_values(ascending=False)
missing_data = pd.concat([tol,percent],axis=1,keys=['Total','Percent'])
print(missing_data.head(number))
#当有15%的数据缺失时,应该删除改变量,并认为该变量应该不存在

单因素分析

单因素分析的关键是建立阈值,定义一个观察者为异常值。我们对数据进行正态化,均值为0,方差为1。

scaled = StandardScaler().fit_transform(df['Dependent variable'][:,np.newaxis]#标准化
low_range = scaled[scaled[:,0].argsort()[:k]#取前k个
high_range = scaled[scaled[:,0].argsort()[-k:]#取后k个

双变量分析

画出散点图,查看离群值,删除它

data.plot.scatter(x=var, y='dependent variable');

应用多元技术

  • 正态性
  • 同方差性
  • 线性
  • 相关错误缺失

1.正态性:

#直方图——峰值和偏度
#正态概率图——数据分布应紧密跟随正态分布对角线
sns.distplot(df['dependent variable'],fit=norm)
res = stats.probplot(df['dependent variable'],plot=plt)

#可用对数变化解决不不跟随正太分布对角线的问题
df['dependent variable'] = np.log(df['dependent variable'])

2.同方差性:

#绘制散点图查看
plt.scatter(df_train['var'],df_train['dependent variable']);

3.虚拟变量

#将类别型变量转化为虚拟变量
df = pd.get_dummies(df)

这主要是多元技术的应用,数据处理可以有很多种方法,博主也正在努力学习中。

猜你喜欢

转载自blog.csdn.net/qq_40707407/article/details/80991229
今日推荐