帮酷LOGO
0 0 评论
  • 显示原文与译文双语对照的内容
文章标签:Pandas  PAN  Sqldf  
sqldf for pandas

  • 源代码名称:pandasql
  • 源代码网址:http://www.github.com/yhat/pandasql
  • pandasql源代码文档
  • pandasql源代码下载
  • Git URL:
    git://www.github.com/yhat/pandasql.git
  • Git Clone代码到本地:
    git clone http://www.github.com/yhat/pandasql
  • Subversion代码到本地:
    $ svn co --depth empty http://www.github.com/yhat/pandasql
    Checked out revision 1.
    $ cd repo
    $ svn up trunk
    
  • pandasql

    pandasql 允许你使用SQL语法查询 pandas DataFrames。 它与 R 中的sqldf 类似。 pandasql 试图提供一种更熟悉的方法来为 python 或者 pandas的新用户操作和清理数据。

    安装
    
    $ pip install -U pandasql
    
    
    
    
    基础知识

    在pandasql中使用的主要函数是 sqldfsqldf 接受 2 parametrs

    • sql查询字符串
    • 一组会话/环境变量 ( locals() 或者 globals() )

    指定 locals() 或者 globals() 可能会变得单调乏味。 你可以定义一个简短的helper 函数来修复这里问题。

    
    from pandasql import sqldf
    
    
    pysqldf = lambda q: sqldf(q, globals())
    
    
    
    
    查询

    pandasql 使用 SQLite语法。 任何 pandas dataframes都将被 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
    
    
    
    

    更多的信息和代码示例可以在示例文件夹或者我们的博客。



    文章标签:PAN  Pandas  Sqldf  

    Copyright © 2011 HelpLib All rights reserved.    知识分享协议 京ICP备05059198号-3  |  如果智培  |  酷兔英语