数据探索分析(EDA)是理解和分析数据集的重要手段。数据科学家和分析师广泛使用EDA技术来总结数据集的主要特征,并通过不同的图表和图形进行可视化。这种技术帮助数据科学家寻找模式、发现异常或检验假设,确保所使用的统计技术是否适合数据分析。EDA确保结果的有效性和适用性,符合业务目标。完成EDA任务后,其特性可用于更有效和更好的数据分析、建模和机器学习。
本文将对一个小型而有趣的数据集进行探索性数据分析。该数据集是Uber股票数据集,包含七个记录,包括日期、股票开盘价、收盘价、当天股票的最高和最低值、相邻股票的收盘价以及当天交易的股票数量。数据集包含605条记录。可以从下载数据集。
使用Python的pandas库,可以快速查看数据集的前几行:
data = pd.read_csv("UBER.csv")
data.head()
以上代码展示了数据集的前几行。也可以使用data.head(x),其中x代表想要查看的记录数量。
为了更深入地了解数据,可以使用pandas的‘describe’功能:
data.describe()
通过上述表格,可以获取数据集的许多有用信息,例如均值、标准差、值计数以及值在数据集中出现的频率。
在进行EDA之前,需要检查数据集是否包含任何空值。数据集不包含任何空值。然而,出于好奇,将查看如果数据集包含空值,图表会是什么样子。将从交易量列中删除一些值,并查看结果。为此,将使用seaborn库。
data2 = data.copy()
data2.iloc[1:50,data2.columns.get_loc('Volume')] = None
sns.heatmap(data2.isnull(),cbar=False,cmap='viridis') # 检查空值
上述图像显示交易量列包含大约25个空值。可以绘制原始数据框架,看看没有空值的数据集会是什么样子。
通过绘制热图,可以获取更多关于数据集变量的信息。热图是数据的二维表示,显示一个变量与其他变量的相关程度。它包含从-1到1的值。假设有两个变量x和y,让看看可能的原因。
当x和y之间的相关性为-1时,这意味着x与y负相关。这意味着当x的值增加时,y的值会减少。值越接近-1,负相关性就越大。当x和y之间的相关性为0时,这意味着x和y没有相关性,是独立的。当x和y之间的相关性为1时,这意味着x与y正相关。或者简单地说,每当x增加时,y也增加。
现在对热图有了一定的了解,可以继续使用seaborn库在Uber股票数据集上创建热图。
plt.figure(figsize=(7,5))
sns.heatmap(data.corr(),cmap='Blues',annot=True)
从上述热图中,可以看到许多1和接近1的值。这意味着这些变量显示出高度的正相关性并且是相互关联的。这可能是因为这些值之间的差异相对较小。然而,在股票市场中,正是这些小值造成了差异。因此,将在数据集中添加新变量,代表这些值之间的差异。
data['open-high'] = data['Open']-data['High']
data['open-low'] = data['Open'] - data['Low']
data['close-high'] = data['Close']-data['High']
data['close-low'] = data['Close'] - data['Low']
data['high-low'] = data['High'] - data['Low']
data['open-close'] = data['Open'] - data['Close']
已经向数据集添加了6个新条目。现在可以创建一个包含这些新值的热图,并查看它们的相互关联性。
从之前的热图中,可以意识到这些值并不是很有用。因此,为了更清晰,将删除这些值,并仅使用新值来创建热图。
data2 = data.copy()
data2 = data2.drop(['Open','High','Low','Close', 'Adj Close'],axis=1)
plt.figure(figsize=(7,5))
sns.heatmap(data2.corr(),cmap='Blues',annot=True)
这个热图是否比之前的更有信息量?希望也这么认为。基于相关性值,可以为这个数据集推导出许多见解。
股票市场就是关于数字的。理解这些数字并找到模式是一种艺术,而数据分析师就是艺术家。在这个数据集中,将主要关注‘Volume’变量。与体积特征具有较大相关性值的变量表明,这些数字可能吸引了大量的买家和卖家。这些特征与体积特征之间的相关性将告诉,该特征的变化如何影响当天交易的股票数量。
‘open-high’显示与体积特征最负相关。这意味着股票开盘价与当天最高价之间的差异越大,当天交易的股票数量就越多。由于没有关于买家和卖家数量的信息,只能猜测,股票开盘价与最高价之间的高差异可能会吸引更多的买家。而较小的差异可能会吸引更多的卖家。
sns.barplot(data=data, x="open-high", y="Volume")
从下面的图表中,可以观察到,与较大的open-high值相比,较小的open-high值的交易量更高。
‘high-low’特征显示与‘volume’特征的最大相关性值。因此,可以认为,股票价格的较大波动可能是当天更多股票交易的原因。
sns.barplot(data=data, x="high-low", y="Volume")
从下面的图表中,可以观察到,对于较大的high-low值,交易的股票数量更高。
结论:探索性数据分析是数据分析中的重要任务,有助于更好地理解数据集。它是创建机器学习模型之前的一个必要步骤,因为它有助于理解变量之间的关系。正确进行的EDA为整个过程提供了坚实的基础,确保了更好的结果,并借助有趣的图表和图形验证了假设。在本文中,尝试对一个小型但有趣的数据集进行EDA。
希望喜欢阅读这篇文章。
感谢。
同时,查看其他文章:
在LinkedIn上联系:
图片来源:
博客马拉松
Uber股票数据分析
:Ayush
好。写作和探索是一些爱好。之所以喜欢机器学习,是因为它有无尽的应用和改进空间。喜欢解决问题,学习新事物。相信要学习任何新技能,一个人应该有学习它的意愿。问对问题,剩下的,谷歌搜索会帮解决。在业余时间,喜欢听音乐和弹吉他。