作者 | Soner Yıldırım
编译 | VK 来源 | Towards Data Science
数据可视化是数据科学的重要组成部分。它对于探索和理解数据非常有用。在某些情况下,可视化在传递信息方面也比普通数字好得多。
使用数据可视化技术可以很容易地发现变量之间的关系、变量的分布以及数据中的底层结构。
在本文中,我们将介绍数据分析中常用的5种基本数据可视化类型。我们将使用Altair库,它是Python的统计可视化库。
如果你喜欢其中一个用于数据可视化任务的库的话,我以前曾用Seaborn和ggplot2写过类似的文章。我建议你仔细检查一下,因为在同一个任务上比较不同的工具和框架会帮助你学得更好。
让我们首先创建一个用于示例的示例数据帧。
代码语言:javascript复制import numpy as np
import pandas as pd
df = pd.DataFrame({
'date':pd.date_range(start='2020-01-10', periods=100, freq='D'),
'cat':pd.Series(['A','B','C']).sample(n=100, replace=True),
'val':(np.random.randn(100) 10).round(2),
'val2':(np.random.random(100) * 10).round(2),
'val3':np.random.randint(20,50, size=100)
})
df = df.reset_index(drop=True)
df.head()
数据帧由100行和5列组成。它包含datetime、categorical和numerical值。
1.折线图
折线图显示了两个变量之间的关系。其中之一通常是时间。因此,我们可以看到变量是如何随时间变化的,例如股票价格,每日温度。
下面是如何用Altair创建一个简单的折线图。
代码语言:javascript复制import altair as alt
alt.Chart(df).mark_line().encode(
x='date', y='val'
)
让我们详细说明一下语法。我们首先将数据传递给图表对象。下一个函数指定绘图类型。encode函数指定绘图中使用的列。因此,在encode函数中写入的任何内容都必须链接到数据帧。
Altair提供了更多的函数和参数来生成更多信息或定制的绘图。我们将在下面的例子中看到它们。
为了使上面的折线图看起来更好,我们可以使用“scale”特性调整y轴的值范围。
代码语言:javascript复制alt.Chart(df).mark_line().encode(
alt.X('date'),
alt.Y('val', scale=alt.Scale(zero=False))
)
为了使用scale属性,我们使用X和Y编码(例如alt.X)指定列名。zero参数设置为“False”,以防止轴从零开始。
2.散点图
散点图也是一种关系图。它通常用于显示两个数值变量的值。我们可以观察它们之间是否有关联。
我们可以创建“val”和“val2”列的散点图,如下所示。
代码语言:javascript复制alt.Chart(df).mark_circle(size=40).encode(
alt.X('val', scale=alt.Scale(zero=False)),
alt.Y('val2'),
alt.Color('cat')
)
我们已经使用颜色编码来根据“cat”列分离数据点。mark_circle函数的size参数用于调整散点图中点的大小。
3.直方图
直方图用于显示连续变量的分布。它将取值范围划分为离散的数据元,并统计每个数据元中的数据点个数。
让我们创建“val3”列的直方图。
代码语言:javascript复制alt.Chart(df).mark_bar().encode(
alt.X('val3', bin=True),
alt.Y('count()')
).properties(title='Histogram of val3', height=300, width=450)
我们还使用properties函数自定义大小并添加标题。
4.箱线图
箱线图提供了变量分布的概述。它显示了值是如何通过四分位数和离群值展开的。
我们可以使用Altair的mark_boxplot函数创建一个箱线图,如下所示。
代码语言:javascript复制alt.Chart(df).mark_boxplot().encode(
alt.X('cat'),
alt.Y('val2', scale=alt.Scale(zero=False))
).properties(height=200, width=400)
A中的值范围小于其他两个类别。框内的白线表示中值。
5.条形图
条形图可用于可视化离散变量。每个类别都用一个大小与该类别的值成比例的条表示。
例如,我们可以使用条形图来可视化按week分组的“val3”列。我们先用pandas库计算。
代码语言:javascript复制df['week'] = df['date'].dt.isocalendar().week
weekly = df[['week','val3']].groupby('week', as_index=False).sum()
weekly.head()
第一行从date列中提取周。第二行将“val3”列按周分组并计算总和。
我们现在可以创建条形图。
代码语言:javascript复制alt.Chart(weekly).mark_bar().encode(
x='val3:Q', y='week:O'
)
结论
我们已经介绍了5种基本但功能非常强大的可视化类型。它们都是探索数据集和揭示变量之间关系的基础。
使用Altair可以创建更复杂、信息更丰富、自定义的可视化效果。它在数据转换和过滤方面也非常高效和强大。
代码语言:javascript复制