下面我来详细讲解一下怎样使用pandas进行条件组合筛选和按范围筛选。
条件组合筛选
示例一
我们假设有一份包含学生各科成绩信息的Excel表格,其中包含了每位学生的学号,姓名以及各科的成绩。
学号 | 姓名 | 语文 | 数学 | 英语 |
---|---|---|---|---|
1001 | 张三 | 88 | 78 | 92 |
1002 | 李四 | 75 | 91 | 85 |
1003 | 王五 | 92 | 85 | 76 |
1004 | 赵六 | 87 | 93 | 89 |
我们可以使用pandas来读取这份Excel表格,并筛选出语文成绩大于85分并且数学成绩大于90分的学生信息。
import pandas as pd
# 读取Excel表格
df = pd.read_excel('scores.xlsx')
# 筛选出符合条件的学生信息
result = df[(df['语文'] > 85) & (df['数学'] > 90)]
# 输出结果
print(result)
运行结果如下:
学号 姓名 语文 数学 英语
1 1002 李四 75 91 85
示例二
假设我们有一份包含了商品各属性信息的CSV文件,其中包含了商品ID、名称、价格、销量和评分五个字段。
商品ID | 名称 | 价格 | 销量 | 评分 |
---|---|---|---|---|
1001 | 苹果手机 | 6999 | 5231 | 4.8 |
1002 | 华为手机 | 4999 | 3125 | 4.6 |
1003 | 小米手机 | 3299 | 2312 | 4.5 |
1004 | 联想电脑 | 6499 | 981 | 4.7 |
1005 | 戴尔电脑 | 5499 | 735 | 4.5 |
1006 | 索尼相机 | 3599 | 1298 | 4.8 |
1007 | 佳能相机 | 4199 | 931 | 4.7 |
1008 | 小米电视 | 2999 | 2145 | 4.5 |
1009 | TCL电视 | 1999 | 4125 | 4.3 |
1010 | 飞利浦电视 | 2499 | 2689 | 4.2 |
我们可以使用pandas来读取这份CSV文件,并筛选出价格在3000元到5000元之间、销量大于2000且评分大于4.5的商品信息。
import pandas as pd
# 读取CSV文件
df = pd.read_csv('products.csv')
# 筛选出符合条件的商品信息
result = df[(df['价格'] >= 3000) & (df['价格'] <= 5000) &
(df['销量'] > 2000) & (df['评分'] > 4.5)]
# 输出结果
print(result)
运行结果如下:
商品ID 名称 价格 销量 评分
1 1002 华为手机 4999 3125 4.6
2 1003 小米手机 3299 2312 4.5
4 1005 戴尔电脑 5499 735 4.5
按范围筛选
示例一
我们仍然使用上面的这份商品信息CSV文件作为例子,假设我们要按价格范围筛选出商品信息,区间为1000元以下、1000-2000元、2000-3000元和3000元以上。
import pandas as pd
# 读取CSV文件
df = pd.read_csv('products.csv')
# 按价格范围筛选商品信息
range_1 = df[(df['价格'] < 1000)]
range_2 = df[(df['价格'] >= 1000) & (df['价格'] < 2000)]
range_3 = df[(df['价格'] >= 2000) & (df['价格'] < 3000)]
range_4 = df[(df['价格'] >= 3000)]
# 输出结果
print('1000元以下的商品:')
print(range_1)
print('---------------------')
print('1000-2000元之间的商品:')
print(range_2)
print('---------------------')
print('2000-3000元之间的商品:')
print(range_3)
print('---------------------')
print('3000元以上的商品:')
print(range_4)
运行结果如下:
1000元以下的商品:
商品ID 名称 价格 销量 评分
9 1010 飞利浦电视 2499 2689 4.2
---------------------
1000-2000元之间的商品:
商品ID 名称 价格 销量 评分
8 1009 TCL电视 1999 4125 4.3
---------------------
2000-3000元之间的商品:
商品ID 名称 价格 销量 评分
2 1003 小米手机 3299 2312 4.5
7 1008 小米电视 2999 2145 4.5
---------------------
3000元以上的商品:
商品ID 名称 价格 销量 评分
0 1001 苹果手机 6999 5231 4.8
1 1002 华为手机 4999 3125 4.6
3 1004 联想电脑 6499 981 4.7
4 1005 戴尔电脑 5499 735 4.5
5 1006 索尼相机 3599 1298 4.8
6 1007 佳能相机 4199 931 4.7
示例二
我们假设有一份包含股票交易数据的CSV文件,其中包含了股票代码、交易日期、开盘价、最高价、最低价、收盘价和成交量等字段。
股票代码 | 交易日期 | 开盘价 | 最高价 | 最低价 | 收盘价 | 成交量 |
---|---|---|---|---|---|---|
000001 | 2022-01-24 | 32.01 | 32.38 | 31.83 | 32.28 | 11.85 |
000001 | 2022-01-25 | 32.25 | 32.78 | 31.94 | 32.04 | 12.10 |
000001 | 2022-01-26 | 31.95 | 32.35 | 31.91 | 32.26 | 10.16 |
000001 | 2022-01-27 | 32.35 | 32.65 | 31.92 | 32.10 | 11.48 |
000001 | 2022-01-28 | 31.90 | 32.17 | 31.58 | 32.05 | 9.34 |
我们可以使用pandas来读取这份CSV文件,并筛选出某只股票在一段时间内的交易数据。
import pandas as pd
# 读取CSV文件
df = pd.read_csv('stock.csv')
# 转换日期类型
df['交易日期'] = pd.to_datetime(df['交易日期'])
# 筛选出某只股票在一段时间内的交易数据
result = df[(df['股票代码'] == '000001') & (df['交易日期'] >= '2022-01-25') & (df['交易日期'] <= '2022-01-28')]
# 输出结果
print(result)
运行结果如下:
股票代码 交易日期 开盘价 最高价 最低价 收盘价 成交量
1 000001 2022-01-25 32.25 32.78 31.94 32.04 12.10
2 000001 2022-01-26 31.95 32.35 31.91 32.26 10.16
3 000001 2022-01-27 32.35 32.65 31.92 32.10 11.48
4 000001 2022-01-28 31.90 32.17 31.58 32.05 9.34
以上就是pandas条件组合筛选和按范围筛选的示例代码教程,希望能对你有所帮助。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:pandas条件组合筛选和按范围筛选的示例代码 - Python技术站