在 Linux 中用 Rust 做数据分析的实战路线
一 环境准备与工具链
二 数据处理与分析常用库
三 端到端示例 读取 CSV 抽样统计并可视化
[dependencies]
polars = { version = "0.40", features = ["csv", "lazy"] }
// src/main.rs
use polars::prelude::*;
use std::error::Error;
fn main() -> Result<(), Box<dyn Error>> {
// 1) 读取 CSV(惰性模式)
let lf = LazyCsvReader::new("data.csv")
.has_header(true)
.finish()?;
// 2) 抽样:例如取 10%(若数据极大,可先抽样再计算)
let sampled = lf.clone().sample_n(1_000); // 或 .sample_frac(0.1)
// 3) 计算基本统计(示例对数值列 "value")
let stats = sampled
.select([col("value")
.mean()
.alias("mean"),
col("value").median().alias("median"),
col("value").std(1).alias("std"),
col("value").min().alias("min"),
col("value").max().alias("max"),
])
.collect()?;
println!("{:?}", stats);
// 4) 导出结果,便于 Python/R 可视化
let mut file = std::fs::File::create("summary.csv")?;
CsvWriter::new(&mut file)
.has_header(true)
.finish(&stats)?;
Ok(())
}
cargo run --release
import pandas as pd
import seaborn as sns
import matplotlib.pyplot as plt
df = pd.read_csv("summary.csv")
sns.barplot(data=df.melt(id_vars=[], var_name="metric", value_name="value"))
plt.title("Summary Statistics")
plt.show()
四 性能优化与剖析
五 与 R 或 Python 的协作方式