Python探索性数据分析


对于数据分析,探索性数据分析 (EDA) 必须是你的第一步。探索性数据分析帮助我们:

  • 深入了解数据集。

  • 理解底层结构。

  • 提取重要的参数及其之间的关系。

  • 检验底层假设。

使用示例数据集理解EDA

为了使用Python理解EDA,我们可以直接从任何网站或本地磁盘获取示例数据。我从公开可用的UCI机器学习资源库中获取了红葡萄酒质量数据集的样本数据,并尝试使用EDA深入了解该数据集。

import pandas as pd
df = pd.read_csv("http://archive.ics.uci.edu/ml/machine-learning-databases/wine-quality/winequality-red.csv")
df.head()

在Jupyter Notebook中运行上述脚本,将得到如下输出:

首先:

  • 首先,导入必要的库,在本例中是pandas。

  • 使用pandas库的read_csv()函数读取csv文件,给定数据集中每个数据用分号“;”分隔。

  • 使用pandas库提供的“.head”函数返回数据集的前五个观测值。我们可以通过使用pandas库的“.tail()”函数类似地获取最后五个观测值。

我们可以使用“.shape”获取数据集的行数和列数,如下所示:

df.shape

借助info()函数,我们可以找到它包含的所有列、列的类型以及它们是否包含任何值。

df.info()

通过观察上述数据,我们可以得出结论:

  • 数据只包含浮点型和整型值。

  • 所有列变量均非空(无空值或缺失值)。

pandas提供的另一个有用的函数是describe(),它提供了数据的计数、均值、标准差、最小值和最大值以及数量。

df.describe()

  • 从上述数据中,我们可以得出结论,每列的均值都小于索引列中的中位数(50%)。

  • 预测变量“残糖”、“游离二氧化硫”和“总二氧化硫”的75%值和最大值之间存在巨大差异。

  • 上述两个观察结果表明,我们的数据集中存在极值偏差。

我们可以从因变量中获得一些关键见解,如下所示:

df.quality.unique()

  • 在“质量”评分量表中,1位于底部,即差;10位于顶部,即好。

  • 从上面我们可以得出结论,没有观测值得分1(差)、2和9、10(好)。所有分数都在3到8之间。

df.quality.value_counts()

  • 上述处理后的数据提供了每个质量得分按降序排列的投票数信息。

  • 大部分质量都在5-7的范围内。

  • 在3和6类别中观察到的观测值最少。

数据可视化

检查缺失值:

我们可以借助seaborn库检查我们的白威士忌csv数据集中的缺失值。以下是实现此目的的代码:

import pandas as pd
import numpy as np
import seaborn as sns
import matplotlib.pyplot as plt
%matplotlib inline
sns.set()
df = pd.read_csv("http://archive.ics.uci.edu/ml/machine-learning-databases/wine-quality/winequality-white.csv", sep=";")
sns.heatmap(df.isnull(), cbar=False, yticklabels=False, cmap='viridis')

输出

  • 从上面我们可以看到,数据集中没有缺失值。如果有任何缺失值,我们将在紫色背景上看到用不同颜色阴影表示的图形。

  • 对于存在缺失值的不同数据集,你会注意到差异。

检查相关性

要检查数据集不同值之间的相关性,请在现有数据集中插入以下代码:

plt.figure(figsize=(8,4))
sns.heatmap(df.corr(),cmap='Greens',annot=False)

输出

  • 上面,正相关用深色阴影表示,负相关用浅色阴影表示。

  • 将annot=True的值更改,输出将显示特征在网格单元中相互关联的值。

我们可以使用annot=True生成另一个相关矩阵。通过在现有代码中添加以下代码行来修改你的代码:

k = 12
cols = df.corr().nlargest(k, 'quality')['quality'].index
cm = df[cols].corr()
plt.figure(figsize=(8,6))
sns.heatmap(cm, annot=True, cmap = 'viridis')

输出

  • 从上面我们可以看到,密度与残糖之间存在很强的正相关性。然而,密度与酒精之间存在很强的负相关性。

  • 此外,游离二氧化硫与质量之间没有相关性。

更新于:2019年7月30日

2K+ 浏览量

启动你的职业生涯

通过完成课程获得认证

开始
广告