【数据整理】比pandas还骚的pandasql

2019-08-05 16:33:18 浏览数 (1)

这篇文章是关于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。

01. 下载 Rodeo

首先从 Yhat 网站上的 Rodeo 页面下载 Rodeo for Mac,Windows 或 Linux。

如果你好奇,一点背景

在背后,pandasql 使用该 pandas.io.sql 模块在DataFrame 和 SQLite 数据库之间传输数据。操作用 SQL 执行,返回结果,然后将数据库拆除。此库大量使用 pandas write_frame 和 frame_query 两个功能,可以让你读取和写入 pandas 任何 SQL 数据库。

02. 安装 pandasql

pandasql 使用 Rodeo 中的软件包管理器进行安装。只需搜索 pandasql 并单击安装包。

如果你喜欢安装这种方式,也可以从文本编辑器运行 ! pip install pandasql。

03. 查看数据集

pandasql 有两个内置的数据集,将用于下面的例子。

meat:数据集来自美国农业部,包含有关牲畜,乳制品和家禽前景和生产的指标 births:数据集来自联合国统计司,包含按月计算的活产婴儿人口统计

运行以下代码查看数据集。

在 Rodeo 里面,你真的不需要 print.variable.head() 语句,因为实际上你可以直接检查 dataframe。

04. 奇数图

请注意,绘图将显示在控制台和绘图选项卡(右下角的选项卡)中。

提示:可以通过单击窗格顶部的箭头「弹出」你的绘图。如果你正在使用多个显示器,并希望对于数据可视化,专注于其中一个屏幕,那么这是非常方便的。

05. 用法

为了使这篇文章简洁易读,我们刚刚给出了代码片段和下面大部分查询的几行结果。

如果你在 Rodeo 中跟随着,开始时候有会一些提示:

  • Run Script 确实会运行在文本编辑器中编写的所有内容
  • 你可以高亮显示代码块,并通过单击 Run Line 或按 Command Enter 运行它
  • 你可以调整窗格大小(当我没有绘制图时,我缩小了右下角的窗格)

06. 基础

写一些 SQL,通过代替 DataFrames 表针对 pandas DataFrame,并执行它。

pandasql 创建数据库、架构、加载数据、并运行你的 SQL。

07. 聚合

pandasql 支持聚合。可以在 group by 子句中使用别名列名或列号。

locals() 与 globals()

pandasql 需要在会话/环境中访问其他变量。虽然当执行 SQL 语句时,可以传递 locals() 给 pandasql,但是如果你运行了大量可能麻烦的查询。为了避免一直传递给 locals,你可以将这个帮助函数添加到脚本中,来其设置 globals() 如下:

08. 联结

你可以使用正常的 SQL 语法联结 dataframes。

09. WHERE 条件

这是一个 WHERE 字句。

10. 这只是SQL

由于 pandasql 由 SQLite3 提供支持,你可以用 SQL 中执行大部分任务。以下是使用常见 SQL 功能(例如子查询,排序分组,函数和联合)的一些示例。

最后的想法

pandas 是一个难以置信的数据分析工具,因为它非常易于理解、简洁明了、易表达。最终,有足够充分的理由来学习的 merge,join,concatenate,melt 的细微差别和其他 pandas 特色的切片和切块数据。查看文档的一些例子。

我们希望这 pandasql 对于 Python 和 pandas 新手将是一个有用的学习工具。在我自己学习 R 的个人经验中,sqldf 是一个熟悉的界面,可以帮助我尽快使用新工具来提高生产力。

0 人点赞