Pandas执行SQL操作的实现

 更新时间:2024年07月26日 11:54:14   作者:qwy715229258163  
使用SQL语句能够完成对table的增删改查操作,Pandas同样也可以实现SQL语句的基本功能,本文就来介绍一下,具有一档的参考价值,感兴趣的可以了解一下

我们知道,使用 SQL 语句能够完成对 table 的增删改查操作,Pandas 同样也可以实现 SQL 语句的基本功能。本节主要讲解 Pandas 如何执行 SQL 操作。

首先加载一个某连锁咖啡厅地址分布的数据集,通过该数据集对本节内容进行讲解。

import pandas as pd
df = pd.read_excel("C:\\Users\\qwy\\Desktop\\data\\empdata.xlsx")
print(df)

输出结果如下:

    EMPNO   ENAME        JOB     MGR    HIREDATE   SAL    COMM  DEPTNO
0    7369   SMITH      CLERK  7902.0  1980-12-17   800     NaN      20
1    7499   ALLEN   SALESMAN  7698.0  1981-02-20  1600   300.0      30
2    7521    WARD   SALESMAN  7698.0  1981-02-22  1250   500.0      30
3    7566   JONES    MANAGER  7839.0  1981-04-02  2975     NaN      20
4    7654  MARTIN   SALESMAN  7698.0  1981-09-28  1250  1400.0      30
5    7698   BLAKE    MANAGER  7839.0  1981-05-01  2850     NaN      30
6    7782   CLARK    MANAGER  7839.0  1981-06-09  2450     NaN      10
7    7788   SCOTT    ANALYST  7566.0  1987-04-19  3000     NaN      20
8    7839    KING  PRESIDENT     NaN  1981-11-17  5000     NaN      10
9    7844  TURNER   SALESMAN  7698.0  1981-09-08  1500     0.0      30
10   7876   ADAMS      CLERK  7788.0  1987-05-23  1100     NaN      20
11   7900   JAMES      CLERK  7698.0  1981-12-03   950     NaN      30
12   7902    FORD    ANALYST  7566.0  1981-12-03  3000     NaN      20
13   7934  MILLER      CLERK  7782.0  1982-01-23  1300     NaN      10

SELECT

在 SQL 中,SELECT 查询语句使用,把要查询的每个字段分开,当然您也可以使用*来选择所有的字段。如下所示:

SELECT EMPNO,ENAME,JOB,MGR,HIREDATE,SAL,COMM,DEPTNO FROM emp LIMIT 5;

对于 Pandas 而言,要完成 SELECT 查询,需要把数据集每一列(columns)的名称传递给 DataFrame 对象。如下所示:

df[['EMPNO','ENAME','JOB','MGR','HIREDATE','SAL','COMM' , 'DEPTNO']].head(5)

下面代码是 Pandas 执行 SELECT 查询的完整程序:

import pandas as pd
df = pd.read_excel("C:\\Users\\qwy\\Desktop\\data\\empdata.xlsx")
emp = df[['EMPNO','ENAME','JOB','MGR','HIREDATE','SAL','COMM' , 'DEPTNO']].head(5)
print(emp)

输出结果如下:

   EMPNO   ENAME       JOB     MGR    HIREDATE   SAL    COMM  DEPTNO
0   7369   SMITH     CLERK  7902.0  1980-12-17   800     NaN      20
1   7499   ALLEN  SALESMAN  7698.0  1981-02-20  1600   300.0      30
2   7521    WARD  SALESMAN  7698.0  1981-02-22  1250   500.0      30
3   7566   JONES   MANAGER  7839.0  1981-04-02  2975     NaN      20
4   7654  MARTIN  SALESMAN  7698.0  1981-09-28  1250  1400.0      30

假如您传入的是一个空列表, 那最终结果将输出所有的行索引标签。

WHERE

SQL 中的条件查询是通过 WHERE 子句完成的。格式如下所示:

SELECT * FROM EMP WHERE DEPTNO = '30';

然而 DataFrame 可以通过多种方式实现条件筛选,最直观的方法是通过布尔索引:

df[df['DEPTNO'] == 30]

完整程序如下:

import pandas as pd
df = pd.read_excel("C:\\Users\\qwy\\Desktop\\data\\empdata.xlsx")
emp = df[df['DEPTNO'] == 30]
print(emp)

输出结果如下:

    EMPNO   ENAME       JOB     MGR    HIREDATE   SAL    COMM  DEPTNO
1    7499   ALLEN  SALESMAN  7698.0  1981-02-20  1600   300.0      30
2    7521    WARD  SALESMAN  7698.0  1981-02-22  1250   500.0      30
4    7654  MARTIN  SALESMAN  7698.0  1981-09-28  1250  1400.0      30
5    7698   BLAKE   MANAGER  7839.0  1981-05-01  2850     NaN      30
9    7844  TURNER  SALESMAN  7698.0  1981-09-08  1500     0.0      30
11   7900   JAMES     CLERK  7698.0  1981-12-03   950     NaN      30

