数据科学家/分析师应该避免的5大编程错误

数据科学家/分析师应该避免的5大编程错误

我目前的职位是数据科学经理,与多个数据科学家一起工作,我看到他们中的许多人在研究大数据时犯了一些基本的数据操作错误(我以前也犯过一些这样的错误)这些错误会导致代码执行时间大幅度增加,有时还会导致大量返工,浪费时间和精力。

在这篇文章中,我们将讨论如果想成为一个更好(更高效)的数据科学家,你应该避免的5大编程错误。如果你想了解更多关于数据科学的相关内容,可以阅读以下这些文章:
数据科学算法如何将商业计划变现?
Ins 数据科学、机器学习及AI宝藏博主推荐
如何准备娱乐/游戏行业数据科学家面试
如何成为FAANG自驱式数据科学家的一员?

在处理大数据时要避免的5大错误:

1 在不知道数据主键的情况下连接数据集

数据主键(Primary key/Data Level)定义为每一行具有唯一值的列或列的组合。数据主键通常由一些ID(如Customer ID)定义。我举个例子来理解这一点:

  • i.单列作为主键:在下面的数据集中,Order ID列没有相同的值,因此Order ID是该数据集的数据主键。
数据集1(作者提供图片)

连续列(如Sales)不能定义为数据主键。

  • Ii.多列作为level:在下面的数据集中,我们可以看到订单ID对于多行是相同的,因此它不是这个数据集的level。如果我们仔细观察,就会发现没有两行Order ID和Product ID组合具有相同的值,因此这两列都是该数据集的数据level(主键)
 数据集2(作者提供图片)

在执行连接时,理解数据主键变得非常重要,因为连接大多在数据集的主键上执行。

在非主键上连接数据集可能会导致错误。

2 没有过滤所需的行

有时,数据科学家不会在查询开始时过滤所需的行,而是等到最后一个查询时过滤这些行。在处理大数据时,这是一种错误行为,因为它大大增加了执行时间,特别是在执行像连接这样复杂的操作时。

  • 不好的做法
Step 1: Transform data
Step 2: Apply join operation
Step 3: More transformation
Step 4: Filter rows
  • 好的做法
Step 1: Filter row
Step 2: Transform data
Step 3: Apply join operation
Step 4: More transformation

3 使用大量的连接/自连接

自连接就像一把双刃剑,如果你使用得当,会是大有益处的,但如果使用太频繁,就会造成麻烦,因为连接是分布式环境中最昂贵的任务,如Hadoop, Hive, Spark等。

想象一下,我们有一个企业员工工资的数据。

我们要添加一个列,其中包含与当前行对应的工作角色(数据科学家、数据分析师、数据工程师)中所有员工的工资总额。我们想要如下所示的输出:

你会使用自连接来得到上面的输出吗?这是最理想的方式吗?

不,自连接不是最佳解决方案,相反,我们应该使用窗口函数来获得所需结果(如下所示)

  • 不好的做法
## Using Joins
select a.EMPID, a.NAME, a.JOB, b.TOTAL_JOB
FROM employee_table a
INNER JOIN
(select EMPID, NAME, sum(SALARY) as TOTAL_JOB
FROM employee_table
GROUP BY EMPID, NAME) b
on a.EMPID = b.EMPID
and a.NAME = b.NAME
  • 好的做法
## Using the window function
select EMPID, NAME, JOB, SALARY,
sum(SALARY) over() as TOTAL
FROM
employee_table

4 没有过滤所需的列

在处理具有数百万行的大型数据集时,数据集中的列数超过所需的列数可能会导致运行时间增加。因此,建议在读取数据集时只选择所需的列。

  • 不好的做法
### Selecting all the columns #######
select a.*, b.*
from
member_data as a
join
claims_data as b
on a.member_id = b.member_id
  • 好的做法
### Selecting the required columns
select a.member_id, a.age,
a.address, b.claim_id
from
member_data as a
join
claims_data as b
on a.member_id = b.member_id

5 没有查询后进行质量检查

质量检查对于及时发现错误并确保我们交付正确的输出非常重要。很多时候,我们跳过了这一步,在分析后期发现最终结果不正确,因此我们必须做大量的回溯来找到错误的根本原因,然后重新运行我们的查询,这将导致分析的周转时间大幅增加。

为了避免上述问题,我们可以遵循以下简单的步骤来进行数据集的质量检查:

  • 计算查询的输入行/列和输出行/列的数量,并确保得到预期的行/列数量。
  • 检查操作列上的汇总统计信息(不同的值、百分比等)。这将确保你在列中得到期望的值。
  • 检查数据集的前几行。这就像检查行样本来推断数据集的正确性。

总结

本文我们研究了一些因为增加分析周转时间而降低数据科学家工作效率的常见错误。

我们可以通过了解数据(数据主键)、只处理所需的行和列子集、不使用多余的连接以及对查询执行质量检查来克服这些错误。

感谢阅读!欢迎在评论中分享你在处理数据时执行的质量检查步骤。欢迎在评论中分享你在处理数据时执行的质量检查步骤。你还可以订阅我们的YouTube频道,观看大量大数据行业相关公开课:https://www.youtube.com/channel/UCa8NLpvi70mHVsW4J_x9OeQ;在LinkedIn上关注我们,扩展你的人际网络!https://www.linkedin.com/company/dataapplab/

原文作者:Anmol Tomar
翻译作者:过儿
美工编辑:过儿
校对审稿:明慧
原文链接:https://towardsdatascience.com/avoid-these-5-programming-mistakes-as-a-data-scientist-analyst-4b7017d509fe