版本控制和测试数据解决方案:在面试式查询上应用 CI 和单元测试

了解如何使用 Python 和 GitHub Actions 将单元测试、版本控制和持续集成应用于数据分析脚本。

来源:KDnuggets

简介

每个人都专注于解决问题,但几乎没有人测试解决方案。有时,一个完美工作的脚本可能会因为一行新数据或逻辑上的轻微变化而中断。

在本文中,我们将使用 Python 解决 Tesla 面试问题,并展示版本控制和单元测试如何通过以下三个步骤将脆弱的脚本转变为可靠的解决方案。我们将从面试问题开始,并以使用 GitHub Actions 进行自动化测试结束。

我们将通过这三个步骤来使数据解决方案做好生产准备。

首先,我们来解决一道来自特斯拉的真实面试问题。接下来,我们将添加单元测试,以确保解决方案随着时间的推移保持可靠。最后,我们将使用 GitHub Actions 来自动化测试和版本控制。

解决特斯拉的真实面试问题

在 Tesla 的这个面试问题中,您需要衡量两年内的产品增长。

任务是返回每个公司的名称以及 2020 年和 2019 年之间产品数量的差异。

理解数据集

让我们首先看看我们正在使用的数据集。这是列名称。

让我们预览数据集。

该数据集包含三列:year、company_name 和 Product_name。每行代表公司在给定年份发布的车型。

编写 Python 解决方案

我们将使用基本的 pandas 操作来分组、比较和计算每个公司的净产品变化。我们将编写的函数将数据拆分为 2019 年和 2020 年的子集。

接下来,它按公司名称将它们合并,并计算每年推出的独特产品的数量。

将 pandas 导入为 pd

将 numpy 导入为 np

从日期时间导入日期时间

df_2020 = car_launches[car_launches['年份'].astype(str) == '2020']df_2019 = car_launches[car_launches['年份'].astype(str) == '2019']df = pd.merge(df_2020, df_2019, how='外部', on=['company_name'], suffixes=['_2020', '_2019']).fillna(0)查看预期输出这是预期的输出。到此:让我们看看: