Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
pola-rs
GitHub Repository: pola-rs/polars
Path: blob/main/docs/source/src/rust/user-guide/concepts/lazy-vs-eager.rs
7889 views
1
use polars::prelude::*;
2
3
fn main() -> Result<(), Box<dyn std::error::Error>> {
4
// --8<-- [start:eager]
5
let df = CsvReadOptions::default()
6
.try_into_reader_with_file_path(Some("docs/assets/data/iris.csv".into()))
7
.unwrap()
8
.finish()
9
.unwrap();
10
let mask = df.column("sepal_length")?.f64()?.gt(5.0);
11
let df_small = df.filter(&mask)?;
12
#[allow(deprecated)]
13
let df_agg = df_small
14
.group_by(["species"])?
15
.select(["sepal_width"])
16
.mean()?;
17
println!("{df_agg}");
18
// --8<-- [end:eager]
19
20
// --8<-- [start:lazy]
21
let q = LazyCsvReader::new(PlPath::new("docs/assets/data/iris.csv"))
22
.with_has_header(true)
23
.finish()?
24
.filter(col("sepal_length").gt(lit(5)))
25
.group_by(vec![col("species")])
26
.agg([col("sepal_width").mean()]);
27
let df = q.collect()?;
28
println!("{df}");
29
// --8<-- [end:lazy]
30
31
// --8<-- [start:explain]
32
let q = LazyCsvReader::new(PlPath::new("docs/assets/data/iris.csv"))
33
.with_has_header(true)
34
.finish()?
35
.filter(col("sepal_length").gt(lit(5)))
36
.group_by(vec![col("species")])
37
.agg([col("sepal_width").mean()]);
38
println!("{}", q.explain(true)?);
39
// --8<-- [end:explain]
40
41
Ok(())
42
}
43
44