<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
  <channel>
    <title>Py/Polars on serhii.net</title>
    <link>https://serhii.net/tags/py/polars/</link>
    <description>Recent content in Py/Polars on serhii.net</description>
    <generator>Hugo</generator>
    <language>en-us</language>
    <copyright>Serhii Hamotskyi / serhii.net</copyright>
    <lastBuildDate>Fri, 09 Oct 2026 00:00:00 +0200</lastBuildDate>
    <atom:link href="https://serhii.net/tags/py/polars/index.xml" rel="self" type="application/rss+xml" />
    <item>
      <title>Polars overkill show all rows-cols decorator</title>
      <link>https://serhii.net/dtb/261009-1914-polars-overkill-show-all-rows-cols-decorator/</link>
      <pubDate>Fri, 09 Oct 2026 00:00:00 +0200</pubDate>
      <guid>https://serhii.net/dtb/261009-1914-polars-overkill-show-all-rows-cols-decorator/</guid>
      <description>&lt;p&gt;Overkill and suboptimal but good enough and makes my jupyter stuff more pleasant&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#e7e9db;background-color:#2f1e2e;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-python&#34; data-lang=&#34;python&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#815ba4&#34;&gt;class&lt;/span&gt; &lt;span style=&#34;color:#fec418&#34;&gt;DDecorator&lt;/span&gt;(ContextDecorator):&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#48b685&#34;&gt;&amp;#34;&amp;#34;&amp;#34;To use:&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#48b685&#34;&gt;    DD = DDecorator()&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#48b685&#34;&gt;    with DD:&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#48b685&#34;&gt;        your pl stuff with shown cols rows&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#48b685&#34;&gt;    # or&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#48b685&#34;&gt;    DD(your_df) -&amp;gt; display(your_df)&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#48b685&#34;&gt;    &amp;#34;&amp;#34;&amp;#34;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#815ba4&#34;&gt;def&lt;/span&gt; &lt;span style=&#34;color:#06b6ef&#34;&gt;__init__&lt;/span&gt;(self, ncols&lt;span style=&#34;color:#5bc4bf&#34;&gt;=-&lt;/span&gt;&lt;span style=&#34;color:#f99b15&#34;&gt;1&lt;/span&gt;, nrows&lt;span style=&#34;color:#5bc4bf&#34;&gt;=-&lt;/span&gt;&lt;span style=&#34;color:#f99b15&#34;&gt;1&lt;/span&gt;):&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        self&lt;span style=&#34;color:#5bc4bf&#34;&gt;.&lt;/span&gt;ncols &lt;span style=&#34;color:#5bc4bf&#34;&gt;=&lt;/span&gt; ncols&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        self&lt;span style=&#34;color:#5bc4bf&#34;&gt;.&lt;/span&gt;nrows &lt;span style=&#34;color:#5bc4bf&#34;&gt;=&lt;/span&gt; nrows&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        def_state &lt;span style=&#34;color:#5bc4bf&#34;&gt;=&lt;/span&gt; pl&lt;span style=&#34;color:#5bc4bf&#34;&gt;.&lt;/span&gt;Config&lt;span style=&#34;color:#5bc4bf&#34;&gt;.&lt;/span&gt;state()&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#776e71&#34;&gt;# print(def_state)&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        self&lt;span style=&#34;color:#5bc4bf&#34;&gt;.&lt;/span&gt;d_ncols &lt;span style=&#34;color:#5bc4bf&#34;&gt;=&lt;/span&gt; def_state[&lt;span style=&#34;color:#48b685&#34;&gt;&amp;#34;POLARS_FMT_MAX_COLS&amp;#34;&lt;/span&gt;]&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        self&lt;span style=&#34;color:#5bc4bf&#34;&gt;.&lt;/span&gt;d_nrows &lt;span style=&#34;color:#5bc4bf&#34;&gt;=&lt;/span&gt; def_state[&lt;span style=&#34;color:#48b685&#34;&gt;&amp;#34;POLARS_FMT_MAX_ROWS&amp;#34;&lt;/span&gt;]&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#815ba4&#34;&gt;def&lt;/span&gt; &lt;span style=&#34;color:#06b6ef&#34;&gt;__call__&lt;/span&gt;(self, df, all: bool &lt;span style=&#34;color:#5bc4bf&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#815ba4&#34;&gt;False&lt;/span&gt;, ncols&lt;span style=&#34;color:#5bc4bf&#34;&gt;=&lt;/span&gt;&lt;span style=&#34;color:#815ba4&#34;&gt;None&lt;/span&gt;, nrows&lt;span style=&#34;color:#5bc4bf&#34;&gt;=&lt;/span&gt;&lt;span style=&#34;color:#815ba4&#34;&gt;None&lt;/span&gt;):&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        ncols &lt;span style=&#34;color:#5bc4bf&#34;&gt;=&lt;/span&gt; self&lt;span style=&#34;color:#5bc4bf&#34;&gt;.&lt;/span&gt;ncols &lt;span style=&#34;color:#815ba4&#34;&gt;if&lt;/span&gt; ncols &lt;span style=&#34;color:#5bc4bf&#34;&gt;is&lt;/span&gt; &lt;span style=&#34;color:#815ba4&#34;&gt;None&lt;/span&gt; &lt;span style=&#34;color:#815ba4&#34;&gt;else&lt;/span&gt; ncols&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        nrows &lt;span style=&#34;color:#5bc4bf&#34;&gt;=&lt;/span&gt; self&lt;span style=&#34;color:#5bc4bf&#34;&gt;.&lt;/span&gt;nrows &lt;span style=&#34;color:#815ba4&#34;&gt;if&lt;/span&gt; nrows &lt;span style=&#34;color:#5bc4bf&#34;&gt;is&lt;/span&gt; &lt;span style=&#34;color:#815ba4&#34;&gt;None&lt;/span&gt; &lt;span style=&#34;color:#815ba4&#34;&gt;else&lt;/span&gt; nrows&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#815ba4&#34;&gt;if&lt;/span&gt; all:&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;            ncols &lt;span style=&#34;color:#5bc4bf&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#5bc4bf&#34;&gt;-&lt;/span&gt;&lt;span style=&#34;color:#f99b15&#34;&gt;1&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;            nrows &lt;span style=&#34;color:#5bc4bf&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#5bc4bf&#34;&gt;-&lt;/span&gt;&lt;span style=&#34;color:#f99b15&#34;&gt;1&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#815ba4&#34;&gt;with&lt;/span&gt; pl&lt;span style=&#34;color:#5bc4bf&#34;&gt;.&lt;/span&gt;Config(set_tbl_cols&lt;span style=&#34;color:#5bc4bf&#34;&gt;=&lt;/span&gt;ncols, set_tbl_rows&lt;span style=&#34;color:#5bc4bf&#34;&gt;=&lt;/span&gt;nrows):&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;            display(df)&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#815ba4&#34;&gt;def&lt;/span&gt; &lt;span style=&#34;color:#06b6ef&#34;&gt;__enter__&lt;/span&gt;(self):&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        pl&lt;span style=&#34;color:#5bc4bf&#34;&gt;.&lt;/span&gt;Config&lt;span style=&#34;color:#5bc4bf&#34;&gt;.&lt;/span&gt;set_tbl_rows(self&lt;span style=&#34;color:#5bc4bf&#34;&gt;.&lt;/span&gt;nrows)&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        pl&lt;span style=&#34;color:#5bc4bf&#34;&gt;.&lt;/span&gt;Config&lt;span style=&#34;color:#5bc4bf&#34;&gt;.&lt;/span&gt;set_tbl_cols(self&lt;span style=&#34;color:#5bc4bf&#34;&gt;.&lt;/span&gt;ncols)&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#815ba4&#34;&gt;return&lt;/span&gt; self&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#815ba4&#34;&gt;def&lt;/span&gt; &lt;span style=&#34;color:#06b6ef&#34;&gt;__exit__&lt;/span&gt;(self, &lt;span style=&#34;color:#5bc4bf&#34;&gt;*&lt;/span&gt;exc):&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#776e71&#34;&gt;# print(&amp;#34;Finishing&amp;#34;)&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#776e71&#34;&gt;# default vals&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        pl&lt;span style=&#34;color:#5bc4bf&#34;&gt;.&lt;/span&gt;Config&lt;span style=&#34;color:#5bc4bf&#34;&gt;.&lt;/span&gt;set_tbl_rows(self&lt;span style=&#34;color:#5bc4bf&#34;&gt;.&lt;/span&gt;d_nrows)&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        pl&lt;span style=&#34;color:#5bc4bf&#34;&gt;.&lt;/span&gt;Config&lt;span style=&#34;color:#5bc4bf&#34;&gt;.&lt;/span&gt;set_tbl_cols(self&lt;span style=&#34;color:#5bc4bf&#34;&gt;.&lt;/span&gt;d_ncols)&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#815ba4&#34;&gt;return&lt;/span&gt; &lt;span style=&#34;color:#815ba4&#34;&gt;False&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;DD &lt;span style=&#34;color:#5bc4bf&#34;&gt;=&lt;/span&gt; DDecorator(nrows&lt;span style=&#34;color:#5bc4bf&#34;&gt;=&lt;/span&gt;&lt;span style=&#34;color:#f99b15&#34;&gt;30&lt;/span&gt;, ncols&lt;span style=&#34;color:#5bc4bf&#34;&gt;=&lt;/span&gt;&lt;span style=&#34;color:#f99b15&#34;&gt;30&lt;/span&gt;)&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#815ba4&#34;&gt;def&lt;/span&gt; &lt;span style=&#34;color:#06b6ef&#34;&gt;describe&lt;/span&gt;(df):&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#776e71&#34;&gt;# with DDecorator(ncols=-1):&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#815ba4&#34;&gt;with&lt;/span&gt; pl&lt;span style=&#34;color:#5bc4bf&#34;&gt;.&lt;/span&gt;Config(set_tbl_cols&lt;span style=&#34;color:#5bc4bf&#34;&gt;=-&lt;/span&gt;&lt;span style=&#34;color:#f99b15&#34;&gt;1&lt;/span&gt;):&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        itables&lt;span style=&#34;color:#5bc4bf&#34;&gt;.&lt;/span&gt;show(&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;            df&lt;span style=&#34;color:#5bc4bf&#34;&gt;.&lt;/span&gt;describe(percentiles&lt;span style=&#34;color:#5bc4bf&#34;&gt;=&lt;/span&gt;&lt;span style=&#34;color:#815ba4&#34;&gt;None&lt;/span&gt;), fixedColumns&lt;span style=&#34;color:#5bc4bf&#34;&gt;=&lt;/span&gt;{&lt;span style=&#34;color:#48b685&#34;&gt;&amp;#34;start&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#f99b15&#34;&gt;1&lt;/span&gt;}, scrollX&lt;span style=&#34;color:#5bc4bf&#34;&gt;=&lt;/span&gt;&lt;span style=&#34;color:#815ba4&#34;&gt;True&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        )&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;</description>
    </item>
    <item>
      <title>Misc polars notes</title>
      <link>https://serhii.net/dtb/261008-1757-misc-polars-notes/</link>
      <pubDate>Thu, 08 Oct 2026 00:00:00 +0200</pubDate>
      <guid>https://serhii.net/dtb/261008-1757-misc-polars-notes/</guid>
      <description>&lt;h2 id=&#34;input&#34;&gt;Input&lt;/h2&gt;&#xA;&lt;h3 id=&#34;read-multiple-csv-files-with-globs&#34;&gt;Read multiple CSV files with GLOBS!&lt;/h3&gt;&#xA;&lt;p&gt;&lt;a href=&#34;https://docs.pola.rs/user-guide/io/multiple/#dealing-with-multiple-files&#34;&gt;Multiple - Polars user guide&lt;/a&gt;:&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#e7e9db;background-color:#2f1e2e;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-python&#34; data-lang=&#34;python&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;df &lt;span style=&#34;color:#5bc4bf&#34;&gt;=&lt;/span&gt; pl&lt;span style=&#34;color:#5bc4bf&#34;&gt;.&lt;/span&gt;read_csv(&lt;span style=&#34;color:#48b685&#34;&gt;&amp;#34;docs/assets/data/my_many_files_*.csv&amp;#34;&lt;/span&gt;)&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;&lt;a href=&#34;https://docs.pola.rs/api/python/stable/reference/api/polars.read_csv.html&#34;&gt;polars.read_csv — Polars documentation&lt;/a&gt;  actually accepts lists as well!&lt;/p&gt;&#xA;&lt;h2 id=&#34;utils&#34;&gt;Utils&lt;/h2&gt;&#xA;&lt;h3 id=&#34;stack-helper-fn&#34;&gt;Stack helper fn&lt;/h3&gt;&#xA;&lt;p&gt;Essentially transform a df with cols &lt;code&gt;l_metric&lt;/code&gt;,&lt;code&gt;t_metric&lt;/code&gt;,&lt;code&gt;l_another&lt;/code&gt;,&lt;code&gt;t_another&lt;/code&gt; into one with cols &lt;code&gt;type&lt;/code&gt;(=l or t), &lt;code&gt;metric&lt;/code&gt;,&lt;code&gt;another&lt;/code&gt;.&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#e7e9db;background-color:#2f1e2e;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-python&#34; data-lang=&#34;python&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#815ba4&#34;&gt;def&lt;/span&gt; &lt;span style=&#34;color:#06b6ef&#34;&gt;stack_types&lt;/span&gt;(&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    df: pl&lt;span style=&#34;color:#5bc4bf&#34;&gt;.&lt;/span&gt;DataFrame,&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    types: Sequence[str] &lt;span style=&#34;color:#5bc4bf&#34;&gt;=&lt;/span&gt; (&lt;span style=&#34;color:#48b685&#34;&gt;&amp;#34;l&amp;#34;&lt;/span&gt;, &lt;span style=&#34;color:#48b685&#34;&gt;&amp;#34;t&amp;#34;&lt;/span&gt;),&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    metrics: Sequence[str] &lt;span style=&#34;color:#5bc4bf&#34;&gt;=&lt;/span&gt; (&lt;span style=&#34;color:#48b685&#34;&gt;&amp;#34;num_words&amp;#34;&lt;/span&gt;, &lt;span style=&#34;color:#48b685&#34;&gt;&amp;#34;num_chars&amp;#34;&lt;/span&gt;),&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    id_cols: Sequence[str] &lt;span style=&#34;color:#5bc4bf&#34;&gt;=&lt;/span&gt; (),&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    type_key&lt;span style=&#34;color:#5bc4bf&#34;&gt;=&lt;/span&gt;&lt;span style=&#34;color:#48b685&#34;&gt;&amp;#34;type&amp;#34;&lt;/span&gt;,&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;) &lt;span style=&#34;color:#5bc4bf&#34;&gt;-&amp;gt;&lt;/span&gt; pl&lt;span style=&#34;color:#5bc4bf&#34;&gt;.&lt;/span&gt;DataFrame:&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#48b685&#34;&gt;&amp;#34;&amp;#34;&amp;#34;Stack prefixed metric columns into long format.&amp;#34;&amp;#34;&amp;#34;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#815ba4&#34;&gt;return&lt;/span&gt; pl&lt;span style=&#34;color:#5bc4bf&#34;&gt;.&lt;/span&gt;concat(&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        [&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;            df&lt;span style=&#34;color:#5bc4bf&#34;&gt;.&lt;/span&gt;select(&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;                &lt;span style=&#34;color:#5bc4bf&#34;&gt;*&lt;/span&gt;id_cols,&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;                &lt;span style=&#34;color:#5bc4bf&#34;&gt;*&lt;/span&gt;(c(&lt;span style=&#34;color:#48b685&#34;&gt;f&lt;/span&gt;&lt;span style=&#34;color:#48b685&#34;&gt;&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#f99b15&#34;&gt;{&lt;/span&gt;t&lt;span style=&#34;color:#f99b15&#34;&gt;}&lt;/span&gt;&lt;span style=&#34;color:#48b685&#34;&gt;_&lt;/span&gt;&lt;span style=&#34;color:#f99b15&#34;&gt;{&lt;/span&gt;m&lt;span style=&#34;color:#f99b15&#34;&gt;}&lt;/span&gt;&lt;span style=&#34;color:#48b685&#34;&gt;&amp;#34;&lt;/span&gt;)&lt;span style=&#34;color:#5bc4bf&#34;&gt;.&lt;/span&gt;alias(m) &lt;span style=&#34;color:#815ba4&#34;&gt;for&lt;/span&gt; m &lt;span style=&#34;color:#5bc4bf&#34;&gt;in&lt;/span&gt; metrics),&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;                type&lt;span style=&#34;color:#5bc4bf&#34;&gt;=&lt;/span&gt;pl&lt;span style=&#34;color:#5bc4bf&#34;&gt;.&lt;/span&gt;lit(t),&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;            )&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;            &lt;span style=&#34;color:#815ba4&#34;&gt;for&lt;/span&gt; t &lt;span style=&#34;color:#5bc4bf&#34;&gt;in&lt;/span&gt; types&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        ]&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    )&lt;span style=&#34;color:#5bc4bf&#34;&gt;.&lt;/span&gt;rename({&lt;span style=&#34;color:#48b685&#34;&gt;&amp;#34;type&amp;#34;&lt;/span&gt;: type_key})&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h2 id=&#34;bits&#34;&gt;Bits&lt;/h2&gt;&#xA;&lt;h3 id=&#34;if-then-else-otherwise-nested&#34;&gt;If then else otherwise nested&lt;/h3&gt;&#xA;&lt;p&gt;&lt;a href=&#34;https://docs.pola.rs/api/python/stable/reference/expressions/api/polars.when.html&#34;&gt;polars.when — Polars documentation&lt;/a&gt;&lt;/p&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&lt;code&gt;otherwise()&lt;/code&gt; defaults to &lt;code&gt;None&lt;/code&gt;&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;The first one is picked if multiple conditions fit&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#e7e9db;background-color:#2f1e2e;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-python&#34; data-lang=&#34;python&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#776e71&#34;&gt;# If multiple fit then the first one is picked&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;df&lt;span style=&#34;color:#5bc4bf&#34;&gt;.&lt;/span&gt;with_columns(&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    pl&lt;span style=&#34;color:#5bc4bf&#34;&gt;.&lt;/span&gt;when(pl&lt;span style=&#34;color:#5bc4bf&#34;&gt;.&lt;/span&gt;col&lt;span style=&#34;color:#5bc4bf&#34;&gt;.&lt;/span&gt;foo &lt;span style=&#34;color:#5bc4bf&#34;&gt;&amp;gt;&lt;/span&gt; &lt;span style=&#34;color:#f99b15&#34;&gt;2&lt;/span&gt;)&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#5bc4bf&#34;&gt;.&lt;/span&gt;then(&lt;span style=&#34;color:#f99b15&#34;&gt;1&lt;/span&gt;)&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#5bc4bf&#34;&gt;.&lt;/span&gt;when(pl&lt;span style=&#34;color:#5bc4bf&#34;&gt;.&lt;/span&gt;col&lt;span style=&#34;color:#5bc4bf&#34;&gt;.&lt;/span&gt;bar &lt;span style=&#34;color:#5bc4bf&#34;&gt;&amp;gt;&lt;/span&gt; &lt;span style=&#34;color:#f99b15&#34;&gt;2&lt;/span&gt;)&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#5bc4bf&#34;&gt;.&lt;/span&gt;then(&lt;span style=&#34;color:#f99b15&#34;&gt;4&lt;/span&gt;)&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#5bc4bf&#34;&gt;.&lt;/span&gt;otherwise(&lt;span style=&#34;color:#5bc4bf&#34;&gt;-&lt;/span&gt;&lt;span style=&#34;color:#f99b15&#34;&gt;1&lt;/span&gt;)&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#5bc4bf&#34;&gt;.&lt;/span&gt;alias(&lt;span style=&#34;color:#48b685&#34;&gt;&amp;#34;val&amp;#34;&lt;/span&gt;)&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;)&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;df&lt;span style=&#34;color:#5bc4bf&#34;&gt;.&lt;/span&gt;with_columns(&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#5bc4bf&#34;&gt;...&lt;/span&gt;     when1 &lt;span style=&#34;color:#5bc4bf&#34;&gt;=&lt;/span&gt; pl&lt;span style=&#34;color:#5bc4bf&#34;&gt;.&lt;/span&gt;col&lt;span style=&#34;color:#5bc4bf&#34;&gt;.&lt;/span&gt;foo &lt;span style=&#34;color:#5bc4bf&#34;&gt;&amp;gt;&lt;/span&gt; &lt;span style=&#34;color:#f99b15&#34;&gt;2&lt;/span&gt;,&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#5bc4bf&#34;&gt;...&lt;/span&gt;     then1 &lt;span style=&#34;color:#5bc4bf&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#f99b15&#34;&gt;1&lt;/span&gt;,&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#5bc4bf&#34;&gt;...&lt;/span&gt;     when2 &lt;span style=&#34;color:#5bc4bf&#34;&gt;=&lt;/span&gt; pl&lt;span style=&#34;color:#5bc4bf&#34;&gt;.&lt;/span&gt;col&lt;span style=&#34;color:#5bc4bf&#34;&gt;.&lt;/span&gt;bar &lt;span style=&#34;color:#5bc4bf&#34;&gt;&amp;gt;&lt;/span&gt; &lt;span style=&#34;color:#f99b15&#34;&gt;2&lt;/span&gt;,&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#5bc4bf&#34;&gt;...&lt;/span&gt;     then2 &lt;span style=&#34;color:#5bc4bf&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#f99b15&#34;&gt;4&lt;/span&gt;,&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#5bc4bf&#34;&gt;...&lt;/span&gt;     otherwise &lt;span style=&#34;color:#5bc4bf&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#5bc4bf&#34;&gt;-&lt;/span&gt;&lt;span style=&#34;color:#f99b15&#34;&gt;1&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#5bc4bf&#34;&gt;...&lt;/span&gt; )&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h4 id=&#34;filter-where-none-is-involved&#34;&gt;Filter where None is involved&lt;/h4&gt;&#xA;&lt;p&gt;&lt;a href=&#34;https://docs.pola.rs/api/python/stable/reference/dataframe/api/polars.DataFrame.filter.html&#34;&gt;polars.DataFrame.filter — Polars documentation&lt;/a&gt;&#xA;TLDR:  use e.g. &lt;code&gt;ne_missing()&lt;/code&gt; instead of &lt;code&gt;!=&lt;/code&gt; : &lt;a href=&#34;https://docs.pola.rs/api/python/stable/reference/expressions/api/polars.Expr.eq_missing.html&#34;&gt;polars.Expr.eq_missing — Polars documentation&lt;/a&gt;&lt;/p&gt;&#xA;&lt;h3 id=&#34;polars-exclude-certain-columns&#34;&gt;Polars exclude certain columns&lt;/h3&gt;&#xA;&lt;p&gt;&lt;a href=&#34;https://docs.pola.rs/api/python/stable/reference/expressions/api/polars.exclude.html&#34;&gt;https://docs.pola.rs/api/python/stable/reference/expressions/api/polars.exclude.html&lt;/a&gt;: &lt;code&gt;df.select(pl.exclude(&amp;quot;ba&amp;quot;))&lt;/code&gt; for all cols except &lt;code&gt;ba&lt;/code&gt;.G&lt;/p&gt;&#xA;&lt;h3 id=&#34;select-can-take-keyword-args&#34;&gt;&lt;code&gt;select&lt;/code&gt; can take keyword args!&lt;/h3&gt;&#xA;&lt;p&gt;Select two cols except that &lt;code&gt;col2&lt;/code&gt; will be called  &lt;code&gt;new_col2&lt;/code&gt;:&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#e7e9db;background-color:#2f1e2e;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-python&#34; data-lang=&#34;python&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;df&lt;span style=&#34;color:#5bc4bf&#34;&gt;.&lt;/span&gt;select(&lt;span style=&#34;color:#48b685&#34;&gt;&amp;#34;some_col&amp;#34;&lt;/span&gt;, new_col2&lt;span style=&#34;color:#5bc4bf&#34;&gt;=&lt;/span&gt;&lt;span style=&#34;color:#48b685&#34;&gt;&amp;#34;col2&amp;#34;&lt;/span&gt;)&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;(oh so many &lt;code&gt;pl.with_columns(...alias(&#39;new_col2&#39;))&lt;/code&gt; will be avoided by this)&lt;/p&gt;&#xA;&lt;h2 id=&#34;strings&#34;&gt;Strings&lt;/h2&gt;&#xA;&lt;h3 id=&#34;format-strings&#34;&gt;Format strings&lt;/h3&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#e7e9db;background-color:#2f1e2e;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-python&#34; data-lang=&#34;python&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#5bc4bf&#34;&gt;.&lt;/span&gt;with_columns(&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    pl&lt;span style=&#34;color:#5bc4bf&#34;&gt;.&lt;/span&gt;format(&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#48b685&#34;&gt;&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#f99b15&#34;&gt;{}&lt;/span&gt;&lt;span style=&#34;color:#48b685&#34;&gt; [&lt;/span&gt;&lt;span style=&#34;color:#f99b15&#34;&gt;{}&lt;/span&gt;&lt;span style=&#34;color:#48b685&#34;&gt;]&amp;#34;&lt;/span&gt;,&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        c(LLM_MODEL),&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        c(THINKING)&lt;span style=&#34;color:#5bc4bf&#34;&gt;.&lt;/span&gt;cast(pl&lt;span style=&#34;color:#5bc4bf&#34;&gt;.&lt;/span&gt;String)&lt;span style=&#34;color:#5bc4bf&#34;&gt;.&lt;/span&gt;fill_null(&lt;span style=&#34;color:#48b685&#34;&gt;&amp;#34;None&amp;#34;&lt;/span&gt;),&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    )&lt;span style=&#34;color:#5bc4bf&#34;&gt;.&lt;/span&gt;alias(MODEL_VARIANT)&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;)&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#776e71&#34;&gt;# when ...&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;pl&lt;span style=&#34;color:#5bc4bf&#34;&gt;.&lt;/span&gt;concat_str(&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;[c(LLM_MODEL), c(THINKING)],&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;separator&lt;span style=&#34;color:#5bc4bf&#34;&gt;=&lt;/span&gt;&lt;span style=&#34;color:#48b685&#34;&gt;&amp;#34;/&amp;#34;&lt;/span&gt;,&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;ignore_nulls&lt;span style=&#34;color:#5bc4bf&#34;&gt;=&lt;/span&gt;&lt;span style=&#34;color:#815ba4&#34;&gt;True&lt;/span&gt;,  &lt;span style=&#34;color:#776e71&#34;&gt;# single None doesn&amp;#39;t None the entire row&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;)&lt;span style=&#34;color:#5bc4bf&#34;&gt;.&lt;/span&gt;alias(MODEL_VARIANT)&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#776e71&#34;&gt;# ...is not enough&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#776e71&#34;&gt;# ...or even this to avoid the [{}] part if thinking is null&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#5bc4bf&#34;&gt;.&lt;/span&gt;with_columns(&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;pl&lt;span style=&#34;color:#5bc4bf&#34;&gt;.&lt;/span&gt;when(c(THINKING)&lt;span style=&#34;color:#5bc4bf&#34;&gt;.&lt;/span&gt;is_null())&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&lt;span style=&#34;color:#5bc4bf&#34;&gt;.&lt;/span&gt;then(c(LLM_MODEL))&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&lt;span style=&#34;color:#5bc4bf&#34;&gt;.&lt;/span&gt;otherwise(pl&lt;span style=&#34;color:#5bc4bf&#34;&gt;.&lt;/span&gt;format(&lt;span style=&#34;color:#48b685&#34;&gt;&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#f99b15&#34;&gt;{}&lt;/span&gt;&lt;span style=&#34;color:#48b685&#34;&gt; [&lt;/span&gt;&lt;span style=&#34;color:#f99b15&#34;&gt;{}&lt;/span&gt;&lt;span style=&#34;color:#48b685&#34;&gt;]&amp;#34;&lt;/span&gt;, c(LLM_MODEL), c(THINKING)))&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&lt;span style=&#34;color:#5bc4bf&#34;&gt;.&lt;/span&gt;alias(MODEL_VARIANT)&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;)&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h2 id=&#34;gotchas&#34;&gt;Gotchas&lt;/h2&gt;&#xA;&lt;h3 id=&#34;count-len-and-sum-over-binary-values&#34;&gt;Count, len and sum over binary values&lt;/h3&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#e7e9db;background-color:#2f1e2e;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-python&#34; data-lang=&#34;python&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#776e71&#34;&gt;# this will never work:&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;(pl&lt;span style=&#34;color:#5bc4bf&#34;&gt;.&lt;/span&gt;col(effect_col(m)) &lt;span style=&#34;color:#5bc4bf&#34;&gt;&amp;lt;&lt;/span&gt; &lt;span style=&#34;color:#f99b15&#34;&gt;0&lt;/span&gt;)&lt;span style=&#34;color:#5bc4bf&#34;&gt;.&lt;/span&gt;count()&lt;span style=&#34;color:#5bc4bf&#34;&gt;.&lt;/span&gt;alias(&lt;span style=&#34;color:#48b685&#34;&gt;&amp;#34;n_worsened&amp;#34;&lt;/span&gt;),&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;(pl&lt;span style=&#34;color:#5bc4bf&#34;&gt;.&lt;/span&gt;col(effect_col(m)) &lt;span style=&#34;color:#5bc4bf&#34;&gt;&amp;lt;&lt;/span&gt; &lt;span style=&#34;color:#f99b15&#34;&gt;0&lt;/span&gt;)&lt;span style=&#34;color:#5bc4bf&#34;&gt;.&lt;/span&gt;len()&lt;span style=&#34;color:#5bc4bf&#34;&gt;.&lt;/span&gt;alias(&lt;span style=&#34;color:#48b685&#34;&gt;&amp;#34;n_worsened&amp;#34;&lt;/span&gt;),&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#776e71&#34;&gt;# do this insead&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;(pl&lt;span style=&#34;color:#5bc4bf&#34;&gt;.&lt;/span&gt;col(effect_col(m)) &lt;span style=&#34;color:#5bc4bf&#34;&gt;&amp;lt;&lt;/span&gt; &lt;span style=&#34;color:#f99b15&#34;&gt;0&lt;/span&gt;)&lt;span style=&#34;color:#5bc4bf&#34;&gt;.&lt;/span&gt;sum()&lt;span style=&#34;color:#5bc4bf&#34;&gt;.&lt;/span&gt;alias(&lt;span style=&#34;color:#48b685&#34;&gt;&amp;#34;n_worsened&amp;#34;&lt;/span&gt;),&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;len counts the entire thing, count() only non-null boolean values (todo?) and basically all will become &lt;code&gt;n&lt;/code&gt; regardless of condition.&lt;/p&gt;&#xA;&lt;p&gt;&lt;strong&gt;Use sum()&lt;/strong&gt;.&lt;/p&gt;&#xA;&lt;h3 id=&#34;polars-statistics-for-testssignificancebootstrapping&#34;&gt;Polars-statistics for tests/significance/bootstrapping&lt;/h3&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://github.com/DataZooDE/polars-statistics&#34;&gt;GitHub - DataZooDE/polars-statistics: High-performance statistical testing and regression for Polars DataFrames, powered by Rust. · GitHub&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;Has VERY good documentation and jupyter notebook examples!&#xA;&lt;ul&gt;&#xA;&lt;li&gt;e.g. &lt;a href=&#34;https://github.com/DataZooDE/polars-statistics/blob/main/docs/examples/categorical-analysis.md&#34;&gt;polars-statistics/docs/examples/categorical-analysis.md&lt;/a&gt; has McNemar&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;/li&gt;&#xA;&lt;/ul&gt;</description>
    </item>
  </channel>
</rss>
