探索性数据分析(EDA)是一种在构建模型之前对数据进行初步检查的方法。这种方法鼓励统计学家探索数据,可能形成假设,从而引导新的数据收集和实验。在当今的数据科学和分析领域,大部分时间都花在了数据整理和探索性数据分析上。
探索性数据分析(EDA)是一种从数据中获取洞察力的方法。数据科学家和分析师使用统计图表和其他可视化技术,尝试发现数据中的不同模式、关系和异常。EDA包括以下几个方面:
EDA的主要目的是检测数据中的错误、异常值以及理解数据中的不同模式。它允许分析师在做出任何假设之前更好地理解数据。EDA的结果有助于企业了解他们的客户,扩大业务,并据此做出决策。
为了更好地理解EDA,以汽车数据集为例进行分析。
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
import seaborn as sns
auto = pd.read_csv('Automobile_data.csv')
print(auto.head())
可以看到数据集有26个属性,列名缺失。还观察到有些地方有‘?’符号,这意味着数据有缺失值。首先填写列名。
auto.isnull().sum()
它显示数据集中没有空值,但之前观察到有‘?’符号,这意味着这些符号是以对象形式存在的。让现在检查每个属性的数据类型。
sns.heatmap(auto.isnull(),cbar=False,cmap='viridis')
通过热图,可以看到属性中缺失的数据量。这可以帮助决定是丢弃这些缺失值还是替换它们。通常不建议丢弃缺失值,但有时这样做可能也有帮助。
num_col = ['normalized_losses', 'bore', 'stroke', 'horsepower', 'peak_rpm','price']
for col in num_col:
auto[col]=pd.to_numeric(auto[col])
auto[col].fillna(auto[col].mean(), inplace=True)
可以观察到,现在缺失值已经用均值替换了。
这是EDA中最重要的一步。这一步将决定作为分析师的思考能力。这一步因人而异,取决于他们的提问能力。尝试提出与独立变量和目标变量相关的问题。例如,燃料类型将如何影响汽车的价格?
现在让应用领域知识,提出将影响汽车价格的问题。
plt.figure(figsize=(10,10))
plt.scatter(x='horsepower',y='price',data=auto)
plt.xlabel('Horsepower')
plt.ylabel('Price')
可以看到,大部分马力值在50-150之间,价格大多在5000-25000之间,也有一些异常值(在200-300之间)。
plt.figure(figsize=(10,10))
plt.scatter(x='engine_size',y='price',data=auto)
plt.xlabel('Engine size')
plt.ylabel('Price')
plt.figure(figsize=(10,10))
plt.scatter(x='highway_mpg',y='price',data=auto)
plt.xlabel('Highway mpg')
plt.ylabel('Price')
sns.boxplot(x='price',y='num_of_doors',data=auto)