溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

Pandas與SQL怎么整合使用

發(fā)布時間:2023-04-13 10:56:04 來源:億速云 閱讀:112 作者:iii 欄目:編程語言

這篇文章主要介紹了Pandas與SQL怎么整合使用的相關(guān)知識,內(nèi)容詳細易懂,操作簡單快捷,具有一定借鑒價值,相信大家閱讀完這篇Pandas與SQL怎么整合使用文章都會有所收獲,下面我們一起來看看吧。

簡介

pandas中的DataFrame是一個二維表格,數(shù)據(jù)庫中的表也是一個二維表格,因此在pandas中使用sql語句就顯得水到渠成,pandasql使用SQLite作為其操作數(shù)據(jù)庫,同時Python自帶SQLite模塊,不需要安裝,便可直接使用。

這里有一點需要注意的是:使用pandasql讀取DataFrame中日期格式的列,默認會讀取年月日、時分秒,因此我們要學(xué)會使用sqlite中的日期處理函數(shù),方便我們轉(zhuǎn)換日期格式。

導(dǎo)入相關(guān)庫:

import pandas as pd
from pandasql import sqldf

聲明全局變量的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)

部分結(jié)果如下:

Pandas與SQL怎么整合使用

一次性聲明好全局變量

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)

部分結(jié)果如下:

Pandas與SQL怎么整合使用

寫幾個簡單的SQL語句

查看sqlite的版本

student = pd.read_excel("student.xlsx")
pysqldf = lambda q: sqldf(q, globals())
query1 = """
 select sqlite_version(*)
"""
pysqldf(query1)

結(jié)果如下:

Pandas與SQL怎么整合使用

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)

結(jié)果如下:

Pandas與SQL怎么整合使用

多表連接

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)

部分結(jié)果如下:

Pandas與SQL怎么整合使用

分組聚合

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)

結(jié)果如下:

Pandas與SQL怎么整合使用

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)

結(jié)果如下:

Pandas與SQL怎么整合使用

關(guān)于“Pandas與SQL怎么整合使用”這篇文章的內(nèi)容就介紹到這里,感謝各位的閱讀!相信大家對“Pandas與SQL怎么整合使用”知識都有一定的了解,大家如果還想學(xué)習(xí)更多知識,歡迎關(guān)注億速云行業(yè)資訊頻道。

向AI問一下細節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI