今天我们继续来讲一下 Pandas
和 SQL
之间的联用,我们其实也可以在 Pandas
当中使用 SQL
语句来筛选数据,通过 Pandasql
模块来实现该想法,首先我们来安装一下该模块
pip install pandasql
要是你目前正在使用 jupyter notebook
,也可以这么来下载
!pip install pandasql
导入数据
我们首先导入数据
import pandas as pd
from pandasql import sqldf
df = pd.read_csv("Dummy_Sales_Data_v1.csv", sep=",")
df.head()
output
我们先对导入的数据集做一个初步的探索性分析,
df.info()
output
RangeIndex: 9999 entries, 0 to 9998
Data columns (total 12 columns):
# Column Non-Null Count Dtype
0 OrderID 9999 non-null int64
1 Quantity 9999 non-null int64
2 UnitPrice_USD 9999 non-null int64
3 Status 9999 non-null object
4 OrderDate 9999 non-null object
5 Product_Category 9963 non-null object
6 Sales_Manager 9999 non-null object
7 ShippingCost_USD 9999 non-null int64
8 Delivery_Time_Days 9948 non-null float64
9 Shipping_Address 9999 non-null object
10 Product_Code 9999 non-null object
11 OrderCode 9999 non-null int64
dtypes: float64(1), int64(5), object(6)
memory usage: 937.5+ KB
用 SQL
筛选出若干列来
我们先尝试筛选出 OrderID
、 Quantity
、 Sales_Manager
、 Status
等若干列数据,用 SQL
语句应该是这么来写的
SELECT OrderID, Quantity, Sales_Manager, \
Status, Shipping_Address, ShippingCost_USD \
FROM df
与 Pandas
模块联用的时候就这么来写
query = "SELECT OrderID, Quantity, Sales_Manager,\
Status, Shipping_Address, ShippingCost_USD \
FROM df"
df_orders = sqldf(query)
df_orders.head()
output
SQL
中带 WHERE
条件筛选
我们在 SQL
语句当中添加指定的条件进而来筛选数据,代码如下
query = "SELECT * \
FROM df_orders \
WHERE Shipping_Address = 'Kenya'"
df_kenya = sqldf(query)
df_kenya.head()
output
而要是条件不止一个,则用AND来连接各个条件,代码如下
query = "SELECT * \
FROM df_orders \
WHERE Shipping_Address = 'Kenya' \
AND Quantity
output
分组
同理我们可以调用 SQL
当中的 GROUP BY
来对筛选出来的数据进行分组,代码如下
query = "SELECT Shipping_Address, \
COUNT(OrderID) AS Orders \
FROM df_orders \
GROUP BY Shipping_Address"
df_group = sqldf(query)
df_group.head(10)
output
排序
而排序在 SQL
当中则是用 ORDER BY
,代码如下
query = "SELECT Shipping_Address, \
COUNT(OrderID) AS Orders \
FROM df_orders \
GROUP BY Shipping_Address \
ORDER BY Orders"
df_group = sqldf(query)
df_group.head(10)
output
数据合并
我们先创建一个数据集,用于后面两个数据集之间的合并,代码如下
query = "SELECT OrderID,\
Quantity, \
Product_Code, \
Product_Category, \
UnitPrice_USD \
FROM df"
df_products = sqldf(query)
df_products.head()
output
我们这里采用的两个数据集之间的交集,因此是 INNER JOIN
,代码如下
query = "SELECT T1.OrderID, \
T1.Shipping_Address, \
T2.Product_Category \
FROM df_orders T1\
INNER JOIN df_products T2\
ON T1.OrderID = T2.OrderID"
df_combined = sqldf(query)
df_combined.head()
output
与 LIMIT
之间的联用
在 SQL
当中的 LIMIT
是用于限制查询结果返回的数量的,我们想看查询结果的前10个,代码如下
query = "SELECT OrderID, Quantity, Sales_Manager, \
Status, Shipping_Address, \
ShippingCost_USD FROM df LIMIT 10"
df_orders_limit = sqldf(query)
df_orders_limit
output
NO. 1
往期推荐
Historical articles
分享、收藏、点赞、在看安排一下?
Original: https://blog.csdn.net/weixin_43373042/article/details/123650344
Author: 欣一2002
Title: 【干货原创】厉害了,在Pandas中用SQL来查询数据,效率超高
原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/601006/
转载文章受原作者版权保护。转载请注明原作者出处!