[ PROMPT_NODE_27024 ]
io_guide
[ SKILL_DOCUMENTATION ]
# Polars 数据输入输出指南
全面介绍使用 Polars 读取和写入各种格式数据的指南。
## CSV 文件
### 读取 CSV
**Eager 模式(加载到内存):**
python
import polars as pl
# 基础读取
df = pl.read_csv("data.csv")
# 带选项读取
df = pl.read_csv(
"data.csv",
separator=",",
has_header=True,
columns=["col1", "col2"], # 选择特定列
n_rows=1000, # 仅读取前 1000 行
skip_rows=10, # 跳过前 10 行
dtypes={"col1": pl.Int64, "col2": pl.Utf8}, # 指定类型
null_values=["NA", "null", ""], # 定义空值
encoding="utf-8",
ignore_errors=False
)
**Lazy 模式(扫描而不加载 - 推荐用于大文件):**
python
# 扫描 CSV(构建查询计划)
lf = pl.scan_csv("data.csv")
# 应用操作
result = lf.filter(pl.col("age") > 25).select("name", "age")
# 执行并加载
df = result.collect()
### 写入 CSV
python
# 基础写入
df.write_csv("output.csv")
# 带选项写入
df.write_csv(
"output.csv",
separator=",",
include_header=True,
null_value="", # 如何表示空值
quote_char='"',
line_terminator="n"
)
### 多个 CSV 文件
**读取多个文件:**
python
# 读取目录中所有 CSV
lf = pl.scan_csv("data/*.csv")
# 读取特定文件
lf = pl.scan_csv(["file1.csv", "file2.csv", "file3.csv"])
## Parquet 文件
Parquet 是性能和压缩方面的推荐格式。
### 读取 Parquet
**Eager 模式:**
python
df = pl.read_parquet("data.parquet")
# 带选项读取
df = pl.read_parquet(
"data.parquet",
columns=["col1", "col2"], # 选择特定列
n_rows=1000, # 读取前 N 行
parallel="auto" # 控制并行化
)
**Lazy 模式(推荐):**
python
lf = pl.scan_parquet("data.parquet")
# 自动谓词和投影下推
result = lf.filter(pl.col("age") > 25).select("name", "age").collect()
### 写入 Parquet
python
# 基础写入
df.write_parquet("output.parquet")
# 带压缩写入
df.write_parquet(
"output.parquet",
compression="snappy", # 选项: "snappy", "gzip", "brotli", "lz4", "zstd"
statistics=True, # 写入统计信息(启用谓词下推)
use_pyarrow=False # 使用 Rust 写入器(更快)
)
### 分区 Parquet (Hive 风格)
**分区写入:**
python
# 带分区写入
df.write_parquet(
"output_dir",
partition_by=["year", "month"] # 创建目录结构
)
#