Path: blob/main/docs/source/src/python/user-guide/concepts/expressions.py
7890 views
# --8<-- [start:expression]1import polars as pl23pl.col("weight") / (pl.col("height") ** 2)4# --8<-- [end:expression]56# --8<-- [start:print-expr]7bmi_expr = pl.col("weight") / (pl.col("height") ** 2)8print(bmi_expr)9# --8<-- [end:print-expr]1011# --8<-- [start:df]12from datetime import date1314df = pl.DataFrame(15{16"name": ["Alice Archer", "Ben Brown", "Chloe Cooper", "Daniel Donovan"],17"birthdate": [18date(1997, 1, 10),19date(1985, 2, 15),20date(1983, 3, 22),21date(1981, 4, 30),22],23"weight": [57.9, 72.5, 53.6, 83.1], # (kg)24"height": [1.56, 1.77, 1.65, 1.75], # (m)25}26)2728print(df)29# --8<-- [end:df]3031# --8<-- [start:select-1]32result = df.select(33bmi=bmi_expr,34avg_bmi=bmi_expr.mean(),35ideal_max_bmi=25,36)37print(result)38# --8<-- [end:select-1]3940# --8<-- [start:select-2]41result = df.select(deviation=(bmi_expr - bmi_expr.mean()) / bmi_expr.std())42print(result)43# --8<-- [end:select-2]4445# --8<-- [start:with_columns-1]46result = df.with_columns(47bmi=bmi_expr,48avg_bmi=bmi_expr.mean(),49ideal_max_bmi=25,50)51print(result)52# --8<-- [end:with_columns-1]5354# --8<-- [start:filter-1]55result = df.filter(56pl.col("birthdate").is_between(date(1982, 12, 31), date(1996, 1, 1)),57pl.col("height") > 1.7,58)59print(result)60# --8<-- [end:filter-1]6162# --8<-- [start:group_by-1]63result = df.group_by(64(pl.col("birthdate").dt.year() // 10 * 10).alias("decade"),65).agg(pl.col("name"))66print(result)67# --8<-- [end:group_by-1]6869# --8<-- [start:group_by-2]70result = df.group_by(71(pl.col("birthdate").dt.year() // 10 * 10).alias("decade"),72(pl.col("height") < 1.7).alias("short?"),73).agg(pl.col("name"))74print(result)75# --8<-- [end:group_by-2]7677# --8<-- [start:group_by-3]78result = df.group_by(79(pl.col("birthdate").dt.year() // 10 * 10).alias("decade"),80(pl.col("height") < 1.7).alias("short?"),81).agg(82pl.len(),83pl.col("height").max().alias("tallest"),84pl.col("weight", "height").mean().name.prefix("avg_"),85)86print(result)87# --8<-- [end:group_by-3]8889# --8<-- [start:expression-expansion-1]90expr = (pl.col(pl.Float64) * 1.1).name.suffix("*1.1")91result = df.select(expr)92print(result)93# --8<-- [end:expression-expansion-1]9495# --8<-- [start:expression-expansion-2]96df2 = pl.DataFrame(97{98"ints": [1, 2, 3, 4],99"letters": ["A", "B", "C", "D"],100}101)102result = df2.select(expr)103print(result)104# --8<-- [end:expression-expansion-2]105106107