数据可视化是一种将数据以创造性和直观的方式呈现的技能,它允许最终用户无需任何技术背景就能理解数据摘要。因此,它比单纯处理数字更受青睐。本文将探讨如何使用图表和图形来可视化一维数据。
import numpy as np
import matplotlib.pyplot as plt
import seaborn as sb
import pandas as pd
sb.set(rc = {'figure.figsize':(10,6)})
plt.rcParams["figure.figsize"] = (10,6)
这些库各自对本文的贡献如下:
d1 = np.loadtxt("example_1.txt")
d2 = np.loadtxt("example_2.txt")
print(d1.shape, d2.shape)
通过NumPy的loadtxt函数读取两个基于文本的数据集,并查看输出,可以指出每个数据集有500个数据点。
Bee Swarm Plots的最佳之处在于,除了显示数据集的分布外,还可以通过调整数据点的大小来查看每个数据点。
dataset = pd.DataFrame({
"value": np.concatenate((d1, d2)),
"type": np.concatenate((np.ones(d1.shape), np.zeros(d2.shape)))
})
dataset.info()
Swarm plots类似于散点图(显示完整的数据表示),但它们在轴上包含分类数据,这使它们与一般的散点图不同。因此,首先创建一个DataFrame,其中包含一些值及其分类类型。
sb.swarmplot(data = dataset["value"], size=5);
在上述图表中,可以看到数据点更密集的地方以及数据点从中心向左右发散的地方。
接下来讨论另一种数据可视化图表,即箱形图,也称为箱须图,因为两端有类似猫须的须状物。
sb.boxplot(x="type", y="value", data=dataset, whis=3.0);
sb.swarmplot(x="type", y="value", data=dataset, size=2, color="k", alpha=0.3);
箱形图非常适合一维数据,因为它展示了多种统计量,如异常值、中位数、25%分位数、50%分位数和75%分位数。
如果想要更多的信息,可以使用小提琴图。这种图表特别适合多峰数据(当数据有一个以上的峰值时)。
sb.violinplot(x="type", y="value", data=dataset);
sb.swarmplot(x="type", y="value", data=dataset, size=2, color="k", alpha=0.3);
使用了Swarm plot和Violin plot的组合,其中Swarm plot显示了每个数据点的表示,而小提琴图显示了自创建的DataFrame中两种类型的完整分布。
当创建直方图时,由于需要对数据进行分箱,因此当改变箱的大小时,外观可能会发生显著变化。CDF可以帮助绕过这个问题。
sd1 = np.sort(d1)
sd2 = np.sort(d2)
cdf = np.linspace(1/d1.size, 1, d1.size)
plt.plot(sd1, cdf, label="D1 CDF")
plt.plot(sd2, cdf, label="D2 CDF")
plt.hist(d1, histtype="step", density=True, alpha=0.3)
plt.hist(d2, histtype="step", density=True, alpha=0.3)
plt.legend();