Press "Enter" to skip to content

如何为可视化准备数据

Python

不使用Tableau Prep或Alteryx

Photo by Robert Katzki on Unsplash

想要开始你的下一个数据可视化项目吗?首先要熟悉数据清洗。数据清洗是任何数据管道中的重要步骤,将原始的“脏”数据输入转换为更可靠、相关和简洁的数据。虽然Tableau Prep或Alteryx等数据准备工具是为此目的而创建的,但为什么要花费这些服务的费用,当你可以使用开源编程语言Python完成任务呢?本文将指导您使用Python脚本准备数据进行可视化,为数据准备工具提供更具成本效益的替代方案。

注意:本文将一直关注将数据准备好以用于Tableau数据可视化,但是主要概念同样适用于其他商业智能工具。

我理解。数据清洗似乎只是将可视化或仪表板带到生活中的已经长度不短的过程中的另一个步骤。但它是至关重要的,而且可以让人愉快。这是你通过深入了解数据集来熟悉数据集的方式,了解你拥有和没有的数据,以及你必须采取的决策来实现最终分析目标。

虽然Tableau是一种多功能的数据可视化工具,但有时候为了得到答案,需要经过一些处理。这就是在将数据集加载到Tableau之前处理数据集可能是您最大的秘密助手的地方。让我们探讨一些在将其与Tableau集成之前清洗数据的关键原因:

  • 消除无关信息:原始数据通常包含不必要或重复的信息,这可能会混淆您的分析。通过清洗数据,您可以去除垃圾并将您的可视化集中在最相关的数据特征上。
  • 简化数据转换:如果您对要生成的可视化有清晰的愿景,在将数据加载到Tableau之前执行这些预转换可以简化流程。
  • 易于团队内转移:当数据源经常更新时,新添加的内容可能会导致不一致并潜在地破坏Tableau。通过Python脚本和代码描述(更正式地称为标记文档),您可以有效地共享并授权他人理解您的代码并解决可能出现的任何编程问题。
  • 节省数据刷新时间:需要定期刷新的数据可以从利用Hyper API中受益。Hyper API是一种应用程序,可以生成特定于Tableau的Hyper文件格式,并允许自动数据提取上传,同时使数据刷新过程更加高效。

现在,我们已经介绍了一些准备数据的优点,让我们通过创建一个简单的数据管道来将其付诸实践。我们将探讨如何将数据清洗和处理集成到工作流中,并帮助您更轻松地管理可视化。

使用Python脚本创建数据管道

Image by Author

我们的数据将要经过的旅程非常简单:数据清洗、可视化数据处理,并将它们转换为Tableau-Ready Hyper文件,以实现无缝集成。

在深入研究我们的工作示例之前,需要注意的是,为了将Hyper文件转换,您需要下载pantab库。此库简化了将Pandas数据框转换为Tableau.hyper提取的转换过程。你可以通过在所选环境的终端中使用以下代码轻松完成(对于不太熟悉环境的人来说,这是一个很好的入门文章,介绍了它们是什么以及如何安装某些库):

#run the following line of code to install the pantab library in your environmentpip install pantab

教程:使用Python准备数据,探索加拿大的电动汽车许可证

我们将要制作的数据可视化关注的是基于加拿大统计局提供的政府可用数据,关于不同电动汽车制造商和型号的受欢迎程度。

需要注意的是,本文建立在我之前的一篇文章《使用R进行电动汽车分析》所探索的数据集的基础之上。如果您有兴趣了解数据集的初始探索和决策背后的原理,请参考该文章以获取更详细的信息。本教程重点介绍构建Python脚本的过程,每个步骤都会在初始输入之后将Python脚本的输出保存到各自的文件夹中,如下所述:

Image by Author

文件夹处理确保流水线组织良好,并且我们能够在项目中记录每个输出。让我们开始构建第一个Python脚本吧!

数据清洗

我们流水线中的初始脚本遵循数据清洗的基本步骤,对于这个数据集,包括:保留/重命名相关列,删除空值和/或重复项,并使数据值一致。

我们可以首先指定输入文件位置和输出文件的目的地。这一步非常重要,因为它允许我们在同一个位置组织不同版本的文件,在这种情况下,我们是在每个月修改文件输出,因此每个文件输出都按月份分开,如文件名末尾所示2023_04

以下代码读取原始的.csv输入文件,并定义我们要保留的列。在这种情况下,我们感兴趣的是保留与所购车型相关的信息,而忽略与汽车经销商或其他无关的列。

现在我们可以缩短列名,去除前导或尾随空格,并添加下划线以便更容易理解。

接下来,在检查数据集中只有少量空条目后,我们将使用.dropna函数删除空数据。此时,您也应该删除重复项,但在这个特定的数据集中,我们不会这样做。这是因为有大量重复信息,在缺少行标识符的情况下,删除重复项将导致数据丢失。

