今天我们继续来讲一下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

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

df.info()

output

<class 'pandas.core.frame.DataFrame'>
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   Shipping_Cost(USD)   9999 non-null   int64  8   Delivery_Time(Days)  9948 non-null   float649   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

再开始进一步的数据筛选之前,我们再对数据集的列名做一个转换,代码如下

df.rename(columns={"Shipping_Cost(USD)":"ShippingCost_USD","UnitPrice(USD)":"UnitPrice_USD","Delivery_Time(Days)":"Delivery_Time_Days"},inplace=True)
df.info()

output

<class 'pandas.core.frame.DataFrame'>
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   float649   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

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 < 40 \AND Status IN ('Shipped', 'Delivered')"
df_kenya = sqldf(query)
df_kenya.head()

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

END

推荐阅读牛逼!Python常用数据类型的基本操作(长文系列第①篇)
牛逼!Python的判断、循环和各种表达式(长文系列第②篇)牛逼!Python函数和文件操作(长文系列第③篇)牛逼!Python错误、异常和模块(长文系列第④篇)

厉害了,在Pandas中用SQL来查询数据,效率超高相关推荐

  1. sap直接执行SQL语句查询数据

    有时候需要临时在生产机查询部分数据,但通过SQVI实现不了,查询语句相对复杂,我们可以通过DBACOCKPIT这个事务码下的Performance–>Additional Functions–& ...

  2. SQL Server查询数据

    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 开发工具与关键技术: SQL Serve ...

  3. SQL Server 查询数据表数据

    查询数据表数据 1.查询数据表所有字段的数据信息: 2.查询部分列的所有数据: 3.查询部分列的所有数据,过滤重复行信息:

  4. B站黑马测试第一篇P182视频数据库SQL语句查询数据准备代码

    drop table if exists goods; create table goods(id int unsigned primary key auto_increment,goodsName ...

  5. vb mysql 查询_vb中用sql语句查询数据库

    给你个完整的吧.Dim rs1 As New ADODB.Recordset   '定义数据集对象 Dim cnn As New ADODB.Connection     '定义数据连接 Privat ...

  6. SQL合并查询数据,以逗号分隔

    功能描述: 将查询到的数据合并为一条数据,以逗号分隔 案例: 功能描述: 现有三张表: Student(学生表) Course(课程表) Student-Course(学生课程关联表) 要求查询学生详 ...

  7. sql随机查询数据语句(NewID(),Rnd,Rand(),random())

    SQL Server: 代码如下 复制代码 Select TOP N * From TABLE Order By NewID() NewID()函数将创建一个 uniqueidentifier 类型的 ...

  8. Excel 中使用SQL 语句查询数据(七)-----用LIKE 运算符进行模糊匹配查询

    这篇博文要和大家分享的是用LIKE 运算符进行模糊匹配查询下图数据源商品代号包含数字的数据. 我们用Microsoft query连接数据源,步骤请参考本系列第一篇博文.语句如下图 其中 LIKE ' ...

  9. SQL 给查询数据新增一个列,并自定义分类排序

    原数据:  select attrval,vc0,vc,value,StartDate,EndDate,BB from test_1 查询到的数据如下图 现在要新增一列并根据attrval的值进行分类 ...

最新文章

  1. 通俗理解并行性和并发性的区别
  2. 头号任务:CIO面临的十大挑战预测
  3. 我来了 开源社区的兄弟门
  4. linux ps 只显示端口,这30个Linux系统监控工具,每个系统管理员都应该知道
  5. C指针原理(9)-C内嵌汇编
  6. java验证码的实现
  7. haroopad设置
  8. OpenCV_04 几何变换:图像缩放+图像平移+图像旋转+仿射变换+透射变换+图像金字塔
  9. CentOS下配置redis允许远程连接
  10. html添加兄弟元素,jquery插入兄弟节点的操作方法
  11. BZOJ4602: [Sdoi2016]齿轮(并查集 启发式合并)
  12. PHP进行AES/ECB/PKCS7 padding加密的例子(openssl)
  13. golang切片的交差集
  14. 联想小新Win11系统如何将新建标签页设置为Edge浏览器首页
  15. 卷积操作中的group
  16. 【增长工程学】如何研究数字广告投放策略?(Part1)
  17. excel隔行填充颜色的三种方法
  18. 爱普生Epson Artisan 800 一体机驱动
  19. 喇叭的灵敏度代表什么
  20. 旧 Mac、PC 别扔,变身 Chromebook 了解一下

热门文章

  1. PHP配置虚机权限不足的问题
  2. mysql oracle mvcc_PostgreSQL、Oracle/MySQL和SQL Server的MVCC实现原理方式
  3. string修饰的梦修改吗_Java String 对象,你真的了解了吗?
  4. stm32中spi可以随便接吗_stm32之SPI通信协议实例详解
  5. java 文件下载详解_Java 从网上下载文件的几种方式实例代码详解
  6. 安卓application_阿里面试官刁钻连问:安卓 UID的分配、查看及相关知识
  7. 为什么整数在python中表示d_python 数据类型和变量
  8. java printwrite_Java PrintWriter write(int)用法及代码示例
  9. vue 修改favicon
  10. JSTL 与 JSP 代码段 相互调用变量