数据分析

数据处理

在处理数据之前需要导入数据分析相关numpy,pandas,matplotlib.pyplot,seaborn(是matplotlib更高级的API封装,为其补充物而不是替代物)
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
import seaborn as sns

Step1: Exploratory Data Analysis

读入的数据框为df_train

  • 查询信息字段名字和类型,均值方差
  • df_train.describe()
  • 查询变量的取值范围
  • df['wether'].unique()
  • 看是否存在missing value
  • df_train.count()
  • df.loc[df.weather.isnull(),'weather']
  • 删除不需要的字段
  • df_train=df_train.drop(['datetime','casual','registered'], axis = 1
  • 数据列与列之间联结
  • df = pd.concat([data_train, dummies_Cabin, dummies_Embarked, dummies_Sex, dummies_Pclass], axis=1)
  • 按正则表达式提取列
    test=df_test.filter(regex='Age_.*|SibSp|Parch|Fare_.*|Cabin_.*|Embarked_.*|Sex_.*|Pclass_.*')
  • 时间数据处理:通常将月日小时单独拎出来,添加到原数据框,df_train[’ xxx’]为已预处理好数据框的新增列
df_train['month'] = pd.DatetimeIndex(df_train.datetime).month
df_train['day'] = pd.DatetimeIndex(df_train.datetime).dayofweek
df_train['hour'] = pd.DatetimeIndex(df_train.datetime).hour
数据可视化

subplot
在画图便签中显示中文字,需要添加以下代码

from pylab import *  
mpl.rcParams['font.sans-serif'] = ['SimHei']  
import matplotlib.pyplot as plt
import seaborn as sns #要注意的是一旦导入了seaborn,matplotlib的默认作图风格就会被覆盖成seaborn的格式
sns.distplot(births['prglngth'])
sns.plt.show()
df_train_origin.groupby('windspeed').mean().plot(y='count', marker='o')# 对windspeed分组求平均

# scatter一下各个维度,plot的对象时数据框,参数axs为位置
fig, axs = plt.subplots(2, 3, sharey=True)
df_train_origin.plot(kind='scatter', x='temp', y='count', ax=axs[0, 0], figsize=(16, 8), color='magenta')#散点图主要适合特征取值较多的类目值或者连续值

plt.subplot2grid((2,3),(0,0)) # 在一张大图里分列几个小图
df_train.Data.value_counts().plot(kind='bar')#柱状图主要适合0-1特征取值较少
plt.title(u"获救情况 (1为获救)") # 添加图片标题
plt.ylabel(u"人数") 

#分组绘制密度曲线图
data_train.Age[data_train.Pclass == 1].plot(kind='kde')   # plots a kernel desnsity estimate of the subset of the 1st class passanges's age
data_train.Age[data_train.Pclass == 2].plot(kind='kde')
data_train.Age[data_train.Pclass == 3].plot(kind='kde')
plt.xlabel(u"年龄")# plots an axis lable
plt.ylabel(u"密度") 
plt.title(u"各等级的乘客年龄分布")
plt.legend((u'头等舱', u'2等舱',u'3等舱'),loc='best') # sets our legend for our graph. 

#箱线或者柱状图观察特征
data.boxplot(column=['EMI_Loan_Submitted'],return_type='axes')
df.boxplot(column='Fare', by = 'Pclass')#分组箱图
plt.hist(df['Fare'], bins = 10, range =(df['Fare'].min(),df['Fare'].max()))
# 来看看相关度咯
corr =df_train_origin[['temp','weather','windspeed','day', 'month', 'hour','count']].corr()
# 用颜色深浅来表示相关度
plt.figure()
plt.matshow(corr)
plt.colorbar()
plt.show()

Data Processing 数据处理

1、运用逻辑回归建模的时候,输入的特征都是数值型特征,故需要将类目型特征离散/因子化

  • prefix 类目化的前缀
    • dummies_Cabin = pd.get_dummies(data_train['Cabin'], prefix= 'Cabin')
  • 查看各个变量缺省值个数(lambda x 指代前面data)
    • data.apply(lambda x: sum(x.isnull()))
  • 每个变量不同取值出现的次数(value_counts()代表分组计数)
var = ['Gender','Salary_Account','Mobile_Verified','Var1','Filled_Form','Device_Type',
  • 3
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值