越来越多的分析师正在寻找使用Python处理数字和理解数据的新方法。

640?wx_fmt=jpeg

作者 | Lipei Wang

译者 | 苏本如,责编 | 郭芮

出品 | CSDN(ID:CSDNnews)

以下为译文:

Python,作为最流行的脚本语言之一,它也是数据分析和数据可视化的首选工具之一。除了范围庞大的Python开发人员社区之外,还有一个重要的团队使用Python来分析数据、提出可行的见解,并以此做出决策。

Python拥有数量众多的帮助库和平台,可以作为一个快速、可迭代的数据探索工具。Python的库集合包括从可视化到统计分析的所有内容,它可以帮助用户方便地进入数据中并开始识别模式。

除了能够在数据和统计分析中快速迭代外,Python还有很多用于管理数据管道和工作流的开源工具。越来越多的分析师正在寻找使用Python处理数字和理解数据的新方法。

 

640?wx_fmt=png

Python有什么用?

 

Python和SQL一样:它能够解答任何问题。Python的社区很棒,它的采用率一直在上升。

有许多易于使用的Python库,可以方便快捷地进行数据探索。这使得迭代数据分析成为可能。有了Python,你才可以真正地探究你的好奇心把你带到的神秘的兔子洞的下方(意为可以追根究底,见爱丽思漫游奇境)。

最后,Python的实用性和灵活性允许它用于数据科学堆栈内的各种任务。例如,Luigi 和Airflow都允许在Python中管理数据管道和工作流。通过在Python中完成探索性分析,这些工作有时可以带入到生产环境中继续进行。

 

640?wx_fmt=png

与Python相比,SQL最流行的用例是什么?

 

SQL是用来从数据库中查询和提取数据的。这是将数据转换为可用格式的必要的第一步。例如,SQL允许你轻松地连接多个数据集,以创建一个可以进一步研究的表。

SQL并不是专门为以某种方式操作或转换数据而设计的。数据科学中常见的高级数据操作(如统计分析、回归、趋势线和处理时间序列数据)在SQL中并不容易实现。

尽管存在这些限制,但是因为SQL是提取数据所必需的,因此它仍然经常被用于复杂的操作。下面的查询是用来计算数据中不同序列的分位数:

WITH details AS (
SELECT series,
       value,
       ROW_NUMBER() OVER (PARTITION BY series ORDER BY value) AS row_number,
       SUM(1) OVER (PARTITION BY series) AS total
  FROM dataset
),

quartiles AS (
SELECT series,
       value,
       AVG(CASE WHEN row_number >= (FLOOR(total/2.0)/2.0)
                 AND row_number <= (FLOOR(total/2.0)/2.0) + 1
                THEN value/1.0 ELSE NULL END
          ) OVER (PARTITION BY series) AS q1,
       AVG(CASE WHEN row_number >= (total/2.0)
                 AND row_number <= (total/2.0) + 1
                THEN value/1.0 ELSE NULL END
          ) OVER (PARTITION BY series) AS median,
       AVG(CASE WHEN row_number >= (CEIL(total/2.0) + (FLOOR(total/2.0)/2.0))
                 AND row_number <= (CEIL(total/2.0) + (FLOOR(total/2.0)/2.0) + 1)
                THEN value/1.0 ELSE NULL END
          ) OVER (PARTITION BY series) AS q3
  FROM details
)

SELECT series,
       MIN(CASE WHEN value >= q1 - ((q3-q1) * 1.5) THEN value ELSE NULL END) AS minimum,
       AVG(q1) AS q1,
       AVG(median) AS median,
       AVG(q3) AS q3,
       MAX(CASE WHEN value <= q3 + ((q3-q1) * 1.5) THEN value ELSE NULL END) AS maximum
  FROM quartiles
 GROUP BY 1

 

640?wx_fmt=png

什么时候使用Python?

 

Python有大量的库(例如Pandas、StatsModel和SciPy),它们是为统计和数学分析而设计的。这些库在抽象细节方面也做得很好,这样就不需要手工计算所有底层的数学。此外,你可以立即获得结果,因此可以迭代使用Python来研究数据。

不需要说“我想做一个回归分析”,和坐下来花半个小时搞清楚什么地方开始SQL查询,Python库可以运行分析,查看结果。在Python中,灵感和行动之间没有太大的滞后。

例如,如果我真的知道需要显示数据集的分位数,我就会编写上面的查询。因为整个事情可以通过下面的一行Python代码来完成,所以我会在分析过程中更早地完成这项工作,并且可能会发现一些我并不想要的结果。

dataset.describe()

考虑Python和SQL之间区别的另一种方法是,Python允许你从一个大表开始,从这个大表开始,可以在不同的分支上进行不同的分析。一条灵感之路可以把你带到另一条路,分析的速度和灵活性使得许多探索路径变得容易。

SQL和Python各有其优缺点,将两种语言结合在一起,可以让分析人员在这两个世界中都得到最好的结果。

 

640?wx_fmt=png

对于SQL分析师来说,学习Python需要什么?

 

与许多技能一样,学习如何使用Python进行分析的最佳方法是潜心研究一个感兴趣的、一直关注的、并且有点熟悉的问题。

当你在做你感兴趣的事情时,你往往会做得更加深入。这种好奇心可以推动你走得更远,而它是很多真正学习的源泉。

你还应该处理一些你熟悉的数据,这样你就知道你做错了什么。你会有更好的直觉知道发生了什么和期待什么。然而,当你处理的数据是你一无所知的东西时,比如说处理花瓣大小的数据(这是在许多Python示例中出现的非常流行的数据集)。如果你的分析结论是“所有这些花的花瓣大小都是两厘米长”,但是你不知道这是否合理,你可能只是假设它是对的,然后继续前进。

学习Python无疑可以增强数据分析师的技能。

分析师需要通过数据来传达业务价值。他们工作的一部分是设法从数据中找到对业务的深刻见解,更有效的工作还包括围绕着那些能够迫使你的队友采取行动的见解,包括正确的背景和表述。而且,由于在工作场所使用数据和分析来做出决策变得越来越重要,因此,分析师这种提供全面分析的角色比以往任何时候都更加重要。

原文:https://segment.com/blog/sql-vs-Python/

本文为 CSDN 翻译,转载请注明来源出处。

Logo

20年前,《新程序员》创刊时,我们的心愿是全面关注程序员成长,中国将拥有新一代世界级的程序员。20年后的今天,我们有了新的使命:助力中国IT技术人成长,成就一亿技术人!

更多推荐