在pandas中使用sql

在pandas中使用sql

就像可以使用sqldf在R中使用sql一样,可以使用pandasql在pandas中使用sql操作DataFrame,对于熟悉数据库的人来说,更喜欢用sql做数据清洗整合吧。
DataFrame,是一个二维的表格,就和数据库表一样,所以用sql操作DataFrame也就水到渠成了。
pandasql使用 SQLite作为其操作数据库,使用的sql也遵循 SQLite代码规范。Python自带 SQLite模块,所以不需要安装,可以直接使用。
下面的pandasql在github的一些例子。
注:操作DataFrame得到的还是DataFrame

from pandasql import sqldf
# 查找内存中的pandas数据框
pysqldf = lambda q: sqldf(q, globals())
# 导入模块,自带数据,寻找pandas数据框
from pandasql import sqldf, load_meat, load_births
pysqldf = lambda q: sqldf(q, globals())
meat = load_meat()
births = load_births()
pysqldf("SELECT * FROM meat LIMIT 10;").head()
# 表关联
q = """SELECT m.date, m.beef, b.births FROM meats m INNER JOIN births b ON m.date = b.date;"""
joined = pyqldf(q)
joined.head()
# 分组计算
q = "select strftime('%Y', date) as year , SUM(beef) as beef_total FROM meat GROUP BY year;"
pysqldf(q).head()

如果需要在函数内使用sql,在需要定义全局变量

def my_sql(df):
    """在自定义函数内使用sql"""
    global g_df
    g_df = df  # 将局部变量传给全局变量,因为pysqldf找不到函数内的局部变量
    sql = "select * from g_df limit 10"
    new_df = pysqldf(sql)
    return new_df

pandasql的官方博客是:
http://blog.yhat.com/posts/pandasql-sql-for-pandas-dataframes.html
github地址是:
https://github.com/yhat/pandasql

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值