最后一步是将我们的数据保存为一个.csv文件,放置在我们共享目录的clean_data文件夹中的适当位置。

请注意,我们使用__file__引用文件,并使用bash命令指定文件目录,其中../指的是上一个文件夹。这就结束了我们的数据清洗脚本。现在让我们进入数据处理阶段!

可以在我的Github存储库中找到完整的工作代码和组装脚本。

数据处理用于可视化

让我们重新审视我们试图实现的可视化目标,这些目标旨在突出电动车注册的流行度变化。为了有效地展示这一点,我们希望我们的最终适用于Tableau的数据集包括以下特征,我们将通过编码来实现:

  • 按年份计算车辆的绝对数量
  • 按年份计算车辆的比例数量
  • 车辆注册量最大的增长和减少
  • 注册的车辆排名
  • 以前注册的车辆排名进行比较

根据您试图生成的视觉效果,创建理想列的过程可能是一个迭代的过程。在我的情况下,我在构建可视化后包括了最后一列,因为我知道我想提供一个排名差异的视觉比较,因此Python脚本已相应地进行了调整。

对于以下代码,我们将专注于车型聚合数据集,因为品牌的另一个数据集非常类似。让我们首先定义我们的inputfileoutputfile

请注意,我们是从clean_data文件夹中引用了inputfile,这是我们的数据清洗脚本的输出。

下面的代码读取数据,并创建按Vehicle_Make_and_ModelCalendar_Year聚合计数的数据框:

pivot函数的功能类似于Excel中的数据透视表函数,它将Calendar_Year中的每个值作为列输入。

</

接下来的脚本使用 For 循环创建 per_1K 输入。这计算了每个型号的比例,以便能够在同一比例上比较每个型号,并为每一年创建一列:

通过按年份计算比例,我们可以计算出从数据集开始的 2019 年到数据的最后一个完整年份 2022 年的每个型号的最大增长和最大减少。

在这里,使用 melt 函数将按年份分离的 per_1K 列重新旋转成行,这样我们只需要一个 per_1K 列和相关的值。

下面的代码允许我们将绝对计数和我们刚刚创建的其他计算结果合并。

我们现在可以使用许可证计数创建 rank 列,并通过 Vehicle_Make_and_ModelCalendar_Year 对这些值进行排序。

最后一列要创建的是 previous_rank 列,使用 shift 函数。

最后,我们可以将输出保存到我们的管道中的 clean_model 文件夹路径中,提供给我们一个视觉化的数据集。

友情提示,包括处理过的 clean_brand 数据集的完整 Python 脚本代码可以在我的 GitHub 存储库中找到。

将最终数据文件转换为 .hyper 文件格式

我们管道的最后一步相对简单,因为我们所剩余的就是将我们创建的 .csv 处理文件转换为 .hyper 文件格式。只要您下载了之前提到的 pantab 库,这将相对容易。

值得一提的是,在 Tableau 中,连接的数据可以是实时连接或提取。实时连接确保数据具有连续的流动,源中的更新几乎立即在 Tableau 中反映出来。提取的数据涉及 Tableau 创建具有 .hyper 文件扩展名的本地文件,其中包含数据的副本(数据源的详细描述可以在此处找到)。它的主要优点是其快速加载能力,其中 Tableau 可以更有效地访问和呈现信息,这在处理大型数据集时特别有益。

超文件转换脚本的代码始于加载 pandaspantab 包,然后读取您需要用于 Tableau 的 cleaned_model 数据集。

代码的最后一行使用 frame_to_hyper 函数生成 .hyper 文件,并将其保存到 hyper 文件夹中。

作为最后一步,我们可以轻松地将 .hyper 文件格式加载到 Tableau 中,只需打开一个新工作簿,在 select a file 部分中,您可以通过选择 more 来选择要加载的文件。当我们加载我们的 ev_vehicle_models.hyper 文件时,它应该显示为 Tableau Extract,如下面的截图所示,其中您的数据已准备好构建您的可视化效果!

如何为可视化准备数据 数据科学 第4张

结束语

通过将周到的规划纳入您的可视化,您可以通过创建简单的数据管道简化仪表板的维护。如果您缺乏资源,不要担心;Python 等开源编码程序提供了强大的功能。最后,友好地提醒一下,有关 Python 脚本的访问权限,请在此处查看我的 GitHub 存储库。

除非另有说明,所有图片都由作者提供。

参考资料

  1. Salesforce,Tableau Hyper API,2023
  2. R.Vickery,数据科学家的 Python 虚拟环境指南,2021 年 1 月
  3. K.Flerlage,Tableau 数据源第 1 部分:数据源类型,2022 年 7 月
Leave a Reply

Your email address will not be published. Required fields are marked *