当前位置: 首页 > news >正文

pd.read_parquet 详细使用说明

pd.read_parquet 详细使用说明

pd.read_parquet是 pandas 中用于读取 Parquet 格式文件的函数。Parquet 是一种列式存储格式,在大数据场景下性能优异。下面详细介绍其常用参数,重点说明过滤条件的使用。

基本语法

importpandasaspd df=pd.read_parquet(path,# 文件路径engine='auto',# 引擎选择columns=None,# 指定读取的列filters=None,# 过滤条件 ⭐重点storage_options=None,# 存储选项**kwargs# 其他传递给引擎的参数)

核心参数详解

参数类型说明
pathstr/Path文件路径,支持本地路径或URL(http、ftp、s3、gs等)
enginestr解析引擎:‘auto’(默认)、‘pyarrow’、‘fastparquet’。推荐使用’pyarrow’,性能更好且支持行级过滤
columnslist指定要读取的列名列表,只加载这些列,可大幅减少内存占用
filtersList[Tuple] 或 List[List[Tuple]]过滤条件,在读取时进行数据过滤

filters 过滤条件详解

语法格式

# 基本格式:每个条件是 (列名, 操作符, 值)filters=[(column,op,value),...]# 复杂格式:支持 AND/OR 组合filters=[[(col1,op1,val1),(col2,op2,val2)],...]# 内层 AND,外层 OR

支持的操作符

操作符说明示例
==,=等于('date', '==', '2024-01-01')
>大于('price', '>', 100)
>=大于等于('volume', '>=', 10000)
<小于('change', '<', 0)
<=小于等于('pe', '<=', 30)
!=不等于('industry', '!=', '金融')
in包含于('ts_code', 'in', ['000001', '000002'])
not in不包含于('status', 'not in', ['ST', '*ST'])

过滤逻辑规则

过滤条件的逻辑遵循析取范式(DNF)

  • 内层列表:元组之间是AND(与)关系
  • 外层列表:各组之间是OR(或)关系
[[条件A, 条件B], [条件C, 条件D]] 等价于:(条件A AND 条件B) OR (条件C AND 条件D)

过滤条件示例

示例1:单个条件

# 读取价格大于100的行df=pd.read_parquet('data.parquet',filters=[('price','>',100)])

示例2:多个条件(AND关系)

# 读取价格大于100且成交量大于10000的行filters=[('price','>',100),('volume','>',10000)]df=pd.read_parquet('data.parquet',filters=filters)

示例3:多个条件组(OR关系)

# 读取 金融行业 或 科技行业 的数据filters=[[('industry','==','金融')],[('industry','==','科技')]]df=pd.read_parquet('data.parquet',filters=filters)

示例4:复合条件

# 读取 (金融行业且PE<15) 或 (科技行业且PE>30) 的数据filters=[[('industry','==','金融'),('pe','<',15)],[('industry','==','科技'),('pe','>',30)]]df=pd.read_parquet('data.parquet',filters=filters)

示例5:日期范围过滤

# 读取2024年1月的数据filters=[('trade_date','>=','2024-01-01'),('trade_date','<=','2024-01-31')]df=pd.read_parquet('data.parquet',filters=filters)

示例6:使用in操作符

# 读取指定股票列表的数据stock_list=['000001.SZ','000002.SZ','600000.SH']filters=[('ts_code','in',stock_list)]df=pd.read_parquet('data.parquet',filters=filters)

重要注意事项

1. 引擎影响过滤效果

使用pyarrow引擎时:支持行级过滤,真正只加载符合条件的行数据,可显著减少内存和IO

使用fastparquet引擎时:仅在分区级别过滤,可能加载部分不符合条件的行

# 推荐:显式指定 pyarrow 引擎以获得行级过滤df=pd.read_parquet('data.parquet',engine='pyarrow',filters=[('price','>',100)])

2. 过滤不是万能的

filters参数的主要作用是减少读取的数据量,但不能完全替代数据加载后的精确过滤。建议:

  • 先用filters粗筛,减少数据量
  • 再用 DataFrame 的查询方法(如.query()或布尔索引)进行精确过滤
# 推荐的两阶段过滤df=pd.read_parquet('data.parquet',filters=[('date','>=','2024-01-01')])result=df[df['price']>100]# 二次精确过滤

3. 列名和数据类型

  • 列名必须与文件中的列名完全匹配(区分大小写)
  • 值的数据类型应与列的数据类型一致
# 数值列用数值,字符串列用字符串filters=[('price','>',100.0),('ts_code','==','000001.SZ')]

其他实用参数

columns 参数

只读取指定列,大幅减少内存使用:

# 只读取需要的列df=pd.read_parquet('data.parquet',columns=['ts_code','trade_date','close','volume'])

组合使用 columns 和 filters

# 先过滤行,再选择列,效率最高df=pd.read_parquet('data.parquet',columns=['ts_code','close','volume'],# 只读需要的列filters=[('trade_date','>=','2024-01-01'),# 行过滤('trade_date','<=','2024-12-31')])

http://www.jsqmd.com/news/617688/

相关文章:

  • 告别CAN总线!用NXP MC33665A+MC33775A搭建BMS菊花链,保姆级硬件连接与SPI配置指南
  • 用 Vault 系统构建 AI 时代的跨项目知识库
  • Universal Pokemon Randomizer ZX 深度解析:七世代宝可梦游戏随机化技术实现
  • 常州环之宇再生资源有限公司:常州新北区废铜 废铁回收电话 - LYL仔仔
  • Leather Dress Collection 硬件协同设计参考:从算法描述到系统板资源评估
  • 开源中国AI教育战略全面升级:打造全学段AI人才培养新基建
  • 终极指南:Bilibili-Old开源项目快速恢复B站经典界面体验
  • 2026年贵阳装修公司挑选指南:3招教你省钱选对靠谱家居服务 - 精选优质企业推荐榜
  • 【高精度气象】极端天气一来,零售最先出问题的不是客流,而是补货体系和损失控制
  • ZLibrary访问困境方案五:Tor网络与洋葱路由的合规使用场景分析
  • Playwright MCP:基于模型上下文协议的浏览器自动化架构设计与最佳实践
  • TEC半导体致冷选型实战:【从原理到参数,手把手教你精准匹配】
  • 5个理由告诉你为什么Qt开发者必须掌握QHotkey全局快捷键技术
  • 长光辰芯开启招股:拟募资25亿港元 4月17日上市 高瓴与博裕加持
  • 2026年贵阳家居定做选购攻略:3招教你省钱挑到靠谱厂家 - 精选优质企业推荐榜
  • WE Learn助手:3步安装,5大功能,彻底告别网课学习烦恼
  • 贵州最推荐的贵州漂流景区打卡地有哪些?2026年贵阳安顺等地区市场选择前五排名 - 十大品牌榜
  • YOLO优化研究
  • 深入解析Compose状态管理:从基础到高级实践
  • NLP-StructBERT句向量可视化分析:惊艳的语义空间分布展示
  • VisionTransformer(四)BIT—— 从孪生Token到像素级变化图的生成逻辑
  • 腾讯股权曝光:马化腾持股8.8% 获派息42亿港元 Prosus持股降至22.8%
  • OpenClaw权限精细化:Qwen3-32B镜像的任务执行沙盒配置
  • 终极免费文档下载神器:一键获取30+平台完整资料指南
  • 项目管理工具怎么选?2026主流选型对比
  • AI打工人时代:Token就是新工资
  • Nested ESXi 8.x/9.0 虚拟设备下载与使用完全指南
  • 能碳管理系统如何助力企业实现节能降耗
  • 艾尔登法环存档管理:3步安全迁移你的游戏角色
  • 基于yolo的钢筋盘点技术方案