本文转载自公众号“读芯术”(ID:AI_Discovery)。
一间屋子10个人,可能其中5位数据科学家都表示需要结构化查询语言(SQL)才能工作,另一半人则表示还有其他方法可以处理数据。
作为一名数据科学家,你使用什么方法?你还有其它方法吗?数据科学家必须要会使用SQL吗?本文将讨论SQL在数据科学中的作用,以及结构化查询语言(SQL)的替代方法。
SQL
是否需要了解SQL具体取决于个人所属公司和数据科学团队。有些团队有数位数据工程师和数据分析师以及机器学习工程师,而有些团队则只有一位数据科学家。所以数据科学家是否需要了解SQL,你心中自有答案。
但是,讨论一下是否需要了解SOL的原因,以及不需要SOL的时机是颇为有趣且十分重要,讨论这个问题也有助于即将入职的数据科学家了解工作期望。以下是我使用SQL的原因:
- 使用SQL查询表格以获得有用的数据集
- 保持自主感(尽管也需要帮助)
- 在现有的SQL查询中随时发现和创建新功能
尽管数据科学可以看作是只专注于Python和R以及复杂机器学习算法的工作,但如果不充分利用SQL的优势,一个团队可能很难执行数据科学运算进程。不过,有时SQL并不是必需的,这取决于个人在数据科学领域的具体角色。
如果能从数据工程师或数据分析师那里获得一些帮助,便可以参考其他替代方法。此外,当SQL查询功能完全不符合专业时也不需要SQL,因为此时专注点在于数据科学模型开发,类似于在已获取的数据上相互测试各种机器学习算法。
替代方法
从数据分析师或数据工程师处获取数据集后,对数据集的下一步改进就是创建新功能要素,而不只是直接从数据表中获取字段。例如,如果数据集中有10个字段,则可以开发几个全新指标作为字段,而不是通过计算第1列和第2列来直接创建新的第11列。除了SQL以外,另一个比较容易进行此计算的工具是pandas。充分理由显示,数据分析师和数据科学家已广泛使用该库。
使用pandas,能够快速执行复杂计算,并且只需一行代码。有时很难使用SQL计算数据,因为它在视觉上呈多行布局(仅为个人看法)。
以下是一些常用的pandas 数据框操作,旨在方便化数据集特征工程运算。
- * groupby* items* loc* iloc* iteritems*keys* iterrows* query (this operation is quite similar to SQL quering, Ihighly recommend)* aggregate* corr* mean, median, min, and max* quantile*rank* sum* std* var* append* merge* join* sort_values* isnull* notna*between_time
大量操作都可以应用到pandas 数据框架中。个人最喜欢的操作:
- 分组(Groupby)——对数据进行分组,并对所述组执行进一步的操作。
- 查询(query)——一种类似SQL的查询方式,但在个人的数据框架中。
图源:unsplash
个人认为,计算全新的字段或指标更容易,这些字段或指标最终将用于个人pandas数据科学模型。不过,有人偏爱只在SQL中执行计算。对我来说,使用SQL的好处是我不必一次性添加所有新特性(查询时间过长),这样当我想添加一个新特性时,操作就非常简单有效。
数据科学家需要了解SQL吗?答案不是绝对的。这取决于公司、团队,有时还取决于个人偏好。
使用SQL查询,可以使用户受益匪浅,所以如果你还不了解SQL,可以学习其使用方法。如果你偏爱类似pandas的替代方法,你可能是庞大数据科学团队中的一员。
一些数据科学家同时使用SQL和Python来为模型创建最终的数据集。pandas最独特的地方在于它有一个类似于SQL的查询操作,用户可以在pandas数据框中综合使用SQL和Python。所以,想好你自己的解决方案了吗?