【Python】5种基本但功能非常强大的可视化类型

2021-04-16 12:43:18 浏览数 (1)

作者 | 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复制

0 人点赞