对于分析师或数据科学家而言, 熟悉多种分析编程语言可以在当今数据环境中赢得优势. 在多语言法的主流对话中, 尤其是 SQL 语言和 Python 语言, 通常被描述为功能性离散.
SQL 和 Python 都可以实现许多功能. 探索两种编程语言重叠的功能可以帮助只熟悉一种编程语言的人更加熟悉另一种编程语言. 组合和利用每种编程语言, 可以对其做出更明智的决策, 并更好地为每个任务选择合适的工具. 了解如何在 SQL 或 Python 中完成任务将帮助你选择出最佳的工作工具.
集合操作
分析式问题通常需要检查多个不同的数据集. 在解答过程中, 通过比较或组合不同的数据集来创建一组新数据集, 非常有效.
例如, 你可能有两个单独的表, 其中包含要转换为单个事务表的事务性数据, 你想把它们合并为一个表, 或者创建一个同时包含两个表中数据的新事务表.
在 SQL 中, 集合操作符可以解决这个问题. 集合操作符支持对比性操作, 可以有条件地连结两个 SQL 语句的结果集. SQL 集合操作符包括:
UNION: 从待比较的两个查询语句返回结果行. 在默认情况下, 如果两个 SQL 语句的结果集中存在相同的行, 则 UNION 不会返回重复行. 如果你想返回重复行, 可以向集合操作符 UNION 提供可选 ALL 关键字.
INTERSECT: 返回位于两个待比较的查询语句结果集中的行.
EXCEPT(或者 MINUS): 返回到非待比较的查询语句结果集中的行.
虽然 Python 中没有特定的集合操作符种类, 但 Python 中仍然有各种各样的函数可以实现这些功能.
为了说明如何在实践中使用这些集合操作, 先假设你作为一名双边市场数据科学家. 在你的市场中有买家和卖家, 二者并不相互排斥. 现在, 买卖双方分别存在于 buyers 和 sellers 表格的数据库中. 让我们来浏览一下集合操作可能发挥作用的几种场景.
- -- SQL
- select user_id
- from modeanalytics.buyers
- union all
- select user_id
- from modeanalytics.sellers
- # Python
- users = pd.concat([buyers, sellers])
- -- SQL
- select user_id
- from modeanalytics.buyers
- union
- select user_id
- from modeanalytics.sellers
- # Python
- users = pd.concat([buyers, sellers]).drop_duplicates()
- -- SQL
- select user_id
- from modeanalytics.buyers
- intersect
- select user_id
- from modeanalytics.sellers
- Python
- buyers_and_sellers = buyers.merge(sellers)
- -- SQL
- select user_id
- from modeanalytics.buyers
- except
- select user_id
- from modeanalytics.sellers
- -- SQL
- select user_id
- from modeanalytics.sellers
- except
- select user_id
- from modeanalytics.buyers
- # Python
- buyers_not_sellers = buyers[buyers.user_id.isin(sellers.user_id) == False]
- sellers_not_buyers = sellers[sellers.user_id.isin(buyers.user_id) == False]`
来源: http://database.51cto.com/art/201906/597472.htm