直方图在数据科学中的应用

直方图是一种强大的工具,用于揭示数据集的分布情况。本文将从直方图的全面定义开始,通过代表频率的块来展示统计洞察。将深入探讨直方图的重要性,讨论何时部署它们以及它们在现实世界中的应用。理解它们在提取业务洞察中的作用,强调了数据可视化数据科学项目中的重要性,其中像Matplotlib这样的工具方便了直方图的绘制。

目录

  • 引言
  • 何时使用直方图
  • 加载必要的库
  • 加载数据
  • 直方图绘制
  • 运行代码查看输出
  • 使用Python的Matplotlib绘制直方图的代码
  • 结论
  • 常见问题解答

何时使用直方图

在使用任何技术之前,首先需要分析何时使用该技术(在本例中为直方图)以获得最佳效果。因此,在本节中,将讨论一些关键方面,直方图在这些方面可以非常有用。

在使用直方图时,首先要记住的是数据类型,这通常可以更好地洞察数值数据。如果想要查看数据集的分布情况,这种图表就非常有用,可以帮助确定数据是否呈正态分布。直方图还可以帮助了解客户的流程,即输出的生成情况。当得到问题陈述以分析时间序列数据时,直方图可以来救援,帮助开始分析,这可以确定随时间发生的变化。直方图还非常有助于识别流行的统计度量,如中位数、标准中位数、最小值和最大值数据点。

加载必要的库

import numpy as np import matplotlib.pyplot as plt import seaborn as sb import pandas as pd plt.rcParams["figure.figsize"] = (10,6)

让简要讨论导入的每个库的用途:Numpy:用于使用预定义的函数实现统计和数学公式。Matplotlib:这是数据可视化的原始库,将主要使用它来绘制图表/图形。Seaborn:另一个基于matplotlib的可视化库。Pandas:用于DataFrame操作和数据清洗。

加载数据

让加载一些1D数据并深入了解它!为了使本节易于理解,生成的数据是随意组合的。它不仅仅是Scipy的分析函数——那会太容易了——但已确保它不是病态的。让从导入开始,以确保一开始就拥有所有正确的内容。如果这出现错误,使用pip install安装没有的任何依赖项。如果遇到问题(特别是在Windows机器上使用NumPy时),请尝试使用Conda install。例如:

import numpy as np # 如果需要使用Conda安装NumPy,请取消注释下一行。 # !conda install numpy # 现在,让从两个文件"example_1.txt"和"example_2.txt"加载数据。 d1 = np.loadtxt("example_1.txt") d2 = np.loadtxt("example_2.txt") # 打印加载的数据数组的形状。 print("输出:", d1.shape, d2.shape)

输出:(500,) (500,) 如上所述,已经加载了两个数据集,这些数据集是为演示目的创建的,当查看两个数据集的形状时,发现它们都有500行。

直方图绘制

现在是时候深入了解直方图的不同方面了。在这里,将讨论3种图表,这些图表可以帮助同时获得两个数据集的名义数据分布

普通图表:对于直方图的基本理解,即查看指定范围内数据点的分布。

密度和箱:进一步了解密度参数将帮助了解与直方图的概率联系,箱将有助于标准化。

自定义样式:为了给直方图一个良好的外观和感觉,也将根据它们的可用性进行自定义。

plt.hist(d1, label="D1") plt.hist(d2, label="D2") plt.legend() plt.ylabel("计数");

运行代码查看输出

import numpy as np import matplotlib.pyplot as plt import seaborn as sb import pandas as pd plt.rcParams["figure.figsize"] = (10,6) d1 = np.loadtxt("example_1.txt") d2 = np.loadtxt("example_2.txt") print(d1.shape, d2.shape) plt.hist(d1, label="D1") plt.hist(d2, label="D2") plt.legend() plt.ylabel("计数") plt.show()

使用Python的Matplotlib绘制直方图的代码

已经使用matplotlib的hist plot为D1和D2绘制了直方图。请注意,在图表中,可以看到蓝色区域作为D1,黄色区域作为D2,由legend()函数执行。

缺点:主要缺点是图表完全不透明;因此无法清楚地看到分布;其次是不规则的箱大小,这正在讲述一个虚假的故事。

bins = np.linspace(min(d1.min(), d2.min()), max(d1.max(), d2.max()), 50) counts1, _, _ = plt.hist(d1, bins=bins, label="D1") plt.hist(d2, bins=bins, label="D2") plt.legend() plt.ylabel("计数");

这是输出

在这一步中,已经几乎解决了通过规范化箱来解决缺点,以便现在刺激虚假故事的数据点可以提供更好的洞察。

而不是默认箱,已经创建了一个新的变量,它存储了D1和D2数据集分布的最小值和最大值的范围,以便拥有自定义箱。

bins = np.linspace(min(d1.min(), d2.min()), max(d1.max(), d2.max()), 50) counts1, _, _ = plt.hist(d1, bins=bins, label="D1", density=True) plt.hist(d2, bins=bins, label="D2", density=True) plt.legend() plt.ylabel("概率");

输出

正如文章开头提到的,直方图与概率高度相关。人们可以注意到Y轴,并与之前的图表进行比较,那里有计数,而在本图中,有概率分布。通过添加一个参数,即density并将其设置为True来实现这一点。

bins = np.linspace(min(d1.min(), d2.min()), max(d1.max(), d2.max()), 50) plt.hist([d1, d2], bins=bins, label="Stacked", density=True, alpha=0.5) plt.hist(d1, bins=bins, label="D1", density=True, histtype="step", lw=1) plt.hist(d2, bins=bins, label="D2", density=True, histtype="step", ls=":") plt.legend() plt.ylabel("概率");

检查输出

现在来到了样式部分,将通过改变和添加一些来自hist()函数的参数来改善Matplotlib的直方图的外观和感觉。

堆叠图表:没有特定的函数来实现堆叠功能。只需要将两个或三个数据集作为列表添加,工作就完成了!

Alpha:此参数用于管理条形的不透明度。当想要突出显示一个数据而不是另一个数据时,可以使用此参数。

Hist-Type:此参数可以将典型的直方图转换为条形图(步骤),正如可以看到连续分布之间的间距,这与条形图非常相似。

线宽和线型:线宽表示为“l-w”,这有助于增加或减少线条的宽度,而线型表示为ls;人们可以注意到选择了“:”,这对于D2数据集也是可见的。

现在到达了文章的最后一部分,将简要回顾到目前为止讨论的有关直方图的所有内容——包括它们的定义、目的、应用和实际实施。与其提供段落解释,不如选择逐点简介。

  1. 问:关于直方图有哪些重要的事情需要知道? 答:直方图以可视化的方式表示数据分布,提供对模式、中心趋势和变化的洞察。了解何时使用它们可以增强数据分析和解释。
  2. 问:直方图的四个部分是什么? 答:直方图包括四个主要元素:箱(代表数据范围的间隔)、频率(每个箱中数据点的计数)、轴(x和y)和条形(表示数据频率的矩形块)。
  3. 问:直方图的两个重要特征是什么? 答:直方图的两个关键特征是形状(指示数据分布)和中心趋势(由中央峰或平均值的位置突出显示)。
  4. 问:直方图关于流程揭示了哪四件事? 答:直方图揭示了流程的中心趋势、变异性、分布的形状和潜在的异常或异常值,提供了对潜在数据模式的全面概述。
沪ICP备2024098111号-1
上海秋旦网络科技中心:上海市奉贤区金大公路8218号1幢 联系电话:17898875485