数据查询

数据查询是根据指定的查询条件,从给定的数据中查找出需要的数据。本节分单条件查询和多条件查询两种情况进行介绍。[大谦Excel,dqexcel点com]

单条件查询

【问题描述】

根据指定的单个条件,从给定数据中查找出需要的数据。

【示例3-29】

本例使用的Excel文件的完整路径为“D:/Samples/ch03/04 数据查询/单一查询/个人信息-查询.xlsx”。该文件打开后如图3-20所示,工作表中前5行是给定的数据,是一些人员的个人信息。试根据指定的编号3,1和2,从给定的数据中找到编号对应的人员的数据。

Document Image

图3-20 个人信息查询

  • ChatGPT提示词模板

新建ChatGPT会话,在提问文本框中输入下面的提示词:

prompt
你是pandas专家,文件路径为:D:/Samples/ch03/04 数据查询/单一查询/个人信息-查询.xlsx。该Excel文件的第一个工作表中A1:D5为给定数据,A-D列分别为“编号”、“姓名”、“额度”和“名次”数据。用pandas导入Excel文件的数据,第1行为索引行,只导入前5行数据,引擎为"openpyxl",查询编号3,1和2对应的全部行数据并输出。

2. ChatGPT提示词模板说明

导入数据时指定“编号”列位索引列,有利于后面代码中利用编号对行数据进行索引,从而找到对应的行数据。

3. 代码

  • 根据提示词得到类似下面的代码:
code.python
import pandas as pd
df = pd.read_excel(r'D:/Samples/ch03/04 数据查询/单一查询/个人信息-查询.xlsx', engine='openpyxl', sheet_name=0, nrows=5, index_col=0)
result = df.loc[[3, 1, 2]]
print(result)

4. 使用代码

打开Python IDLE,新建一个脚本文件,将上面生成的代码复制进去,保存到D:/Samples/1.py。运行脚本,在IDLE Shell窗口输出查询到的数据。

code.python
>>> == RESTART: D:/Samples/1.py =
     姓名     额度   名次
编号
3.0  王二  300.0  2.0
1.0  张三  100.0  4.0
2.0  李四  200.0  3.0

多条件查询

【问题描述】

根据指定的多个条件,从给定数据中查找出需要的数据。

【示例3-30】

本例使用的Excel文件的完整路径为“D:/Samples/ch03/04 数据查询/多条件查询/销售情况-多条件查询.xlsx”。该文件打开后如图3-21所示,是各种产品销售信息。现根据给定的数据,查询销售人员周德宇卖商品彩电的数量和总额,以及销售人员王学敏卖冰箱的数量和总额。

Document Image

图3-21 产品销售信息

  • ChatGPT提示词模板

新建ChatGPT会话,在提问文本框中输入下面的提示词:

prompt
你是pandas专家,文件路径为:D:/Samples/ch03/01 数据查询/多条件查询/销售情况-多条件查询.xlsx。该Excel文件的第一个工作表中A1:D11为给定数据,A-D列分别为“销售人员”、“商品”、“数量”和“总额”数据。用pandas导入Excel文件的数据,第1行为索引行,只导入前11行,前4列数据,引擎为"openpyxl",查询销售人员周德宇卖商品彩电的数量和总额,以及销售人员王学敏卖冰箱的数量和总额,查询结果输出为二维表格的形式。

2. 代码

  • 根据提示词得到类似下面的代码:
code.python
import pandas as pd
# 读取Excel文件
df = pd.read_excel('D:/Samples/ch03/01 数据查询/多条件查询/销售情况-多条件查询.xlsx',
                   engine='openpyxl', usecols=[0, 1, 2, 3], nrows=11)
# 多条件查询数据
query = df.query('(销售人员=="周德宇" and 商品=="彩电") or(销售人员=="王学敏" and 商品=="冰箱")')
# 输出查询结果
print(query)

3. 使用代码

打开Python IDLE,新建一个脚本文件,将上面生成的代码复制进去,保存到D:/Samples/1.py。运行脚本,在IDLE Shell窗口输出查询结果。

code.python
>>> == RESTART: D:/Samples/1.py =
  销售人员  商品  数量      总额
1  周德宇  彩电  83  249000
3  王学敏  冰箱  58  290000

【知识点扩展】

本例用DataFrame大小的query方法实现多条件查询。查询时,直接将多条件逻辑运算表达式作为参数赋给query方法即可,即

code.python
query = df.query('(销售人员=="周德宇" and 商品=="彩电") or(销售人员=="王学敏" and 商品=="冰箱")')