【干货原创】厉害了,在Pandas中用SQL来查询数据,效率超高

今天我们继续来讲一下 PandasSQL之间的联用,我们其实也可以在 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

【干货原创】厉害了,在Pandas中用SQL来查询数据,效率超高

我们先对导入的数据集做一个初步的探索性分析,

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 筛选出若干列来

我们先尝试筛选出 OrderIDQuantitySales_ManagerStatus等若干列数据,用 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

【干货原创】厉害了,在Pandas中用SQL来查询数据,效率超高

SQL 中带 WHERE 条件筛选

我们在 SQL语句当中添加指定的条件进而来筛选数据,代码如下

query = "SELECT * \
        FROM df_orders \
        WHERE Shipping_Address = 'Kenya'"

df_kenya = sqldf(query)
df_kenya.head()

output

【干货原创】厉害了,在Pandas中用SQL来查询数据,效率超高

而要是条件不止一个,则用AND来连接各个条件,代码如下

query = "SELECT * \
        FROM df_orders \
        WHERE Shipping_Address = 'Kenya' \
        AND Quantity 

output

【干货原创】厉害了,在Pandas中用SQL来查询数据,效率超高

分组

同理我们可以调用 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

【干货原创】厉害了,在Pandas中用SQL来查询数据,效率超高

排序

而排序在 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

【干货原创】厉害了,在Pandas中用SQL来查询数据,效率超高

数据合并

我们先创建一个数据集,用于后面两个数据集之间的合并,代码如下

query = "SELECT OrderID,\
        Quantity, \
        Product_Code, \
        Product_Category, \
        UnitPrice_USD \
        FROM df"
df_products = sqldf(query)
df_products.head()

output

【干货原创】厉害了,在Pandas中用SQL来查询数据,效率超高

我们这里采用的两个数据集之间的交集,因此是 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

【干货原创】厉害了,在Pandas中用SQL来查询数据,效率超高

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

【干货原创】厉害了,在Pandas中用SQL来查询数据,效率超高

NO. 1

往期推荐

Historical articles

分享、收藏、点赞、在看安排一下?

【干货原创】厉害了,在Pandas中用SQL来查询数据,效率超高

【干货原创】厉害了,在Pandas中用SQL来查询数据,效率超高

【干货原创】厉害了,在Pandas中用SQL来查询数据,效率超高

【干货原创】厉害了,在Pandas中用SQL来查询数据,效率超高

Original: https://blog.csdn.net/weixin_43373042/article/details/123650344
Author: 欣一2002
Title: 【干货原创】厉害了,在Pandas中用SQL来查询数据,效率超高

原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/601006/

转载文章受原作者版权保护。转载请注明原作者出处!

(0)

大家都在看

亲爱的 Coder【最近整理,可免费获取】👉 最新必读书单  | 👏 面试题下载  | 🌎 免费的AI知识星球