数据查询是根据指定的查询条件,从给定的数据中查找出需要的数据。本节分单条件查询和多条件查询两种情况进行介绍。[大谦Excel,dqexcel点com]
单条件查询
【问题描述】
根据指定的单个条件,从给定数据中查找出需要的数据。
【示例3-29】
本例使用的Excel文件的完整路径为“D:/Samples/ch03/04 数据查询/单一查询/个人信息-查询.xlsx”。该文件打开后如图3-20所示,工作表中前5行是给定的数据,是一些人员的个人信息。试根据指定的编号3,1和2,从给定的数据中找到编号对应的人员的数据。
图3-20 个人信息查询
- ChatGPT提示词模板
新建ChatGPT会话,在提问文本框中输入下面的提示词:
你是pandas专家,文件路径为:D:/Samples/ch03/04 数据查询/单一查询/个人信息-查询.xlsx。该Excel文件的第一个工作表中A1:D5为给定数据,A-D列分别为“编号”、“姓名”、“额度”和“名次”数据。用pandas导入Excel文件的数据,第1行为索引行,只导入前5行数据,引擎为"openpyxl",查询编号3,1和2对应的全部行数据并输出。
2. ChatGPT提示词模板说明
导入数据时指定“编号”列位索引列,有利于后面代码中利用编号对行数据进行索引,从而找到对应的行数据。
3. 代码
- 根据提示词得到类似下面的代码:
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窗口输出查询到的数据。
>>> == 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所示,是各种产品销售信息。现根据给定的数据,查询销售人员周德宇卖商品彩电的数量和总额,以及销售人员王学敏卖冰箱的数量和总额。
图3-21 产品销售信息
- ChatGPT提示词模板
新建ChatGPT会话,在提问文本框中输入下面的提示词:
你是pandas专家,文件路径为:D:/Samples/ch03/01 数据查询/多条件查询/销售情况-多条件查询.xlsx。该Excel文件的第一个工作表中A1:D11为给定数据,A-D列分别为“销售人员”、“商品”、“数量”和“总额”数据。用pandas导入Excel文件的数据,第1行为索引行,只导入前11行,前4列数据,引擎为"openpyxl",查询销售人员周德宇卖商品彩电的数量和总额,以及销售人员王学敏卖冰箱的数量和总额,查询结果输出为二维表格的形式。
2. 代码
- 根据提示词得到类似下面的代码:
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窗口输出查询结果。
>>> == RESTART: D:/Samples/1.py =
销售人员 商品 数量 总额
1 周德宇 彩电 83 249000
3 王学敏 冰箱 58 290000
【知识点扩展】
本例用DataFrame大小的query方法实现多条件查询。查询时,直接将多条件逻辑运算表达式作为参数赋给query方法即可,即
query = df.query('(销售人员=="周德宇" and 商品=="彩电") or(销售人员=="王学敏" and 商品=="冰箱")')