pandasql:让 python 运行 SQL
pandasql:让 python 运行 SQL
由 Yhat | 2016 年 10 月 11 日
本文链接:http://blog.yhat.com/posts/pandasql-intro.html
介绍
关于 Python 的最喜欢的一件事是使用者获得观察 R 社区的好处,然后模拟其最好的部分。我相信一种语言和它的库和工具一样有用。
这篇文章是关于pandasql,Yhat 写的一个模拟 R 包 sqldf 的Python 库。这是一个小而强大的库,只有358行代码。pandasql 的想法是让 Python 运行 SQL。对于那些来自 SQL 背景或仍然「使用 SQL 思考」的人来说,pandasql是一种利用两种语言优势的好方式。
在本介绍中,将在为数据探索和分析构建的集成开发环境(IDE) Rodeo 中用 pandasql 开始运行。Rodeo 是一个开源、完全免费的工具。如果你是 R 使用者,那么它与 RStudio 具有类似感觉的工具。到目前为止,Rodeo 只能运行 Python 代码,但上周我们添加一些其他语言的语法高亮到编辑器(markdown,JSON,julia,SQL,markdown)。你可能已经阅读或猜到了,我们对 Rodeo 有很大的计划,包括添加 SQL 支持,以便你可以在 Rodeo 内运行 SQL 查询,即使没有我们的方便pandasql。更多的是在下一两周内!
下载 Rodeo
首先从 Yhat 网站上的 Rodeo 页面下载 Rodeo for Mac,Windows 或 Linux。
ps:如果你下载 Rodeo 并遇到问题或只是有疑问,我们会全天候监控我们的讨论论坛24/7。
如果你好奇,一点背景
在背后,pandasql 使用该 pandas.io.sql 模块在DataFrame 和 SQLite 数据库之间传输数据。操作用 SQL 执行,返回结果,然后将数据库拆除。此库大量使用 pandas write_frame 和 frame_query 两个功能,可以让你读取和写入 pandas 任何 SQL 数据库。
安装 pandasql
pandasql 使用 Rodeo 中的软件包管理器进行安装。只需搜索 pandasql 并单击安装包。
如果你喜欢安装这种方式,也可以从文本编辑器运行 ! pip install pandasql。
查看数据集
pandasql 有两个内置的数据集,将用于下面的例子。
meat:数据集来自美国农业部,包含有关牲畜,乳制品和家禽前景和生产的指标
births:数据集来自联合国统计司,包含按月计算的活产婴儿人口统计
运行以下代码查看数据集。
在 Rodeo 里面,你真的不需要 print.variable.head() 语句,因为实际上你可以直接检查 dataframe。
奇数图
请注意,绘图将显示在控制台和绘图选项卡(右下角的选项卡)中。
提示:可以通过单击窗格顶部的箭头「弹出」你的绘图。如果你正在使用多个显示器,并希望对于数据可视化,专注于其中一个屏幕,那么这是非常方便的。
用法
为了使这篇文章简洁易读,我们刚刚给出了代码片段和下面大部分查询的几行结果。
如果你在 Rodeo 中跟随着,开始时候有会一些提示:
- Run Script 确实会运行在文本编辑器中编写的所有内容
- 你可以高亮显示代码块,并通过单击 Run Line 或按 Command + Enter 运行它
- 你可以调整窗格大小(当我没有绘制图时,我缩小了右下角的窗格)
基础
写一些 SQL,通过代替 DataFrames 表针对 pandas DataFrame,并执行它。
pandasql 创建数据库、架构、加载数据、并运行你的 SQL。
聚合
pandasql 支持聚合。可以在 group by 子句中使用别名列名或列号。
locals() 与 globals()
pandasql 需要在会话/环境中访问其他变量。虽然当执行 SQL 语句时,可以传递 locals() 给 pandasql,但是如果你运行了大量可能麻烦的查询。为了避免一直传递给 locals,你可以将这个帮助函数添加到脚本中,来其设置 globals() 如下:
联结
你可以使用正常的 SQL 语法联结 dataframes。
WHERE 条件
这是一个 WHERE 字句。
这只是SQL
由于 pandasql 由 SQLite3 提供支持,你可以用 SQL 中执行大部分任务。以下是使用常见 SQL 功能(例如子查询,排序分组,函数和联合)的一些示例。
最后的想法
pandas 是一个难以置信的数据分析工具,因为它非常易于理解、简洁明了、易表达。最终,有足够充分的理由来学习的 merge,join,concatenate,melt 的细微差别和其他 pandas 特色的切片和切块数据。查看文档的一些例子。
我们希望这 pandasql 对于 Python 和 pandas 新手将是一个有用的学习工具。在我自己学习 R 的个人经验中,sqldf 是一个熟悉的界面,可以帮助我尽快使用新工具来提高生产力。
我们希望你能检查 pandasql 和 Rodeo;如果你这样做,请告诉我们你的想法!