siuba(小巴)是dplyr和其他R库的移植。它支持以5种常见操作为中心的表格数据分析工作流:
可以在group_by()之前执行这些操作,这会使它们分别应用于分组的数据行。此外,实现了许多SQL概念,例如distinct(),count()和联接。这些函数的输入可以是pandas DataFrame或SQL连接(当前为postgres,redshift或sqlite)。
有关dplyr等工具背后的原理的更多信息,请参见此整洁的论文。有关siuba的实际示例,请参见siuba文档。
下面的代码使用示例DataFrame mtcars来获取每个气缸的平均马力(hp)。
从siuba导入group_by,总结,_从siuba。数据导入mtcars(mtcars>> group_by(_。cyl)>>汇总(avg_hp = _。hp。mean()))
siu表达式是一种指定要执行的操作的方式。siuba动词可根据数据是本地DataFrame还是远程表来决定如何执行该操作。
Out [2]:█─==├─█─.│├─_│└─'└─4
从siuba导入_#lambda方法mtcars [lambda _:_。 cyl == 4]#siu表达方法mtcars [_。 cyl == 4]
Out [3]:mpg cyl disp hp drat wt qsec vs am gear carb2 22.8 4 108.0 93 3.85 2.320 18.61 1 1 4 17 24.4 4 146.7 62 3.69 3.190 20.00 1 0 4 2 .. ... ... ...。 .. ... ... ... .. .. ... ... 27 30.4 4 95.1 113 3.77 1.513 16.90 1 1 5 231 21.4 4 121.0 109 4.11 2.780 18.60 1 1 4 2 [11行x 11列]
siuba的杀手级功能是相同的分析代码可以在本地DataFrame或SQL源上运行。
#设置示例数据----从sqlalchemy从siuba导入create_engine。数据导入mtcars#将pandas DataFrame复制到sqlite引擎= create_engine(&sql; sqlite:///:memory:")mtcars。 to_sql(" mtcars&#34 ;,引擎,if_exists =" replace")
接下来,我们使用第一个示例中的代码,但现在执行的是SQL表。
#使用siuba进行示例SQL分析----从siuba导入_,group_by,汇总,从siuba过滤。 sql import LazyTbl#与siuba连接tbl_mtcars = LazyTbl(engine," mtcars")(tbl_mtcars>> group_by(_。cyl)>> summary(avg_hp = _.hp。mean()) )
Out [4]:#来源:惰性查询#DB Conn:引擎(sqlite:///:memory:)#预览:cyl avg_hp0 4 82.6363641 6 122.2857142 8 209.214286#..可能有更多行
以下是我在siuba上工作时保留的一些示例。有关最新的解释,请参阅siuba文档 tidytuesday示例tidytuesday是每周的R数据分析项目。 为了踢出不知疲倦的siuba,我一直在用它来完成作业。 更具体地说,我一直在移植Dave Robinson的整理分析以使用siuba。