大熊猫的sqldf
pandasql的Python项目详细描述
pandasql允许您使用sql语法查询pandas数据帧。 它的工作方式类似于r中的sqldf。pandasql试图提供 更熟悉的处理和清理数据的方法 python或pandas。
安装
$ pip install -U pandasql
基本知识
pandasql中使用的主要函数是sqldf。sqldf接受2 parametrs-一个sql查询字符串-一组会话/环境变量 (locals()或globals())
指定locals()或globals()可能会很乏味。你可以 定义了一个简短的帮助函数来解决这个问题。
from pandasql import sqldf pysqldf = lambda q: sqldf(q, globals())
查询
pandasql使用SQLite syntax。 任何pandasdataframes都将由 pandasql。您可以像查询任何常规sql表一样查询它们。
$ python >>> from pandasql import sqldf, load_meat, load_births >>> pysqldf = lambda q: sqldf(q, globals()) >>> meat = load_meat() >>> births = load_births() >>> print pysqldf("SELECT * FROM meat LIMIT 10;").head() date beef veal pork lamb_and_mutton broilers other_chicken turkey 0 1944-01-01 00:00:00 751 85 1280 89 None None None 1 1944-02-01 00:00:00 713 77 1169 72 None None None 2 1944-03-01 00:00:00 741 90 1128 75 None None None 3 1944-04-01 00:00:00 650 89 978 66 None None None 4 1944-05-01 00:00:00 681 106 1029 78 None None None
还支持联接和聚合
>>> q = """SELECT m.date, m.beef, b.births FROM meats m INNER JOIN births b ON m.date = b.date;""" >>> joined = pyqldf(q) >>> print joined.head() date beef births 403 2012-07-01 00:00:00 2200.8 368450 404 2012-08-01 00:00:00 2367.5 359554 405 2012-09-01 00:00:00 2016.0 361922 406 2012-10-01 00:00:00 2343.7 347625 407 2012-11-01 00:00:00 2206.6 320195 >>> q = "select strftime('%Y', date) as year , SUM(beef) as beef_total FROM meat GROUP BY year;" >>> print pysqldf(q).head() year beef_total 0 1944 8801 1 1945 9936 2 1946 9010 3 1947 10096 4 1948 8766