上面的语句通过布尔运算将 True 或 False 对象传递给 DataFrame 对象,然后返回所有为 True 的行。

GroupBy

在 SQL 语句中,通过 GroupBy 操作可以获取 table 中一组记录的计数。示例如下:

SELECT id, count(*) FROM EMP GROUP BY DEPTNO;

而 Pandas 可通过以下代码实现:

df.groupby('DEPTNO').size()

完整的程序如下所示:

import pandas as pd
import numpy as np
df = pd.read_excel("C:\\Users\\qwy\\Desktop\\data\\empdata.xlsx")
emp_count = df.groupby('DEPTNO').size()
# 或者使用agg或aggregate函数
# emp_count = df.groupby('DEPTNO').aggregate({'EMPNO':np.size,'SAL':np.mean})
print(emp_count)

输出结果:

DEPTNO
10    3
20    5
30    6
dtype: int64

LIMIT

在 SQL 中,LIMIT 语句主要起到限制作用,比如查询前 n 行记录:

SELECT * FROM EMP LIMIT n;

而在 Pandas 中,您可以通过 head() 来实现(默认前 5 行),示例如下:

import pandas as pd
df = pd.read_excel("C:\\Users\\qwy\\Desktop\\data\\empdata.xlsx")
emp = df[['EMPNO','ENAME','JOB','MGR','HIREDATE','SAL','COMM' , 'DEPTNO']].head(5)
print(emp)

输出结果:

   EMPNO   ENAME       JOB     MGR    HIREDATE   SAL    COMM  DEPTNO
0   7369   SMITH     CLERK  7902.0  1980-12-17   800     NaN      20
1   7499   ALLEN  SALESMAN  7698.0  1981-02-20  1600   300.0      30
2   7521    WARD  SALESMAN  7698.0  1981-02-22  1250   500.0      30
3   7566   JONES   MANAGER  7839.0  1981-04-02  2975     NaN      20
4   7654  MARTIN  SALESMAN  7698.0  1981-09-28  1250  1400.0      30

到此这篇关于Pandas执行SQL操作的实现的文章就介绍到这了,更多相关Pandas执行SQL操作内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

您可能感兴趣的文章:

相关文章

  • PyTorch使用GPU训练的两种方法实例

    PyTorch使用GPU训练的两种方法实例

    pytorch是一个非常优秀的深度学习的框架,具有速度快,代码简洁,可读性强的优点,下面这篇文章主要给大家介绍了关于PyTorch使用GPU训练的两种方法,需要的朋友可以参考下
    2022-05-05
  • python中print的不换行即时输出的快速解决方法

    python中print的不换行即时输出的快速解决方法

    下面小编就为大家带来一篇python中print的不换行即时输出的快速解决方法。小编觉得挺不错的,现在就分享给大家,也给大家做个参考
    2016-07-07
  • 一文总结学习Python的14张思维导图

    一文总结学习Python的14张思维导图

    一文总结学习Python的14张思维导图,本文涵盖了Python编程的核心知识,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2017-10-10
  • OpenCV2从摄像头获取帧并写入视频文件的方法

    OpenCV2从摄像头获取帧并写入视频文件的方法

    今天小编就为大家分享一篇OpenCV2从摄像头获取帧并写入视频文件的方法,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2018-08-08
  • itchat-python搭建微信机器人(附示例)

    itchat-python搭建微信机器人(附示例)

    这篇文章主要介绍了itchat-python搭建微信机器人,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2019-06-06
  • python获取一组数据里最大值max函数用法实例

    python获取一组数据里最大值max函数用法实例

    这篇文章主要介绍了python获取一组数据里最大值max函数用法,实例分析了max函数的使用技巧,需要的朋友可以参考下
    2015-05-05
  • Python正则表达式匹配和提取IP地址

    Python正则表达式匹配和提取IP地址

    这篇文章主要介绍了Python正则表达式匹配和提取IP地址的实例代码,本文通过实例代码给大家介绍的非常详细,具有一定的参考借鉴价值,需要的朋友可以参考下
    2019-06-06
  • Python for循环通过序列索引迭代过程解析

    Python for循环通过序列索引迭代过程解析

    这篇文章主要介绍了Python for循环通过序列索引迭代过程解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2020-02-02
  • Python对PDF文档和PPT文档的操作详解

    Python对PDF文档和PPT文档的操作详解

    Python办公⾃动化是利⽤Python编程语⾔来创建脚本和程序,以简化、加速和⾃动化⽇常办公任务和⼯作流程的过程,它基于Python的强⼤功能和丰富的第三⽅库,使得能够处理各种办公任务,本文给大家介绍了Python对PDF文档和PPT文档的操作,需要的朋友可以参考下
    2023-12-12
  • python使用paramiko执行服务器脚本并拿到实时结果

    python使用paramiko执行服务器脚本并拿到实时结果

    这篇文章主要介绍了python使用paramiko执行服务器脚本并拿到实时结果,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2022-12-12

最新评论