精华内容
下载资源
问答
  • pandasql测试数据集

    2020-09-15 16:35:06
    当pandas撞上了sql,于是一个强大的pandasql库产生了,pandasql测试数据集,希望能够帮到你
  • 推荐:一个小而强大的Python库-pandasql.pdf
  • 安装:pip install pandasql from pandasql import sqldf pysqldf = lambda q:sqldf(q,globals()) q=""" SELECT * from df """ data_end=pysqldf(q)

    安装:pip install pandasql

    from pandasql import sqldf
    
    pysqldf = lambda q:sqldf(q,globals())
    
    q="""
        SELECT  * from df
    """
    
    data_end=pysqldf(q)

     

    展开全文
  • 数据分析-pandasql

    2018-06-20 23:52:38
    pandasqlby deamon(deamoncao@163.com) pandasql(http://blog.yhat.com/posts/pandasql-sql-for-pandas-dataframes.html ...pandasql 的想法是让Python 运行 SQL。对于那些来自 SQL 背景或仍然【使用 SQL 思考】...

    pandasql

    pandasql(http://blog.yhat.com/posts/pandasql-sql-for-pandas-dataframes.html Yhat 写的一个模拟 R 包 sqldf 的Python 库。

    pandasql 的想法是让Python 运行 SQL。对于那些来自 SQL 背景或仍然【使用 SQL 思考】的人来说,pandasql是一种利用两种语言优势的好方式。

    加载数据

    In [1]:
    from sklearn.datasets import load_iris
    import pandas as pd
    from pandasql import sqldf
    from pandasql import load_meat, load_births
    import re
    iris=load_iris()   #导入数据 

    使用pandas对数据进行探查

    In [4]:
     iris_df=pd.DataFrame(iris.data, columns=iris.feature_names)   #读入数据,形成表  
    print(iris.feature_names) #查看属性名称(列表)
    print(iris_df.columns)
    iris_df.head()
    
         
    ['sepal length (cm)', 'sepal width (cm)', 'petal length (cm)', 'petal width (cm)']
    Index(['sepal length (cm)', 'sepal width (cm)', 'petal length (cm)',
    dtype='object')
    'petal width (cm)'],
    Out[4]:
     sepal length (cm)sepal width (cm)petal length (cm)petal width (cm)
    05.13.51.40.2
    14.93.01.40.2
    24.73.21.30.2
    34.63.11.50.2
    45.03.61.40.2

    使用pandasql对数据进行查询

    In [7]:
    iris_df['species'] = pd.Categorical.from_codes(iris.target, iris.target_names)
    iris_df.columns = [re.sub("[() ]", "", col) for col in iris_df.columns]
    print("==============================SELECT * FROM iris_df LIMIT 10==============================")
    print(sqldf("SELECT * FROM iris_df LIMIT 10;", locals()))
    print("==================SELECT sepalwidthcm, species FROM iris_df LIMIT 10======================")
    print(sqldf("SELECT sepalwidthcm, species FROM iris_df LIMIT 10;", locals()))
    
         
    ==============================SELECT * FROM iris_df LIMIT 10==============================
    sepallengthcm sepalwidthcm petallengthcm petalwidthcm species
    1 4.9 3.0 1.4 0.2 setosa
    0 5.1 3.5 1.4 0.2 setosa2 4.7 3.2 1.3 0.2 setosa
    5 5.4 3.9 1.7 0.4 setosa
    3 4.6 3.1 1.5 0.2 setosa4 5.0 3.6 1.4 0.2 setosa6 4.6 3.4 1.4 0.3 setosa
    ==================SELECT sepalwidthcm, species FROM iris_df LIMIT 10======================
    7 5.0 3.4 1.5 0.2 setosa8 4.4 2.9 1.4 0.2 setosa9 4.9 3.1 1.5 0.1 setosa sepalwidthcm species0 3.5 setosa
    9 3.1 setosa
    1 3.0 setosa2 3.2 setosa3 3.1 setosa4 3.6 setosa5 3.9 setosa6 3.4 setosa7 3.4 setosa
    8 2.9 setosa

    使用pandasql对数据进行统计

    In [10]:
    grpSql = """
          select
            species
            , avg(sepalwidthcm)
            , min(sepalwidthcm)
            , max(sepalwidthcm)
          from
            iris_df
          group by
            species;     
    """
    print("*" * 80)
    print("sql : ")
    print(grpSql)
    print("*" * 80)
    print(sqldf(grpSql, locals()))
    
         
    ********************************************************************************
    sql : select species , avg(sepalwidthcm)
    iris_df
    , min(sepalwidthcm) , max(sepalwidthcm) from group by
    ********************************************************************************
    species; species avg(sepalwidthcm) min(sepalwidthcm) max(sepalwidthcm)
    1 versicolor 2.770 2.0 3.4
    0 setosa 3.418 2.3 4.4
    2 virginica 2.974 2.2 3.8

    使用pandasql,定义函数,对数据进行统计

    In [13]:
    def pysqldf(sql):
        "add this to your script if you get tired of calling locals()"
        return sqldf(sql, globals())
    print("*" * 80)
    print("calling from a helper function")
    print('''def pysqldf(sql):)
        "add this to your script if you get tired of calling locals()"
            return sqldf(sql, globals())''')
    print("*" * 80)
    print(grpSql)
    print("*" * 80)
    print(pysqldf(grpSql))
    
         
    ********************************************************************************
    calling from a helper functiondef pysqldf(sql):)
    return sqldf(sql, globals())
    "add this to your script if you get tired of calling locals()"
    , avg(sepalwidthcm)
    ******************************************************************************** select species , min(sepalwidthcm)
    ********************************************************************************
    , max(sepalwidthcm) from iris_df group by species; species avg(sepalwidthcm) min(sepalwidthcm) max(sepalwidthcm)
    2 virginica 2.974 2.2 3.8
    0 setosa 3.418 2.3 4.4
    1 versicolor 2.770 2.0 3.4
    In [15]:
    births = load_births()
    births.head()
    Out[15]:
     datebirths
    01975-01-01265775
    11975-02-01241045
    21975-03-01268849
    31975-04-01247455
    41975-05-01254545
    In [16]:
    meat = load_meat()
    meat.head()
    Out[16]:
     datebeefvealporklamb_and_muttonbroilersother_chickenturkey
    01944-01-01751.085.01280.089.0NaNNaNNaN
    11944-02-01713.077.01169.072.0NaNNaNNaN
    21944-03-01741.090.01128.075.0NaNNaNNaN
    31944-04-01650.089.0978.066.0NaNNaNNaN
    41944-05-01681.0106.01029.078.0NaNNaNNaN

    join操作

    In [19]:
    joinSql = """
        SELECT
            m.*
            , b.births
        FROM
            meat m
        INNER JOIN
            births b
                on m.date = b.date
        ORDER BY
            m.date;
    """
    print("*" * 80)
    print(joinSql)
    print("*" * 80)
    pysqldf(joinSql).head()
    
         
    ********************************************************************************
    SELECT m.* , b.births FROM meat m
    m.date;
    INNER JOIN births b on m.date = b.date ORDER BY
    ********************************************************************************
    Out[19]:
     datebeefvealporklamb_and_muttonbroilersother_chickenturkeybirths
    01975-01-01 00:00:00.0000002106.059.01114.036.0646.2NaN64.9265775
    11975-02-01 00:00:00.0000001845.050.0954.031.0570.2NaN47.1241045
    21975-03-01 00:00:00.0000001891.057.0976.035.0616.6NaN54.4268849
    31975-04-01 00:00:00.0000001895.060.01100.034.0688.3NaN68.7247455
    41975-05-01 00:00:00.0000001849.059.0934.031.0690.1NaN81.9254545
    展开全文
  • 模仿pandasql:让 python 运行 SQL #去cmd pip install pandasql from pandasql import sqldf from pandasql import load_meat, load_births meat = load_meat() births = load_births() #print (meat.head()) #...

    模仿pandasql:让 python 运行 SQL

    #去cmd pip install pandasql
    from pandasql import sqldf
    from pandasql import load_meat, load_births
    
    meat = load_meat()
    births = load_births()
    #print (meat.head())
    #print (births.head())
    
    import matplotlib.pyplot as plt 
    from pandas import *
    import pandas as pd 
    
    pysqldf = lambda q: sqldf(q,globals())
    
    q="""
    SELECT 
        m.date,
        m.beef,
        b.births
    FROM 
        meat m
    LEFT JOIN
        births b
            ON m.date = b.date
    WHERE
        m.date>'1974-12-31';
    """
    print(pysqldf(q))
    
    展开全文
  • 当pandas撞上了sql,于是一个强大的pandasql库产生了!

    1. 演示数据

    本文的所有演示数据,均是基于下方的四张表。下面这四张表大家应该不陌生,这就是网传50道经典MySQL面试题中使用到的几张原表。关于下方各表之间的关联关系,我就不给大家说明了,仔细观察字段名,应该就可以发现。
    在这里插入图片描述

    2. pandasql的使用

    1)简介

    pandas中的DataFrame是一个二维表格,数据库中的表也是一个二维表格,因此在pandas中使用sql语句就显得水到渠成,pandasql使用SQLite作为其操作数据库,同时Python自带SQLite模块,不需要安装,便可直接使用。

    这里有一点需要注意的是:使用pandasql读取DataFrame中日期格式的列,默认会读取年月日、时分秒,因此我们要学会使用sqlite中的日期处理函数,方便我们转换日期格式,下方提供sqlite中常用函数大全,希望对你有帮助。

    sqlite函数大全http://suo.im/5DWraE

    导入相关库:

    import pandas as pd
    from pandasql import sqldf
    

    2)声明全局变量的2种方式

    • ① 在使用之前,声明该全局变量;
    • ② 一次性声明好全局变量;
    ① 在使用之前,声明该全局变量
    df1 = pd.read_excel("student.xlsx")
    df2 = pd.read_excel("sc.xlsx")
    df3 = pd.read_excel("course.xlsx")
    df4 = pd.read_excel("teacher.xlsx")
    
    
    global df1
    global df2
    global df3
    global df4
    query1 = "select * from df1 limit 5"
    query2 = "select * from df2 limit 5"
    query3 = "select * from df3"
    query4 = "select * from df4"
    
    sqldf(query1)
    sqldf(query2)
    sqldf(query3)
    sqldf(query4)
    

    部分结果如下:
    在这里插入图片描述

    ② 一次性声明好全局变量
    df1 = pd.read_excel("student.xlsx")
    df2 = pd.read_excel("sc.xlsx")
    df3 = pd.read_excel("course.xlsx")
    df4 = pd.read_excel("teacher.xlsx")
    
    pysqldf = lambda q: sqldf(q, globals())
    
    query1 = "select * from df1 limit 5"
    query2 = "select * from df2 limit 5"
    query3 = "select * from df3"
    query4 = "select * from df4"
    
    sqldf(query1)
    sqldf(query2)
    sqldf(query3)
    sqldf(query4)
    

    部分结果如下:
    在这里插入图片描述

    3)写几个简单的SQL语句

    ① 查看sqlite的版本
    student = pd.read_excel("student.xlsx")
    pysqldf = lambda q: sqldf(q, globals())
    query1 = """
        select sqlite_version(*)
    """
    pysqldf(query1)
    

    结果如下:
    在这里插入图片描述

    ② where筛选
    student = pd.read_excel("student.xlsx")
    pysqldf = lambda q: sqldf(q, globals())
    query1 = """
        select * 
        from student 
        where strftime('%Y-%m-%d',sage) = '1990-01-01'
    """
    pysqldf(query1)
    

    结果如下:
    在这里插入图片描述

    ③ 多表连接
    student = pd.read_excel("student.xlsx")
    sc = pd.read_excel("sc.xlsx")
    
    
    pysqldf = lambda q: sqldf(q, globals())
    query2 = """
        select *
        from student s
        join sc on s.sid = sc.sid
    """
    pysqldf(query2)
    

    部分结果如下:
    在这里插入图片描述

    ④ 分组聚合
    student = pd.read_excel("student.xlsx")
    sc = pd.read_excel("sc.xlsx")
    
    
    pysqldf = lambda q: sqldf(q, globals())
    query2 = """
        select s.sname as 姓名,sum(sc.score) as 总分
        from student s
        join sc on s.sid = sc.sid
        group by s.sname
    """
    pysqldf(query2)
    

    结果如下:
    在这里插入图片描述

    ⑤ union查询
    student = pd.read_excel("student.xlsx")
    pysqldf = lambda q: sqldf(q, globals())
    query1 = """
        select * 
        from student 
        where strftime('%Y-%m',sage) = '1990-01'
        union
        select * 
        from student 
        where strftime('%Y-%m',sage) = '1990-12'
    """
    pysqldf(query1)
    

    结果如下:
    在这里插入图片描述

    展开全文
  • 背景 众所周知,用SQL语句进行数据查询十分方便,因为跟自然语言更接近。 pandas其实是模仿R语言中的DataFrame设计的一个Python库。...pandasql allows you to query pandas DataFrames using SQL sy
  • pandas是一个很不错的框架,对于格式化的数据处理极为便利,最近比较频繁的使用到SQL语句,由于开发语言使用的是Python自然想找一下是否有这方面的库,于是乎还真的被我给找到了,pandasql就是这样的一个库,当然...
  • pandasql包功能描述 pandasql包功能主要是实现SQL语句的增改查删除。pandasql和常见数据库的SQL的区别: 1.常见SQL使用是将数据库中已存储好的数据,利用SQL语句的写法对数据进行一定的增改查删,最终将数据结果...
  • 这篇文章是关于pandasql,Yhat 写的一个模拟 R 包 sqldf 的Python 库。这是一个小而强大的库,只有358行代码。pandasql 的想法是让 Py...
  • 这篇文章是关于pandasql,Yhat 写的一个模拟 R 包 sqldf 的Python 库。 这是一个小而强大的库,只有358行代码。pandasql 的想法是让 Python 运行 SQL。 对于那些来自 SQL 背景或仍然「使用 SQL 思考」的人来说,...
  • 小结 pandasql

    2020-04-21 15:25:07
    globals()) meat = load_meat() print(pysqldf('SELECT * FROM meat LIMIT 10').head()) from pandasql import sqldf, load_meat def select(): pysqldf = lambda q: sqldf(q, locals()) meat = load_meat() print...
  • 安装pandasql (Install pandasql) Install pandasql using the package manager pane in Rodeo. Simply search for pandasql and click Install Package. 使用Rodeo中的“程序包管理器”窗格安装pandasql 。 只需...
  • 导入:from pandasql import sqldf,load_births,load_meat 1from pandasql import sqldf,load_births,load_meat 加载内置数据集 1df1 = load_births() 2df2 = load_meat() 预览数据查看前几行 1df1.head() ...
  • Pandasql简介 Pandasql是一个可以让我们直接在Python中对Dataframe进行SQL查询的库。 Python中虽然内置有sqlite数据库,但是如果我们使用sqlite进行查询的话我们需要将原始数据插入sqlite后才可以使用SQL语句。同时...
  • 为了开始使用PandaSQL,我们简单地安装它: pip install -U pandasql 安装了pandaSQL之后,我们可以通过创建pysqldf函数来使用它,该函数接受一个查询作为输入,并运行该查询来返回一个Pandas DF。不用担心语法,因为...

空空如也

空空如也

1 2 3 4 5 ... 12
收藏数 231
精华内容 92
热门标签
关键字:

pandasql