能不能在python中使用sql代码呢?
平时主要使用sql处理数据,现在要转python,还不太熟,有没有什么方式能在python中写sql代码呢?谢谢。
1个回复
-
xsmile
就像可以使用sqldf在R中使用sql一样,可以使用pandasql在pandas中使用sql操作DataFrame,对于熟悉数据库的人来说,更喜欢用sql做数据清洗整合吧。
DataFrame,是一个二维的表格,就和数据库表一样,所以用sql操作DataFrame也就水到渠成了。
pandasql使用 SQLite作为其操作数据库,使用的sql也遵循 SQLite代码规范。Python自带 SQLite模块,所以不需要安装,可以直接使用。
下面的pandasql在github的一些例子。
注:操作DataFrame得到的还是DataFramefrom 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_dfpandasql的官方博客是:
http://blog.yhat.com/posts/pandasql-sql-for-pandas-dataframes.html
github地址是:
https://github.com/yhat/pandasql———————————————
版权声明:本文为CSDN博主「振裕」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/suzyu12345/java/article/details/514189753年前 我来评论