Exploratory Data Analysis

本文介绍了数据预处理的重要步骤,包括缺失值分析与处理。通过统计和可视化方法识别缺失值比例,并提出相应处理策略,如丢弃、填充和预测。同时,对异常值进行了处理,采用盖帽法修正了异常值。此外,对数据分布进行了分析,包括定量数据的直方图、KDE图和频次直方图,以及定性数据的偏态和峰态测量。这些步骤为后续的数据分析和建模奠定了基础。
摘要由CSDN通过智能技术生成

一、数据质量分析

1.1 缺失值分析

df.info()
df.describe()

# df.isna().sum()
missing = df.isnull().sum().reset_index().rename(columns={0:'missNum'}) # 缺失值统计
# df.isna().mean()
missing['missRate'] = missing['missNum'] / df.shape[0] # 缺失值比例
miss_analy = missing[missing.missRate>0].sort_values(by='missRate', ascending=False) # 按缺失率排序

# 缺失比可视化
null_ = data.isna().mean().reset_index().sort_values(by=0)
null_1 = null_.rename(columns={'index':'特征',0:'缺失比'}).reset_index(drop=True)

plt.figure(figsize=(8,6))
sns.kdeplot(null_1['缺失比'],shade=True)

plt.figure(figsize=(8,6))
plt.barh(range(null_1.shape[0]),null_1['缺失比'],label='缺失比')
plt.legend(loc=4)
plt.ylabel('特征变量',fontsize=15);

# --------------------------------------
import missingno as msno
msno.matrix(df, labels=True) # 矩阵图

plt.style.use('seaborn')
%matplotlib inline
msno.bar(df, labels=True, sort='descending')

msno.heatmap(df) # 相关性热图

1.2 缺失值处理

  • 缺失比例超80%:丢弃列或行。
  • 缺失比例30%-80%:(分箱)补全?【缺失35%-55%用(常数-1填充)单独做一类】
  • 缺失比例10%-30%:基于其他字段进行预测。
  • 缺失比例低于10%:分类型变量用众数;连续型变量用均值(适用于近似正态分布数据,观测值较为均匀散布均值周围)、中位数(适用于偏态分布或者有离群点数据,中位数是更好地代表数据中心趋势;适用于含有负数的特征,适用于方差大于100的连续型变量)、加权均值。【也可以直接删除行】

2 异常值处理

lowestprice(当前酒店可定最低价)有小于0的,有等于1的值,明显属于异常值,我们用盖帽法处理此异常值。

col_01 = ['lowestprice','lowestprice_pre'] # 偏态严重

# 定义盖帽法函数
def block_lower(x):
# x是输入的Series对象,替换1%分位数
    ql = x.quantile(.01)
    out = x.mask(x<ql,ql)
    return(out)
    
def block_upper(x):
# x是输入的Series对象,l替换99%分位数
    qu = x.quantile(.99)
    out = x.mask(x>qu,qu)
    return(out)

data.loc[:,col_01]=data.loc[:,col_01].apply(block_upper)

data.loc[:,col_01]=data.loc[:,col_01].apply(block_lower)

data.loc[:,['lowestprice','lowestprice_pre']].describe([0.01,0.25,0.5,0.75,0.99],include='all').T # 盖帽法处理异常值

二、数据特征分析

分布分析

(1)定量数据等分布分析
plt.hist(df['historyvisit_7ordernum'],
		 bins=30, # 箱数
		 alpha=0.5,
		 histtype=u'bar', color='steelblue', edgecolor='none'
		) # 直方图

# seaborn中的kdeplot可用于使用核密度估计绘制单变量或双变量分布。
# 核密度估计(KDE)图是一种可视化数据集中观测分布的方法,与直方图呈正相关。KDE在一个或多个维度上使用连续的概率密度曲线表示数据。
# 相对于柱状图,KDE可以生成一个不那么杂乱且更具可解释性的图,特别是在绘制多个分布时。但是,如果底层分布是有界的或不平滑的,它就有可能导致扭曲。
sns.kdeplot(df['historyvisit_7ordernum'], shade=True)

sns.displot(df['historyvisit_7ordernum']) # 频次直方图与KDE结合

df.groupby('historyvisit_7ordernum').smapleid.count() # 分布统计
(2)定性数据等分布分析
  • 偏态(skewness) 是指数据分布偏斜程度。使用偏态系数(SK)来测度数据的偏态。
    请添加图片描述
  • 峰态(kurtosis) 是指数据分布的扁平程度。使用峰态系数(K)来测度数据的偏态。
    请添加图片描述
list = list(np.random.randn(10000))
s = pd.series(list)

s.skew() # 偏态系数
s.kurt() # 峰态系数

seaborn.kdeplot
缺失值处理,你真的会了吗?
Python数据分析之数据探索分析(EDA)

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值