<?xml version="1.0" encoding="UTF-8"?>
<rss  xmlns:atom="http://www.w3.org/2005/Atom" 
      xmlns:media="http://search.yahoo.com/mrss/" 
      xmlns:content="http://purl.org/rss/1.0/modules/content/" 
      xmlns:dc="http://purl.org/dc/elements/1.1/" 
      version="2.0">
<channel>
<title>Conterval</title>
<link>https://www.conterval.com/blog/</link>
<atom:link href="https://www.conterval.com/blog/index.xml" rel="self" type="application/rss+xml"/>
<description>Thoughts and practical notes on data and AI.</description>
<generator>quarto-1.10.19</generator>
<lastBuildDate>Fri, 03 Jul 2026 05:00:00 GMT</lastBuildDate>
<item>
  <title>Advanced pivot tables with polars</title>
  <dc:creator>Joram Mutenge</dc:creator>
  <link>https://www.conterval.com/blog/advanced-pivot-tables-in-polars/</link>
  <description><![CDATA[ 




<p>As a data professional, it’s inevitable that you’ll end up creating a pivot table. Stakeholders love pivot tables, and they won’t pass up a chance to request one from you. It’s not surprising that most people think of Microsoft Excel when they hear <em>PivotTable</em>. It turns out that Microsoft held a trademark on the term in the United States from 1994 to 2020. Today, however, the name <em>PivotTable</em> has become so generic that it no longer qualifies for trademark protection.</p>
<div class="gray-text center-text">
<div class="quarto-figure quarto-figure-center">
<figure class="figure">
<p><img src="https://www.conterval.com/blog/advanced-pivot-tables-in-polars/image.png" class="img-fluid figure-img"></p>
<figcaption>Hex swag I got at PyConUS 2026</figcaption>
</figure>
</div>
</div>
<p>Fortunately, pivot tables can also be created with Polars. This means you won’t have to export your data to Excel and fiddle with it just to create a pivot table.</p>
<section id="the-dataset" class="level2">
<h2 data-anchor-id="the-dataset">The dataset</h2>
<p>I’ll be using sales funnel data. In business, some sales cycles are very long; for instance, those involving enterprise software or capital equipment, and management often wants to understand them in more detail throughout the year. The following are some of the questions they are likely to ask:</p>
<ol type="1">
<li>How much revenue is in the pipeline?</li>
<li>What products are in the pipeline?</li>
<li>Who has which products at what stage?</li>
<li>How likely are we to close deals by year-end?</li>
</ol>
<p>Larger companies typically have CRM tools or other software that the sales team uses to track the sales process. Still, many people simply export the data to Excel, where they summarize it by creating a pivot table.</p>
<p>The benefits of creating a pivot table with Polars are:</p>
<ul>
<li>It’s quicker once it’s set up.</li>
<li>It’s self-documenting. You can look at the code and understand what it does.</li>
<li>It’s easier to generate multiple reports.</li>
<li>It offers the flexibility to define custom aggregation functions.</li>
</ul>
<p>Let’s read in the data.</p>
<div id="d58e1ab6" class="cell" data-execution_count="1">
<div class="code-copy-outer-scaffold"><div class="sourceCode cell-code" id="cb1" style="background: #f1f3f5;"><pre class="sourceCode python code-with-copy"><code class="sourceCode python"><span id="cb1-1"><span class="im" style="color: #00769E;
background-color: null;
font-style: inherit;">import</span> polars <span class="im" style="color: #00769E;
background-color: null;
font-style: inherit;">as</span> pl</span>
<span id="cb1-2">pl.Config(set_tbl_rows<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span><span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">20</span>)</span>
<span id="cb1-3"></span>
<span id="cb1-4">df <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span> pl.read_excel(<span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">'https://pbpython.com/extras/sales-funnel.xlsx'</span>)</span>
<span id="cb1-5">df</span></code></pre></div></div>
<div class="cell-output cell-output-display" data-execution_count="17">
<div><style>
.dataframe > thead > tr,
.dataframe > tbody > tr {
  text-align: right;
  white-space: pre-wrap;
}
</style>
<small>shape: (17, 8)</small>
<table class="dataframe caption-top table table-sm table-striped small" data-border="1">
<thead>
<tr class="header">
<th data-quarto-table-cell-role="th">Account</th>
<th data-quarto-table-cell-role="th">Name</th>
<th data-quarto-table-cell-role="th">Rep</th>
<th data-quarto-table-cell-role="th">Manager</th>
<th data-quarto-table-cell-role="th">Product</th>
<th data-quarto-table-cell-role="th">Quantity</th>
<th data-quarto-table-cell-role="th">Price</th>
<th data-quarto-table-cell-role="th">Status</th>
</tr>
<tr class="even">
<td>i64</td>
<td>str</td>
<td>str</td>
<td>str</td>
<td>str</td>
<td>i64</td>
<td>i64</td>
<td>str</td>
</tr>
</thead>
<tbody>
<tr class="odd">
<td>714466</td>
<td>"Trantow-Barrows"</td>
<td>"Craig Booker"</td>
<td>"Debra Henley"</td>
<td>"CPU"</td>
<td>1</td>
<td>30000</td>
<td>"presented"</td>
</tr>
<tr class="even">
<td>714466</td>
<td>"Trantow-Barrows"</td>
<td>"Craig Booker"</td>
<td>"Debra Henley"</td>
<td>"Software"</td>
<td>1</td>
<td>10000</td>
<td>"presented"</td>
</tr>
<tr class="odd">
<td>714466</td>
<td>"Trantow-Barrows"</td>
<td>"Craig Booker"</td>
<td>"Debra Henley"</td>
<td>"Maintenance"</td>
<td>2</td>
<td>5000</td>
<td>"pending"</td>
</tr>
<tr class="even">
<td>737550</td>
<td>"Fritsch, Russel and Anderson"</td>
<td>"Craig Booker"</td>
<td>"Debra Henley"</td>
<td>"CPU"</td>
<td>1</td>
<td>35000</td>
<td>"declined"</td>
</tr>
<tr class="odd">
<td>146832</td>
<td>"Kiehn-Spinka"</td>
<td>"Daniel Hilton"</td>
<td>"Debra Henley"</td>
<td>"CPU"</td>
<td>2</td>
<td>65000</td>
<td>"won"</td>
</tr>
<tr class="even">
<td>218895</td>
<td>"Kulas Inc"</td>
<td>"Daniel Hilton"</td>
<td>"Debra Henley"</td>
<td>"CPU"</td>
<td>2</td>
<td>40000</td>
<td>"pending"</td>
</tr>
<tr class="odd">
<td>218895</td>
<td>"Kulas Inc"</td>
<td>"Daniel Hilton"</td>
<td>"Debra Henley"</td>
<td>"Software"</td>
<td>1</td>
<td>10000</td>
<td>"presented"</td>
</tr>
<tr class="even">
<td>412290</td>
<td>"Jerde-Hilpert"</td>
<td>"John Smith"</td>
<td>"Debra Henley"</td>
<td>"Maintenance"</td>
<td>2</td>
<td>5000</td>
<td>"pending"</td>
</tr>
<tr class="odd">
<td>740150</td>
<td>"Barton LLC"</td>
<td>"John Smith"</td>
<td>"Debra Henley"</td>
<td>"CPU"</td>
<td>1</td>
<td>35000</td>
<td>"declined"</td>
</tr>
<tr class="even">
<td>141962</td>
<td>"Herman LLC"</td>
<td>"Cedric Moss"</td>
<td>"Fred Anderson"</td>
<td>"CPU"</td>
<td>2</td>
<td>65000</td>
<td>"won"</td>
</tr>
<tr class="odd">
<td>163416</td>
<td>"Purdy-Kunde"</td>
<td>"Cedric Moss"</td>
<td>"Fred Anderson"</td>
<td>"CPU"</td>
<td>1</td>
<td>30000</td>
<td>"presented"</td>
</tr>
<tr class="even">
<td>239344</td>
<td>"Stokes LLC"</td>
<td>"Cedric Moss"</td>
<td>"Fred Anderson"</td>
<td>"Maintenance"</td>
<td>1</td>
<td>5000</td>
<td>"pending"</td>
</tr>
<tr class="odd">
<td>239344</td>
<td>"Stokes LLC"</td>
<td>"Cedric Moss"</td>
<td>"Fred Anderson"</td>
<td>"Software"</td>
<td>1</td>
<td>10000</td>
<td>"presented"</td>
</tr>
<tr class="even">
<td>307599</td>
<td>"Kassulke, Ondricka and Metz"</td>
<td>"Wendy Yule"</td>
<td>"Fred Anderson"</td>
<td>"Maintenance"</td>
<td>3</td>
<td>7000</td>
<td>"won"</td>
</tr>
<tr class="odd">
<td>688981</td>
<td>"Keeling LLC"</td>
<td>"Wendy Yule"</td>
<td>"Fred Anderson"</td>
<td>"CPU"</td>
<td>5</td>
<td>100000</td>
<td>"won"</td>
</tr>
<tr class="even">
<td>729833</td>
<td>"Koepp Ltd"</td>
<td>"Wendy Yule"</td>
<td>"Fred Anderson"</td>
<td>"CPU"</td>
<td>2</td>
<td>65000</td>
<td>"declined"</td>
</tr>
<tr class="odd">
<td>729833</td>
<td>"Koepp Ltd"</td>
<td>"Wendy Yule"</td>
<td>"Fred Anderson"</td>
<td>"Monitor"</td>
<td>2</td>
<td>5000</td>
<td>"presented"</td>
</tr>
</tbody>
</table>
</div>
</div>
</div>
</section>
<section id="creating-pivot-tables" class="level2">
<h2 data-anchor-id="creating-pivot-tables">Creating pivot tables</h2>
<p>The <code>pivot</code> method is used to create a pivot table in Polars. However, not all data outputs that look like pivot tables are created with <code>pivot</code>. Sometimes, <code>group_by</code> does the trick.</p>
<p>Suppose we wanted to find the average (mean) <em>Account</em>, <em>Price</em>, and <em>Quantity</em> for each <em>Name</em>. We can do so using <code>group_by</code>.</p>
<div id="e8816de3" class="cell" data-execution_count="2">
<div class="code-copy-outer-scaffold"><div class="sourceCode cell-code" id="cb2" style="background: #f1f3f5;"><pre class="sourceCode python code-with-copy"><code class="sourceCode python"><span id="cb2-1">(df</span>
<span id="cb2-2"> .group_by(<span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">'Name'</span>)</span>
<span id="cb2-3"> .agg(pl.mean(<span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">'Account'</span>,<span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">'Price'</span>,<span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">'Quantity'</span>))</span>
<span id="cb2-4"> )</span></code></pre></div></div>
<div class="cell-output cell-output-display" data-execution_count="18">
<div><style>
.dataframe > thead > tr,
.dataframe > tbody > tr {
  text-align: right;
  white-space: pre-wrap;
}
</style>
<small>shape: (12, 4)</small>
<table class="dataframe caption-top table table-sm table-striped small" data-border="1">
<thead>
<tr class="header">
<th data-quarto-table-cell-role="th">Name</th>
<th data-quarto-table-cell-role="th">Account</th>
<th data-quarto-table-cell-role="th">Price</th>
<th data-quarto-table-cell-role="th">Quantity</th>
</tr>
<tr class="even">
<td>str</td>
<td>f64</td>
<td>f64</td>
<td>f64</td>
</tr>
</thead>
<tbody>
<tr class="odd">
<td>"Barton LLC"</td>
<td>740150.0</td>
<td>35000.0</td>
<td>1.0</td>
</tr>
<tr class="even">
<td>"Fritsch, Russel and Anderson"</td>
<td>737550.0</td>
<td>35000.0</td>
<td>1.0</td>
</tr>
<tr class="odd">
<td>"Kassulke, Ondricka and Metz"</td>
<td>307599.0</td>
<td>7000.0</td>
<td>3.0</td>
</tr>
<tr class="even">
<td>"Trantow-Barrows"</td>
<td>714466.0</td>
<td>15000.0</td>
<td>1.333333</td>
</tr>
<tr class="odd">
<td>"Kulas Inc"</td>
<td>218895.0</td>
<td>25000.0</td>
<td>1.5</td>
</tr>
<tr class="even">
<td>"Koepp Ltd"</td>
<td>729833.0</td>
<td>35000.0</td>
<td>2.0</td>
</tr>
<tr class="odd">
<td>"Keeling LLC"</td>
<td>688981.0</td>
<td>100000.0</td>
<td>5.0</td>
</tr>
<tr class="even">
<td>"Herman LLC"</td>
<td>141962.0</td>
<td>65000.0</td>
<td>2.0</td>
</tr>
<tr class="odd">
<td>"Kiehn-Spinka"</td>
<td>146832.0</td>
<td>65000.0</td>
<td>2.0</td>
</tr>
<tr class="even">
<td>"Jerde-Hilpert"</td>
<td>412290.0</td>
<td>5000.0</td>
<td>2.0</td>
</tr>
<tr class="odd">
<td>"Stokes LLC"</td>
<td>239344.0</td>
<td>7500.0</td>
<td>1.0</td>
</tr>
<tr class="even">
<td>"Purdy-Kunde"</td>
<td>163416.0</td>
<td>30000.0</td>
<td>1.0</td>
</tr>
</tbody>
</table>
</div>
</div>
</div>
<p>In this case, the values in <em>Name</em> are unique keys that appear only once. If the original dataframe contained one name appearing two or more times, Polars would calculate the average of its values and display the company name only once in the final output. This is exactly what <code>group_by</code> does.</p>
<p>We can also <code>group_by</code> multiple columns.</p>
<div id="b1c01f86" class="cell" data-execution_count="3">
<div class="code-copy-outer-scaffold"><div class="sourceCode cell-code" id="cb3" style="background: #f1f3f5;"><pre class="sourceCode python code-with-copy"><code class="sourceCode python"><span id="cb3-1">(df</span>
<span id="cb3-2"> .group_by(<span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">'Name'</span>,<span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">'Rep'</span>,<span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">'Manager'</span>)</span>
<span id="cb3-3"> .agg(pl.mean(<span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">'Account'</span>,<span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">'Price'</span>,<span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">'Quantity'</span>))</span>
<span id="cb3-4"> )</span></code></pre></div></div>
<div class="cell-output cell-output-display" data-execution_count="19">
<div><style>
.dataframe > thead > tr,
.dataframe > tbody > tr {
  text-align: right;
  white-space: pre-wrap;
}
</style>
<small>shape: (12, 6)</small>
<table class="dataframe caption-top table table-sm table-striped small" data-border="1">
<thead>
<tr class="header">
<th data-quarto-table-cell-role="th">Name</th>
<th data-quarto-table-cell-role="th">Rep</th>
<th data-quarto-table-cell-role="th">Manager</th>
<th data-quarto-table-cell-role="th">Account</th>
<th data-quarto-table-cell-role="th">Price</th>
<th data-quarto-table-cell-role="th">Quantity</th>
</tr>
<tr class="even">
<td>str</td>
<td>str</td>
<td>str</td>
<td>f64</td>
<td>f64</td>
<td>f64</td>
</tr>
</thead>
<tbody>
<tr class="odd">
<td>"Kulas Inc"</td>
<td>"Daniel Hilton"</td>
<td>"Debra Henley"</td>
<td>218895.0</td>
<td>25000.0</td>
<td>1.5</td>
</tr>
<tr class="even">
<td>"Keeling LLC"</td>
<td>"Wendy Yule"</td>
<td>"Fred Anderson"</td>
<td>688981.0</td>
<td>100000.0</td>
<td>5.0</td>
</tr>
<tr class="odd">
<td>"Jerde-Hilpert"</td>
<td>"John Smith"</td>
<td>"Debra Henley"</td>
<td>412290.0</td>
<td>5000.0</td>
<td>2.0</td>
</tr>
<tr class="even">
<td>"Herman LLC"</td>
<td>"Cedric Moss"</td>
<td>"Fred Anderson"</td>
<td>141962.0</td>
<td>65000.0</td>
<td>2.0</td>
</tr>
<tr class="odd">
<td>"Kiehn-Spinka"</td>
<td>"Daniel Hilton"</td>
<td>"Debra Henley"</td>
<td>146832.0</td>
<td>65000.0</td>
<td>2.0</td>
</tr>
<tr class="even">
<td>"Stokes LLC"</td>
<td>"Cedric Moss"</td>
<td>"Fred Anderson"</td>
<td>239344.0</td>
<td>7500.0</td>
<td>1.0</td>
</tr>
<tr class="odd">
<td>"Koepp Ltd"</td>
<td>"Wendy Yule"</td>
<td>"Fred Anderson"</td>
<td>729833.0</td>
<td>35000.0</td>
<td>2.0</td>
</tr>
<tr class="even">
<td>"Barton LLC"</td>
<td>"John Smith"</td>
<td>"Debra Henley"</td>
<td>740150.0</td>
<td>35000.0</td>
<td>1.0</td>
</tr>
<tr class="odd">
<td>"Trantow-Barrows"</td>
<td>"Craig Booker"</td>
<td>"Debra Henley"</td>
<td>714466.0</td>
<td>15000.0</td>
<td>1.333333</td>
</tr>
<tr class="even">
<td>"Kassulke, Ondricka and Metz"</td>
<td>"Wendy Yule"</td>
<td>"Fred Anderson"</td>
<td>307599.0</td>
<td>7000.0</td>
<td>3.0</td>
</tr>
<tr class="odd">
<td>"Purdy-Kunde"</td>
<td>"Cedric Moss"</td>
<td>"Fred Anderson"</td>
<td>163416.0</td>
<td>30000.0</td>
<td>1.0</td>
</tr>
<tr class="even">
<td>"Fritsch, Russel and Anderson"</td>
<td>"Craig Booker"</td>
<td>"Debra Henley"</td>
<td>737550.0</td>
<td>35000.0</td>
<td>1.0</td>
</tr>
</tbody>
</table>
</div>
</div>
</div>
<p>Of course, this is not a particularly useful output. A better result is one that shows a combination of manager and representative as the key values.</p>
<div id="ee388d66" class="cell" data-execution_count="4">
<div class="code-copy-outer-scaffold"><div class="sourceCode cell-code" id="cb4" style="background: #f1f3f5;"><pre class="sourceCode python code-with-copy"><code class="sourceCode python"><span id="cb4-1">(df</span>
<span id="cb4-2"> .group_by(<span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">'Manager'</span>,<span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">'Rep'</span>)</span>
<span id="cb4-3"> .agg(pl.mean(<span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">'Account'</span>,<span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">'Price'</span>,<span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">'Quantity'</span>))</span>
<span id="cb4-4"> )</span></code></pre></div></div>
<div class="cell-output cell-output-display" data-execution_count="20">
<div><style>
.dataframe > thead > tr,
.dataframe > tbody > tr {
  text-align: right;
  white-space: pre-wrap;
}
</style>
<small>shape: (5, 5)</small>
<table class="dataframe caption-top table table-sm table-striped small" data-border="1">
<thead>
<tr class="header">
<th data-quarto-table-cell-role="th">Manager</th>
<th data-quarto-table-cell-role="th">Rep</th>
<th data-quarto-table-cell-role="th">Account</th>
<th data-quarto-table-cell-role="th">Price</th>
<th data-quarto-table-cell-role="th">Quantity</th>
</tr>
<tr class="even">
<td>str</td>
<td>str</td>
<td>f64</td>
<td>f64</td>
<td>f64</td>
</tr>
</thead>
<tbody>
<tr class="odd">
<td>"Debra Henley"</td>
<td>"Craig Booker"</td>
<td>720237.0</td>
<td>20000.0</td>
<td>1.25</td>
</tr>
<tr class="even">
<td>"Fred Anderson"</td>
<td>"Wendy Yule"</td>
<td>614061.5</td>
<td>44250.0</td>
<td>3.0</td>
</tr>
<tr class="odd">
<td>"Fred Anderson"</td>
<td>"Cedric Moss"</td>
<td>196016.5</td>
<td>27500.0</td>
<td>1.25</td>
</tr>
<tr class="even">
<td>"Debra Henley"</td>
<td>"John Smith"</td>
<td>576220.0</td>
<td>20000.0</td>
<td>1.5</td>
</tr>
<tr class="odd">
<td>"Debra Henley"</td>
<td>"Daniel Hilton"</td>
<td>194874.0</td>
<td>38333.333333</td>
<td>1.666667</td>
</tr>
</tbody>
</table>
</div>
</div>
</div>
<p>The output above shows that Fred Anderson has two representatives, while Debra Henley has three.</p>
<p>We can also perform an aggregation on a single column. The <em>Account</em> and <em>Quantity</em> columns aren’t providing useful values here, so I’ll exclude them.</p>
<div id="2cc9716c" class="cell" data-execution_count="5">
<div class="code-copy-outer-scaffold"><div class="sourceCode cell-code" id="cb5" style="background: #f1f3f5;"><pre class="sourceCode python code-with-copy"><code class="sourceCode python"><span id="cb5-1">(df</span>
<span id="cb5-2"> .group_by(<span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">'Manager'</span>,<span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">'Rep'</span>)</span>
<span id="cb5-3"> .agg(pl.mean(<span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">'Price'</span>))</span>
<span id="cb5-4"> )</span></code></pre></div></div>
<div class="cell-output cell-output-display" data-execution_count="21">
<div><style>
.dataframe > thead > tr,
.dataframe > tbody > tr {
  text-align: right;
  white-space: pre-wrap;
}
</style>
<small>shape: (5, 3)</small>
<table class="dataframe caption-top table table-sm table-striped small" data-border="1">
<thead>
<tr class="header">
<th data-quarto-table-cell-role="th">Manager</th>
<th data-quarto-table-cell-role="th">Rep</th>
<th data-quarto-table-cell-role="th">Price</th>
</tr>
<tr class="even">
<td>str</td>
<td>str</td>
<td>f64</td>
</tr>
</thead>
<tbody>
<tr class="odd">
<td>"Debra Henley"</td>
<td>"Craig Booker"</td>
<td>20000.0</td>
</tr>
<tr class="even">
<td>"Debra Henley"</td>
<td>"Daniel Hilton"</td>
<td>38333.333333</td>
</tr>
<tr class="odd">
<td>"Fred Anderson"</td>
<td>"Wendy Yule"</td>
<td>44250.0</td>
</tr>
<tr class="even">
<td>"Debra Henley"</td>
<td>"John Smith"</td>
<td>20000.0</td>
</tr>
<tr class="odd">
<td>"Fred Anderson"</td>
<td>"Cedric Moss"</td>
<td>27500.0</td>
</tr>
</tbody>
</table>
</div>
</div>
</div>
<p>We can also use an aggregation other than <code>mean</code>.</p>
<div id="e0a932c8" class="cell" data-execution_count="6">
<div class="code-copy-outer-scaffold"><div class="sourceCode cell-code" id="cb6" style="background: #f1f3f5;"><pre class="sourceCode python code-with-copy"><code class="sourceCode python"><span id="cb6-1">(df</span>
<span id="cb6-2"> .group_by(<span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">'Manager'</span>,<span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">'Rep'</span>)</span>
<span id="cb6-3"> .agg(pl.<span class="bu" style="color: null;
background-color: null;
font-style: inherit;">sum</span>(<span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">'Price'</span>))</span>
<span id="cb6-4"> )</span></code></pre></div></div>
<div class="cell-output cell-output-display" data-execution_count="22">
<div><style>
.dataframe > thead > tr,
.dataframe > tbody > tr {
  text-align: right;
  white-space: pre-wrap;
}
</style>
<small>shape: (5, 3)</small>
<table class="dataframe caption-top table table-sm table-striped small" data-border="1">
<thead>
<tr class="header">
<th data-quarto-table-cell-role="th">Manager</th>
<th data-quarto-table-cell-role="th">Rep</th>
<th data-quarto-table-cell-role="th">Price</th>
</tr>
<tr class="even">
<td>str</td>
<td>str</td>
<td>i64</td>
</tr>
</thead>
<tbody>
<tr class="odd">
<td>"Fred Anderson"</td>
<td>"Cedric Moss"</td>
<td>110000</td>
</tr>
<tr class="even">
<td>"Debra Henley"</td>
<td>"John Smith"</td>
<td>40000</td>
</tr>
<tr class="odd">
<td>"Fred Anderson"</td>
<td>"Wendy Yule"</td>
<td>177000</td>
</tr>
<tr class="even">
<td>"Debra Henley"</td>
<td>"Daniel Hilton"</td>
<td>115000</td>
</tr>
<tr class="odd">
<td>"Debra Henley"</td>
<td>"Craig Booker"</td>
<td>80000</td>
</tr>
</tbody>
</table>
</div>
</div>
</div>
<p>Or even use multiple aggregation functions.</p>
<div id="406d3051" class="cell" data-execution_count="7">
<div class="code-copy-outer-scaffold"><div class="sourceCode cell-code" id="annotated-cell-7" data-llms-code-original="(df
 .group_by('Manager','Rep')
 .agg(pl.mean('Price').name.prefix('Avg_'), # <1>
      pl.count('Price').name.prefix('Count_'))
 )" style="background: #f1f3f5;"><pre class="sourceCode python code-annotation-code code-with-copy code-annotated"><code class="sourceCode python"><span id="annotated-cell-7-1">(df</span>
<span id="annotated-cell-7-2"> .group_by(<span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">'Manager'</span>,<span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">'Rep'</span>)</span>
<a class="code-annotation-anchor" data-target-cell="annotated-cell-7" data-target-annotation="1" onclick="event.preventDefault();">1</a><span id="annotated-cell-7-3" class="code-annotation-target"> .agg(pl.mean(<span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">'Price'</span>).name.prefix(<span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">'Avg_'</span>),</span>
<span id="annotated-cell-7-4">      pl.count(<span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">'Price'</span>).name.prefix(<span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">'Count_'</span>))</span>
<span id="annotated-cell-7-5"> )</span><div class="code-annotation-gutter-bg"></div><div class="code-annotation-gutter"></div></code></pre></div></div>
<div class="cell-annotation">
<dl class="code-annotation-container-grid">
<dt data-target-cell="annotated-cell-7" data-target-annotation="1">1</dt>
<dd>
<span data-code-cell="annotated-cell-7" data-code-lines="3" data-code-annotation="1">Since different aggregations are used on the same column <em>Price</em>, we must ensure that the final columns have different names, otherwise the code breaks. Polars dataframes can’t have multiple columns with the same name.</span>
</dd>
</dl>
</div>
<div class="cell-output cell-output-display" data-execution_count="23">
<div><style>
.dataframe > thead > tr,
.dataframe > tbody > tr {
  text-align: right;
  white-space: pre-wrap;
}
</style>
<small>shape: (5, 4)</small>
<table class="dataframe caption-top table table-sm table-striped small" data-border="1">
<thead>
<tr class="header">
<th data-quarto-table-cell-role="th">Manager</th>
<th data-quarto-table-cell-role="th">Rep</th>
<th data-quarto-table-cell-role="th">Avg_Price</th>
<th data-quarto-table-cell-role="th">Count_Price</th>
</tr>
<tr class="even">
<td>str</td>
<td>str</td>
<td>f64</td>
<td>u32</td>
</tr>
</thead>
<tbody>
<tr class="odd">
<td>"Fred Anderson"</td>
<td>"Wendy Yule"</td>
<td>44250.0</td>
<td>4</td>
</tr>
<tr class="even">
<td>"Debra Henley"</td>
<td>"Daniel Hilton"</td>
<td>38333.333333</td>
<td>3</td>
</tr>
<tr class="odd">
<td>"Debra Henley"</td>
<td>"Craig Booker"</td>
<td>20000.0</td>
<td>4</td>
</tr>
<tr class="even">
<td>"Fred Anderson"</td>
<td>"Cedric Moss"</td>
<td>27500.0</td>
<td>4</td>
</tr>
<tr class="odd">
<td>"Debra Henley"</td>
<td>"John Smith"</td>
<td>20000.0</td>
<td>2</td>
</tr>
</tbody>
</table>
</div>
</div>
</div>
<p>Sometimes, we may want to see sales broken down by product. This is where <code>pivot</code> comes in. The values contained in the column specified by the <code>on</code> parameter become new columns in the final output.</p>
<div id="ae80c2c5" class="cell" data-execution_count="8">
<div class="code-copy-outer-scaffold"><div class="sourceCode cell-code" id="cb7" style="background: #f1f3f5;"><pre class="sourceCode python code-with-copy"><code class="sourceCode python"><span id="cb7-1">(df</span>
<span id="cb7-2"> .pivot(index<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span>[<span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">'Manager'</span>,<span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">'Rep'</span>],</span>
<span id="cb7-3">        on<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span><span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">'Product'</span>, values<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span><span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">'Price'</span>,</span>
<span id="cb7-4">        aggregate_function<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span><span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">'sum'</span>)</span>
<span id="cb7-5"> )</span></code></pre></div></div>
<div class="cell-output cell-output-display" data-execution_count="24">
<div><style>
.dataframe > thead > tr,
.dataframe > tbody > tr {
  text-align: right;
  white-space: pre-wrap;
}
</style>
<small>shape: (5, 6)</small>
<table class="dataframe caption-top table table-sm table-striped small" data-border="1">
<thead>
<tr class="header">
<th data-quarto-table-cell-role="th">Manager</th>
<th data-quarto-table-cell-role="th">Rep</th>
<th data-quarto-table-cell-role="th">CPU</th>
<th data-quarto-table-cell-role="th">Software</th>
<th data-quarto-table-cell-role="th">Maintenance</th>
<th data-quarto-table-cell-role="th">Monitor</th>
</tr>
<tr class="even">
<td>str</td>
<td>str</td>
<td>i64</td>
<td>i64</td>
<td>i64</td>
<td>i64</td>
</tr>
</thead>
<tbody>
<tr class="odd">
<td>"Debra Henley"</td>
<td>"Craig Booker"</td>
<td>65000</td>
<td>10000</td>
<td>5000</td>
<td>0</td>
</tr>
<tr class="even">
<td>"Debra Henley"</td>
<td>"Daniel Hilton"</td>
<td>105000</td>
<td>10000</td>
<td>0</td>
<td>0</td>
</tr>
<tr class="odd">
<td>"Debra Henley"</td>
<td>"John Smith"</td>
<td>35000</td>
<td>0</td>
<td>5000</td>
<td>0</td>
</tr>
<tr class="even">
<td>"Fred Anderson"</td>
<td>"Cedric Moss"</td>
<td>95000</td>
<td>10000</td>
<td>5000</td>
<td>0</td>
</tr>
<tr class="odd">
<td>"Fred Anderson"</td>
<td>"Wendy Yule"</td>
<td>165000</td>
<td>0</td>
<td>7000</td>
<td>5000</td>
</tr>
</tbody>
</table>
</div>
</div>
</div>
<p>We can also use multiple columns in the <code>values</code> parameter.</p>
<div id="7287a5a0" class="cell" data-execution_count="9">
<div class="code-copy-outer-scaffold"><div class="sourceCode cell-code" id="cb8" style="background: #f1f3f5;"><pre class="sourceCode python code-with-copy"><code class="sourceCode python"><span id="cb8-1">(df</span>
<span id="cb8-2"> .pivot(index<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span>[<span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">'Manager'</span>,<span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">'Rep'</span>],</span>
<span id="cb8-3">        on<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span><span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">'Product'</span>, values<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span>[<span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">'Price'</span>,<span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">'Quantity'</span>],</span>
<span id="cb8-4">        aggregate_function<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span><span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">'sum'</span>)</span>
<span id="cb8-5"> )</span></code></pre></div></div>
<div class="cell-output cell-output-display" data-execution_count="25">
<div><style>
.dataframe > thead > tr,
.dataframe > tbody > tr {
  text-align: right;
  white-space: pre-wrap;
}
</style>
<small>shape: (5, 10)</small>
<table class="dataframe caption-top table table-sm table-striped small" data-border="1">
<thead>
<tr class="header">
<th data-quarto-table-cell-role="th">Manager</th>
<th data-quarto-table-cell-role="th">Rep</th>
<th data-quarto-table-cell-role="th">Price_CPU</th>
<th data-quarto-table-cell-role="th">Price_Software</th>
<th data-quarto-table-cell-role="th">Price_Maintenance</th>
<th data-quarto-table-cell-role="th">Price_Monitor</th>
<th data-quarto-table-cell-role="th">Quantity_CPU</th>
<th data-quarto-table-cell-role="th">Quantity_Software</th>
<th data-quarto-table-cell-role="th">Quantity_Maintenance</th>
<th data-quarto-table-cell-role="th">Quantity_Monitor</th>
</tr>
<tr class="even">
<td>str</td>
<td>str</td>
<td>i64</td>
<td>i64</td>
<td>i64</td>
<td>i64</td>
<td>i64</td>
<td>i64</td>
<td>i64</td>
<td>i64</td>
</tr>
</thead>
<tbody>
<tr class="odd">
<td>"Debra Henley"</td>
<td>"Craig Booker"</td>
<td>65000</td>
<td>10000</td>
<td>5000</td>
<td>0</td>
<td>2</td>
<td>1</td>
<td>2</td>
<td>0</td>
</tr>
<tr class="even">
<td>"Debra Henley"</td>
<td>"Daniel Hilton"</td>
<td>105000</td>
<td>10000</td>
<td>0</td>
<td>0</td>
<td>4</td>
<td>1</td>
<td>0</td>
<td>0</td>
</tr>
<tr class="odd">
<td>"Debra Henley"</td>
<td>"John Smith"</td>
<td>35000</td>
<td>0</td>
<td>5000</td>
<td>0</td>
<td>1</td>
<td>0</td>
<td>2</td>
<td>0</td>
</tr>
<tr class="even">
<td>"Fred Anderson"</td>
<td>"Cedric Moss"</td>
<td>95000</td>
<td>10000</td>
<td>5000</td>
<td>0</td>
<td>3</td>
<td>1</td>
<td>1</td>
<td>0</td>
</tr>
<tr class="odd">
<td>"Fred Anderson"</td>
<td>"Wendy Yule"</td>
<td>165000</td>
<td>0</td>
<td>7000</td>
<td>5000</td>
<td>7</td>
<td>0</td>
<td>3</td>
<td>2</td>
</tr>
</tbody>
</table>
</div>
</div>
</div>
<p>A rule of thumb I follow is that whenever you want the values in a column to become new columns in the final output, use <code>pivot</code>; otherwise, use <code>group_by</code>. So, if we want <em>Product</em> to be part of the index and don’t need a column for the <code>on</code> parameter, then we’ll have to use <code>group_by</code>.</p>
<div id="8ea4eb7b" class="cell" data-execution_count="10">
<div class="code-copy-outer-scaffold"><div class="sourceCode cell-code" id="cb9" style="background: #f1f3f5;"><pre class="sourceCode python code-with-copy"><code class="sourceCode python"><span id="cb9-1">(df</span>
<span id="cb9-2"> .group_by(<span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">'Manager'</span>,<span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">'Rep'</span>,<span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">'Product'</span>)</span>
<span id="cb9-3"> .agg(pl.<span class="bu" style="color: null;
background-color: null;
font-style: inherit;">sum</span>(<span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">'Price'</span>,<span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">'Quantity'</span>))</span>
<span id="cb9-4"> .sort(<span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">'Manager'</span>,<span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">'Rep'</span>,<span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">'Product'</span>)</span>
<span id="cb9-5"> )</span></code></pre></div></div>
<div class="cell-output cell-output-display" data-execution_count="26">
<div><style>
.dataframe > thead > tr,
.dataframe > tbody > tr {
  text-align: right;
  white-space: pre-wrap;
}
</style>
<small>shape: (13, 5)</small>
<table class="dataframe caption-top table table-sm table-striped small" data-border="1">
<thead>
<tr class="header">
<th data-quarto-table-cell-role="th">Manager</th>
<th data-quarto-table-cell-role="th">Rep</th>
<th data-quarto-table-cell-role="th">Product</th>
<th data-quarto-table-cell-role="th">Price</th>
<th data-quarto-table-cell-role="th">Quantity</th>
</tr>
<tr class="even">
<td>str</td>
<td>str</td>
<td>str</td>
<td>i64</td>
<td>i64</td>
</tr>
</thead>
<tbody>
<tr class="odd">
<td>"Debra Henley"</td>
<td>"Craig Booker"</td>
<td>"CPU"</td>
<td>65000</td>
<td>2</td>
</tr>
<tr class="even">
<td>"Debra Henley"</td>
<td>"Craig Booker"</td>
<td>"Maintenance"</td>
<td>5000</td>
<td>2</td>
</tr>
<tr class="odd">
<td>"Debra Henley"</td>
<td>"Craig Booker"</td>
<td>"Software"</td>
<td>10000</td>
<td>1</td>
</tr>
<tr class="even">
<td>"Debra Henley"</td>
<td>"Daniel Hilton"</td>
<td>"CPU"</td>
<td>105000</td>
<td>4</td>
</tr>
<tr class="odd">
<td>"Debra Henley"</td>
<td>"Daniel Hilton"</td>
<td>"Software"</td>
<td>10000</td>
<td>1</td>
</tr>
<tr class="even">
<td>"Debra Henley"</td>
<td>"John Smith"</td>
<td>"CPU"</td>
<td>35000</td>
<td>1</td>
</tr>
<tr class="odd">
<td>"Debra Henley"</td>
<td>"John Smith"</td>
<td>"Maintenance"</td>
<td>5000</td>
<td>2</td>
</tr>
<tr class="even">
<td>"Fred Anderson"</td>
<td>"Cedric Moss"</td>
<td>"CPU"</td>
<td>95000</td>
<td>3</td>
</tr>
<tr class="odd">
<td>"Fred Anderson"</td>
<td>"Cedric Moss"</td>
<td>"Maintenance"</td>
<td>5000</td>
<td>1</td>
</tr>
<tr class="even">
<td>"Fred Anderson"</td>
<td>"Cedric Moss"</td>
<td>"Software"</td>
<td>10000</td>
<td>1</td>
</tr>
<tr class="odd">
<td>"Fred Anderson"</td>
<td>"Wendy Yule"</td>
<td>"CPU"</td>
<td>165000</td>
<td>7</td>
</tr>
<tr class="even">
<td>"Fred Anderson"</td>
<td>"Wendy Yule"</td>
<td>"Maintenance"</td>
<td>7000</td>
<td>3</td>
</tr>
<tr class="odd">
<td>"Fred Anderson"</td>
<td>"Wendy Yule"</td>
<td>"Monitor"</td>
<td>5000</td>
<td>2</td>
</tr>
</tbody>
</table>
</div>
</div>
</div>
<p>This output makes much more sense, at least for this dataset. Now, what if we want to include a grand total row at the bottom of the dataframe, much like you would see in an Excel pivot table? In pandas, this is easy to achieve. The <code>pivot_table</code> function has a <code>margins=True</code> parameter that adds a grand total row.</p>
<p>By contrast, Polars does not have a <code>margins=True</code> parameter in its <code>pivot</code> method. However, the versatility of Polars makes it possible to create a grand total row yourself.</p>
<div id="2433463f" class="cell" data-execution_count="11">
<div class="code-copy-outer-scaffold"><div class="sourceCode cell-code" id="cb10" style="background: #f1f3f5;"><pre class="sourceCode python code-with-copy"><code class="sourceCode python"><span id="cb10-1">(df</span>
<span id="cb10-2"> .group_by(<span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">'Manager'</span>,<span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">'Rep'</span>,<span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">'Product'</span>)</span>
<span id="cb10-3"> .agg(pl.<span class="bu" style="color: null;
background-color: null;
font-style: inherit;">sum</span>(<span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">'Price'</span>,<span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">'Quantity'</span>).name.prefix(<span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">'Sum_'</span>),</span>
<span id="cb10-4">      pl.mean(<span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">'Price'</span>,<span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">'Quantity'</span>).name.prefix(<span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">'Avg_'</span>))</span>
<span id="cb10-5"> .sort(<span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">'Manager'</span>,<span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">'Rep'</span>,<span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">'Product'</span>)</span>
<span id="cb10-6"> .pipe(<span class="kw" style="color: #003B4F;
background-color: null;
font-weight: bold;
font-style: inherit;">lambda</span> _df: _df.vstack(</span>
<span id="cb10-7">       _df.select(Manager<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span>pl.lit(<span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">'All'</span>),</span>
<span id="cb10-8">                  Rep<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span>pl.lit(<span class="va" style="color: #111111;
background-color: null;
font-style: inherit;">None</span>, dtype<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span>pl.String),</span>
<span id="cb10-9">                  Product<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span>pl.lit(<span class="va" style="color: #111111;
background-color: null;
font-style: inherit;">None</span>, dtype<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span>pl.String),</span>
<span id="cb10-10">                  Sum_Price<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span>pl.<span class="bu" style="color: null;
background-color: null;
font-style: inherit;">sum</span>(<span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">'Sum_Price'</span>),</span>
<span id="cb10-11">                  Sum_Quantity<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span>pl.<span class="bu" style="color: null;
background-color: null;
font-style: inherit;">sum</span>(<span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">'Sum_Quantity'</span>),</span>
<span id="cb10-12">                  Avg_Price<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span>pl.mean(<span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">'Avg_Price'</span>),</span>
<span id="cb10-13">                  Avg_Quantity<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span>pl.mean(<span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">'Avg_Quantity'</span>),</span>
<span id="cb10-14">                  )))</span>
<span id="cb10-15">)</span></code></pre></div></div>
<div class="cell-output cell-output-display" data-execution_count="27">
<div><style>
.dataframe > thead > tr,
.dataframe > tbody > tr {
  text-align: right;
  white-space: pre-wrap;
}
</style>
<small>shape: (14, 7)</small>
<table class="dataframe caption-top table table-sm table-striped small" data-border="1">
<thead>
<tr class="header">
<th data-quarto-table-cell-role="th">Manager</th>
<th data-quarto-table-cell-role="th">Rep</th>
<th data-quarto-table-cell-role="th">Product</th>
<th data-quarto-table-cell-role="th">Sum_Price</th>
<th data-quarto-table-cell-role="th">Sum_Quantity</th>
<th data-quarto-table-cell-role="th">Avg_Price</th>
<th data-quarto-table-cell-role="th">Avg_Quantity</th>
</tr>
<tr class="even">
<td>str</td>
<td>str</td>
<td>str</td>
<td>i64</td>
<td>i64</td>
<td>f64</td>
<td>f64</td>
</tr>
</thead>
<tbody>
<tr class="odd">
<td>"Debra Henley"</td>
<td>"Craig Booker"</td>
<td>"CPU"</td>
<td>65000</td>
<td>2</td>
<td>32500.0</td>
<td>1.0</td>
</tr>
<tr class="even">
<td>"Debra Henley"</td>
<td>"Craig Booker"</td>
<td>"Maintenance"</td>
<td>5000</td>
<td>2</td>
<td>5000.0</td>
<td>2.0</td>
</tr>
<tr class="odd">
<td>"Debra Henley"</td>
<td>"Craig Booker"</td>
<td>"Software"</td>
<td>10000</td>
<td>1</td>
<td>10000.0</td>
<td>1.0</td>
</tr>
<tr class="even">
<td>"Debra Henley"</td>
<td>"Daniel Hilton"</td>
<td>"CPU"</td>
<td>105000</td>
<td>4</td>
<td>52500.0</td>
<td>2.0</td>
</tr>
<tr class="odd">
<td>"Debra Henley"</td>
<td>"Daniel Hilton"</td>
<td>"Software"</td>
<td>10000</td>
<td>1</td>
<td>10000.0</td>
<td>1.0</td>
</tr>
<tr class="even">
<td>"Debra Henley"</td>
<td>"John Smith"</td>
<td>"CPU"</td>
<td>35000</td>
<td>1</td>
<td>35000.0</td>
<td>1.0</td>
</tr>
<tr class="odd">
<td>"Debra Henley"</td>
<td>"John Smith"</td>
<td>"Maintenance"</td>
<td>5000</td>
<td>2</td>
<td>5000.0</td>
<td>2.0</td>
</tr>
<tr class="even">
<td>"Fred Anderson"</td>
<td>"Cedric Moss"</td>
<td>"CPU"</td>
<td>95000</td>
<td>3</td>
<td>47500.0</td>
<td>1.5</td>
</tr>
<tr class="odd">
<td>"Fred Anderson"</td>
<td>"Cedric Moss"</td>
<td>"Maintenance"</td>
<td>5000</td>
<td>1</td>
<td>5000.0</td>
<td>1.0</td>
</tr>
<tr class="even">
<td>"Fred Anderson"</td>
<td>"Cedric Moss"</td>
<td>"Software"</td>
<td>10000</td>
<td>1</td>
<td>10000.0</td>
<td>1.0</td>
</tr>
<tr class="odd">
<td>"Fred Anderson"</td>
<td>"Wendy Yule"</td>
<td>"CPU"</td>
<td>165000</td>
<td>7</td>
<td>82500.0</td>
<td>3.5</td>
</tr>
<tr class="even">
<td>"Fred Anderson"</td>
<td>"Wendy Yule"</td>
<td>"Maintenance"</td>
<td>7000</td>
<td>3</td>
<td>7000.0</td>
<td>3.0</td>
</tr>
<tr class="odd">
<td>"Fred Anderson"</td>
<td>"Wendy Yule"</td>
<td>"Monitor"</td>
<td>5000</td>
<td>2</td>
<td>5000.0</td>
<td>2.0</td>
</tr>
<tr class="even">
<td>"All"</td>
<td>null</td>
<td>null</td>
<td>522000</td>
<td>30</td>
<td>23615.384615</td>
<td>1.692308</td>
</tr>
</tbody>
</table>
</div>
</div>
</div>
<p>Let’s look at the sales funnel at the manager level. At the moment, the <em>Status</em> column has the string data type. We’ll convert it to the enum data type and define the hierarchy in the order we want.</p>
<div id="8ddd744e" class="cell" data-execution_count="12">
<div class="code-copy-outer-scaffold"><div class="sourceCode cell-code" id="annotated-cell-12" data-llms-code-original="(df
 .with_columns(pl.col('Status').cast(pl.Enum(['won','pending','presented','declined'])))
 .group_by('Manager','Status')
 .agg(pl.sum('Price'))
 .sort('Manager','Status', descending=[False,True]) # <1>
 .pipe(lambda _df: _df.vstack(
     _df.select(Manager=pl.lit('All'),
                Status=pl.lit(None),
                Price=pl.sum('Price'),
                )))
 )" style="background: #f1f3f5;"><pre class="sourceCode python code-annotation-code code-with-copy code-annotated"><code class="sourceCode python"><span id="annotated-cell-12-1">(df</span>
<span id="annotated-cell-12-2"> .with_columns(pl.col(<span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">'Status'</span>).cast(pl.Enum([<span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">'won'</span>,<span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">'pending'</span>,<span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">'presented'</span>,<span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">'declined'</span>])))</span>
<span id="annotated-cell-12-3"> .group_by(<span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">'Manager'</span>,<span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">'Status'</span>)</span>
<span id="annotated-cell-12-4"> .agg(pl.<span class="bu" style="color: null;
background-color: null;
font-style: inherit;">sum</span>(<span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">'Price'</span>))</span>
<a class="code-annotation-anchor" data-target-cell="annotated-cell-12" data-target-annotation="1" onclick="event.preventDefault();">1</a><span id="annotated-cell-12-5" class="code-annotation-target"> .sort(<span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">'Manager'</span>,<span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">'Status'</span>, descending<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span>[<span class="va" style="color: #111111;
background-color: null;
font-style: inherit;">False</span>,<span class="va" style="color: #111111;
background-color: null;
font-style: inherit;">True</span>])</span>
<span id="annotated-cell-12-6"> .pipe(<span class="kw" style="color: #003B4F;
background-color: null;
font-weight: bold;
font-style: inherit;">lambda</span> _df: _df.vstack(</span>
<span id="annotated-cell-12-7">     _df.select(Manager<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span>pl.lit(<span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">'All'</span>),</span>
<span id="annotated-cell-12-8">                Status<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span>pl.lit(<span class="va" style="color: #111111;
background-color: null;
font-style: inherit;">None</span>),</span>
<span id="annotated-cell-12-9">                Price<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span>pl.<span class="bu" style="color: null;
background-color: null;
font-style: inherit;">sum</span>(<span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">'Price'</span>),</span>
<span id="annotated-cell-12-10">                )))</span>
<span id="annotated-cell-12-11"> )</span><div class="code-annotation-gutter-bg"></div><div class="code-annotation-gutter"></div></code></pre></div></div>
<div class="cell-annotation">
<dl class="code-annotation-container-grid">
<dt data-target-cell="annotated-cell-12" data-target-annotation="1">1</dt>
<dd>
<span data-code-cell="annotated-cell-12" data-code-lines="5" data-code-annotation="1">Notice how values in <em>Status</em> follow the order set in the enum, although this time in reverse since <code>descending=True</code>.</span>
</dd>
</dl>
</div>
<div class="cell-output cell-output-display" data-execution_count="28">
<div><style>
.dataframe > thead > tr,
.dataframe > tbody > tr {
  text-align: right;
  white-space: pre-wrap;
}
</style>
<small>shape: (9, 3)</small>
<table class="dataframe caption-top table table-sm table-striped small" data-border="1">
<thead>
<tr class="header">
<th data-quarto-table-cell-role="th">Manager</th>
<th data-quarto-table-cell-role="th">Status</th>
<th data-quarto-table-cell-role="th">Price</th>
</tr>
<tr class="even">
<td>str</td>
<td>enum</td>
<td>i64</td>
</tr>
</thead>
<tbody>
<tr class="odd">
<td>"Debra Henley"</td>
<td>"declined"</td>
<td>70000</td>
</tr>
<tr class="even">
<td>"Debra Henley"</td>
<td>"presented"</td>
<td>50000</td>
</tr>
<tr class="odd">
<td>"Debra Henley"</td>
<td>"pending"</td>
<td>50000</td>
</tr>
<tr class="even">
<td>"Debra Henley"</td>
<td>"won"</td>
<td>65000</td>
</tr>
<tr class="odd">
<td>"Fred Anderson"</td>
<td>"declined"</td>
<td>65000</td>
</tr>
<tr class="even">
<td>"Fred Anderson"</td>
<td>"presented"</td>
<td>45000</td>
</tr>
<tr class="odd">
<td>"Fred Anderson"</td>
<td>"pending"</td>
<td>5000</td>
</tr>
<tr class="even">
<td>"Fred Anderson"</td>
<td>"won"</td>
<td>172000</td>
</tr>
<tr class="odd">
<td>"All"</td>
<td>null</td>
<td>522000</td>
</tr>
</tbody>
</table>
</div>
</div>
</div>
<p>So far, we’ve used <code>group_by</code> and <code>pivot</code> separately. Once again, unlike pandas, where you can pass different aggregation functions for a single column or multiple columns in one pivot table call, Polars allows only one aggregation function at a time. However, the same result can be achieved by combining the <code>group_by</code> and <code>pivot</code> methods.</p>
<div id="932a473a" class="cell" data-execution_count="13">
<div class="code-copy-outer-scaffold"><div class="sourceCode cell-code" id="cb11" style="background: #f1f3f5;"><pre class="sourceCode python code-with-copy"><code class="sourceCode python"><span id="cb11-1">(df</span>
<span id="cb11-2"> .group_by(<span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">'Manager'</span>, <span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">'Status'</span>, <span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">'Product'</span>)</span>
<span id="cb11-3"> .agg(Quantity<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span>pl.<span class="bu" style="color: null;
background-color: null;
font-style: inherit;">len</span>(),</span>
<span id="cb11-4">      Price<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span>pl.<span class="bu" style="color: null;
background-color: null;
font-style: inherit;">sum</span>(<span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">'Price'</span>))</span>
<span id="cb11-5"> .pivot(index<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span>[<span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">'Manager'</span>,<span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">'Status'</span>], on<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span><span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">'Product'</span>,</span>
<span id="cb11-6">        values<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span>[<span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">'Quantity'</span>,<span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">'Price'</span>], sort_columns<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span><span class="va" style="color: #111111;
background-color: null;
font-style: inherit;">True</span>)</span>
<span id="cb11-7"> .sort(<span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">'Manager'</span>,<span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">'Status'</span>)</span>
<span id="cb11-8"> .fill_null(<span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">0</span>)</span>
<span id="cb11-9">)</span></code></pre></div></div>
<div class="cell-output cell-output-display" data-execution_count="29">
<div><style>
.dataframe > thead > tr,
.dataframe > tbody > tr {
  text-align: right;
  white-space: pre-wrap;
}
</style>
<small>shape: (8, 10)</small>
<table class="dataframe caption-top table table-sm table-striped small" data-border="1">
<thead>
<tr class="header">
<th data-quarto-table-cell-role="th">Manager</th>
<th data-quarto-table-cell-role="th">Status</th>
<th data-quarto-table-cell-role="th">Quantity_CPU</th>
<th data-quarto-table-cell-role="th">Quantity_Maintenance</th>
<th data-quarto-table-cell-role="th">Quantity_Monitor</th>
<th data-quarto-table-cell-role="th">Quantity_Software</th>
<th data-quarto-table-cell-role="th">Price_CPU</th>
<th data-quarto-table-cell-role="th">Price_Maintenance</th>
<th data-quarto-table-cell-role="th">Price_Monitor</th>
<th data-quarto-table-cell-role="th">Price_Software</th>
</tr>
<tr class="even">
<td>str</td>
<td>str</td>
<td>u32</td>
<td>u32</td>
<td>u32</td>
<td>u32</td>
<td>i64</td>
<td>i64</td>
<td>i64</td>
<td>i64</td>
</tr>
</thead>
<tbody>
<tr class="odd">
<td>"Debra Henley"</td>
<td>"declined"</td>
<td>2</td>
<td>0</td>
<td>0</td>
<td>0</td>
<td>70000</td>
<td>0</td>
<td>0</td>
<td>0</td>
</tr>
<tr class="even">
<td>"Debra Henley"</td>
<td>"pending"</td>
<td>1</td>
<td>2</td>
<td>0</td>
<td>0</td>
<td>40000</td>
<td>10000</td>
<td>0</td>
<td>0</td>
</tr>
<tr class="odd">
<td>"Debra Henley"</td>
<td>"presented"</td>
<td>1</td>
<td>0</td>
<td>0</td>
<td>2</td>
<td>30000</td>
<td>0</td>
<td>0</td>
<td>20000</td>
</tr>
<tr class="even">
<td>"Debra Henley"</td>
<td>"won"</td>
<td>1</td>
<td>0</td>
<td>0</td>
<td>0</td>
<td>65000</td>
<td>0</td>
<td>0</td>
<td>0</td>
</tr>
<tr class="odd">
<td>"Fred Anderson"</td>
<td>"declined"</td>
<td>1</td>
<td>0</td>
<td>0</td>
<td>0</td>
<td>65000</td>
<td>0</td>
<td>0</td>
<td>0</td>
</tr>
<tr class="even">
<td>"Fred Anderson"</td>
<td>"pending"</td>
<td>0</td>
<td>1</td>
<td>0</td>
<td>0</td>
<td>0</td>
<td>5000</td>
<td>0</td>
<td>0</td>
</tr>
<tr class="odd">
<td>"Fred Anderson"</td>
<td>"presented"</td>
<td>1</td>
<td>0</td>
<td>1</td>
<td>1</td>
<td>30000</td>
<td>0</td>
<td>5000</td>
<td>10000</td>
</tr>
<tr class="even">
<td>"Fred Anderson"</td>
<td>"won"</td>
<td>2</td>
<td>1</td>
<td>0</td>
<td>0</td>
<td>165000</td>
<td>7000</td>
<td>0</td>
<td>0</td>
</tr>
</tbody>
</table>
</div>
</div>
</div>
<div class="callout callout-style-default callout-note callout-titled">
<div class="callout-header d-flex align-content-center">
<div class="callout-icon-container">
<i class="callout-icon"></i>
</div>
<div class="callout-title-container flex-fill">
Note
</div>
</div>
<div class="callout-body-container callout-body">
<p>The aggregation functions used are <code>len</code> for <em>Quantity</em> and <code>sum</code> for <em>Price</em>.</p>
</div>
</div>
<p>We can also perform more than two aggregations.</p>
<div id="d2e9ab7c" class="cell" data-execution_count="14">
<div class="code-copy-outer-scaffold"><div class="sourceCode cell-code" id="annotated-cell-14" data-llms-code-original="df_pivot_table = (df
 .group_by('Manager', 'Status', 'Product')
 .agg(Quantity=pl.len(),
      Sum_Price=pl.sum('Price'), # <1>
      Avg_Price=pl.mean('Price'))
 .pivot(index=['Manager','Status'], on='Product',
        values=['Quantity','Sum_Price','Avg_Price'], sort_columns=True)
 .sort('Manager','Status')
 .fill_null(0)
)
df_pivot_table" style="background: #f1f3f5;"><pre class="sourceCode python code-annotation-code code-with-copy code-annotated"><code class="sourceCode python"><span id="annotated-cell-14-1">df_pivot_table <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span> (df</span>
<span id="annotated-cell-14-2"> .group_by(<span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">'Manager'</span>, <span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">'Status'</span>, <span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">'Product'</span>)</span>
<span id="annotated-cell-14-3"> .agg(Quantity<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span>pl.<span class="bu" style="color: null;
background-color: null;
font-style: inherit;">len</span>(),</span>
<a class="code-annotation-anchor" data-target-cell="annotated-cell-14" data-target-annotation="1" onclick="event.preventDefault();">1</a><span id="annotated-cell-14-4" class="code-annotation-target">      Sum_Price<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span>pl.<span class="bu" style="color: null;
background-color: null;
font-style: inherit;">sum</span>(<span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">'Price'</span>),</span>
<span id="annotated-cell-14-5">      Avg_Price<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span>pl.mean(<span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">'Price'</span>))</span>
<span id="annotated-cell-14-6"> .pivot(index<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span>[<span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">'Manager'</span>,<span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">'Status'</span>], on<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span><span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">'Product'</span>,</span>
<span id="annotated-cell-14-7">        values<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span>[<span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">'Quantity'</span>,<span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">'Sum_Price'</span>,<span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">'Avg_Price'</span>], sort_columns<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span><span class="va" style="color: #111111;
background-color: null;
font-style: inherit;">True</span>)</span>
<span id="annotated-cell-14-8"> .sort(<span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">'Manager'</span>,<span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">'Status'</span>)</span>
<span id="annotated-cell-14-9"> .fill_null(<span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">0</span>)</span>
<span id="annotated-cell-14-10">)</span>
<span id="annotated-cell-14-11">df_pivot_table</span><div class="code-annotation-gutter-bg"></div><div class="code-annotation-gutter"></div></code></pre></div></div>
<div class="cell-annotation">
<dl class="code-annotation-container-grid">
<dt data-target-cell="annotated-cell-14" data-target-annotation="1">1</dt>
<dd>
<span data-code-cell="annotated-cell-14" data-code-lines="4" data-code-annotation="1">Another way of renaming instead of using <code>name.prefix</code> to ensure multiple columns don’t have the same name.</span>
</dd>
</dl>
</div>
<div class="cell-output cell-output-display" data-execution_count="30">
<div><style>
.dataframe > thead > tr,
.dataframe > tbody > tr {
  text-align: right;
  white-space: pre-wrap;
}
</style>
<small>shape: (8, 14)</small>
<table class="dataframe caption-top table table-sm table-striped small" data-border="1">
<thead>
<tr class="header">
<th data-quarto-table-cell-role="th">Manager</th>
<th data-quarto-table-cell-role="th">Status</th>
<th data-quarto-table-cell-role="th">Quantity_CPU</th>
<th data-quarto-table-cell-role="th">Quantity_Maintenance</th>
<th data-quarto-table-cell-role="th">Quantity_Monitor</th>
<th data-quarto-table-cell-role="th">Quantity_Software</th>
<th data-quarto-table-cell-role="th">Sum_Price_CPU</th>
<th data-quarto-table-cell-role="th">Sum_Price_Maintenance</th>
<th data-quarto-table-cell-role="th">Sum_Price_Monitor</th>
<th data-quarto-table-cell-role="th">Sum_Price_Software</th>
<th data-quarto-table-cell-role="th">Avg_Price_CPU</th>
<th data-quarto-table-cell-role="th">Avg_Price_Maintenance</th>
<th data-quarto-table-cell-role="th">Avg_Price_Monitor</th>
<th data-quarto-table-cell-role="th">Avg_Price_Software</th>
</tr>
<tr class="even">
<td>str</td>
<td>str</td>
<td>u32</td>
<td>u32</td>
<td>u32</td>
<td>u32</td>
<td>i64</td>
<td>i64</td>
<td>i64</td>
<td>i64</td>
<td>f64</td>
<td>f64</td>
<td>f64</td>
<td>f64</td>
</tr>
</thead>
<tbody>
<tr class="odd">
<td>"Debra Henley"</td>
<td>"declined"</td>
<td>2</td>
<td>0</td>
<td>0</td>
<td>0</td>
<td>70000</td>
<td>0</td>
<td>0</td>
<td>0</td>
<td>35000.0</td>
<td>0.0</td>
<td>0.0</td>
<td>0.0</td>
</tr>
<tr class="even">
<td>"Debra Henley"</td>
<td>"pending"</td>
<td>1</td>
<td>2</td>
<td>0</td>
<td>0</td>
<td>40000</td>
<td>10000</td>
<td>0</td>
<td>0</td>
<td>40000.0</td>
<td>5000.0</td>
<td>0.0</td>
<td>0.0</td>
</tr>
<tr class="odd">
<td>"Debra Henley"</td>
<td>"presented"</td>
<td>1</td>
<td>0</td>
<td>0</td>
<td>2</td>
<td>30000</td>
<td>0</td>
<td>0</td>
<td>20000</td>
<td>30000.0</td>
<td>0.0</td>
<td>0.0</td>
<td>10000.0</td>
</tr>
<tr class="even">
<td>"Debra Henley"</td>
<td>"won"</td>
<td>1</td>
<td>0</td>
<td>0</td>
<td>0</td>
<td>65000</td>
<td>0</td>
<td>0</td>
<td>0</td>
<td>65000.0</td>
<td>0.0</td>
<td>0.0</td>
<td>0.0</td>
</tr>
<tr class="odd">
<td>"Fred Anderson"</td>
<td>"declined"</td>
<td>1</td>
<td>0</td>
<td>0</td>
<td>0</td>
<td>65000</td>
<td>0</td>
<td>0</td>
<td>0</td>
<td>65000.0</td>
<td>0.0</td>
<td>0.0</td>
<td>0.0</td>
</tr>
<tr class="even">
<td>"Fred Anderson"</td>
<td>"pending"</td>
<td>0</td>
<td>1</td>
<td>0</td>
<td>0</td>
<td>0</td>
<td>5000</td>
<td>0</td>
<td>0</td>
<td>0.0</td>
<td>5000.0</td>
<td>0.0</td>
<td>0.0</td>
</tr>
<tr class="odd">
<td>"Fred Anderson"</td>
<td>"presented"</td>
<td>1</td>
<td>0</td>
<td>1</td>
<td>1</td>
<td>30000</td>
<td>0</td>
<td>5000</td>
<td>10000</td>
<td>30000.0</td>
<td>0.0</td>
<td>5000.0</td>
<td>10000.0</td>
</tr>
<tr class="even">
<td>"Fred Anderson"</td>
<td>"won"</td>
<td>2</td>
<td>1</td>
<td>0</td>
<td>0</td>
<td>165000</td>
<td>7000</td>
<td>0</td>
<td>0</td>
<td>82500.0</td>
<td>7000.0</td>
<td>0.0</td>
<td>0.0</td>
</tr>
</tbody>
</table>
</div>
</div>
</div>
</section>
<section id="advanced-pivot-table-filtering" class="level2">
<h2 data-anchor-id="advanced-pivot-table-filtering">Advanced pivot table filtering</h2>
<p>Interestingly, we can perform filter operations on <em>df_pivot_table</em> because, despite being a pivot table, it’s still a regular dataframe.</p>
<p>Let’s filter the rows for a single manager, Debra Henley.</p>
<div id="abcac114" class="cell" data-execution_count="15">
<div class="code-copy-outer-scaffold"><div class="sourceCode cell-code" id="cb12" style="background: #f1f3f5;"><pre class="sourceCode python code-with-copy"><code class="sourceCode python"><span id="cb12-1">(df_pivot_table</span>
<span id="cb12-2"> .<span class="bu" style="color: null;
background-color: null;
font-style: inherit;">filter</span>(Manager<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span><span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">'Debra Henley'</span>)</span>
<span id="cb12-3"> )</span></code></pre></div></div>
<div class="cell-output cell-output-display" data-execution_count="31">
<div><style>
.dataframe > thead > tr,
.dataframe > tbody > tr {
  text-align: right;
  white-space: pre-wrap;
}
</style>
<small>shape: (4, 14)</small>
<table class="dataframe caption-top table table-sm table-striped small" data-border="1">
<thead>
<tr class="header">
<th data-quarto-table-cell-role="th">Manager</th>
<th data-quarto-table-cell-role="th">Status</th>
<th data-quarto-table-cell-role="th">Quantity_CPU</th>
<th data-quarto-table-cell-role="th">Quantity_Maintenance</th>
<th data-quarto-table-cell-role="th">Quantity_Monitor</th>
<th data-quarto-table-cell-role="th">Quantity_Software</th>
<th data-quarto-table-cell-role="th">Sum_Price_CPU</th>
<th data-quarto-table-cell-role="th">Sum_Price_Maintenance</th>
<th data-quarto-table-cell-role="th">Sum_Price_Monitor</th>
<th data-quarto-table-cell-role="th">Sum_Price_Software</th>
<th data-quarto-table-cell-role="th">Avg_Price_CPU</th>
<th data-quarto-table-cell-role="th">Avg_Price_Maintenance</th>
<th data-quarto-table-cell-role="th">Avg_Price_Monitor</th>
<th data-quarto-table-cell-role="th">Avg_Price_Software</th>
</tr>
<tr class="even">
<td>str</td>
<td>str</td>
<td>u32</td>
<td>u32</td>
<td>u32</td>
<td>u32</td>
<td>i64</td>
<td>i64</td>
<td>i64</td>
<td>i64</td>
<td>f64</td>
<td>f64</td>
<td>f64</td>
<td>f64</td>
</tr>
</thead>
<tbody>
<tr class="odd">
<td>"Debra Henley"</td>
<td>"declined"</td>
<td>2</td>
<td>0</td>
<td>0</td>
<td>0</td>
<td>70000</td>
<td>0</td>
<td>0</td>
<td>0</td>
<td>35000.0</td>
<td>0.0</td>
<td>0.0</td>
<td>0.0</td>
</tr>
<tr class="even">
<td>"Debra Henley"</td>
<td>"pending"</td>
<td>1</td>
<td>2</td>
<td>0</td>
<td>0</td>
<td>40000</td>
<td>10000</td>
<td>0</td>
<td>0</td>
<td>40000.0</td>
<td>5000.0</td>
<td>0.0</td>
<td>0.0</td>
</tr>
<tr class="odd">
<td>"Debra Henley"</td>
<td>"presented"</td>
<td>1</td>
<td>0</td>
<td>0</td>
<td>2</td>
<td>30000</td>
<td>0</td>
<td>0</td>
<td>20000</td>
<td>30000.0</td>
<td>0.0</td>
<td>0.0</td>
<td>10000.0</td>
</tr>
<tr class="even">
<td>"Debra Henley"</td>
<td>"won"</td>
<td>1</td>
<td>0</td>
<td>0</td>
<td>0</td>
<td>65000</td>
<td>0</td>
<td>0</td>
<td>0</td>
<td>65000.0</td>
<td>0.0</td>
<td>0.0</td>
<td>0.0</td>
</tr>
</tbody>
</table>
</div>
</div>
</div>
<p>Or we can look at the pending and won deals.</p>
<div id="e8e1d08e" class="cell" data-execution_count="16">
<div class="code-copy-outer-scaffold"><div class="sourceCode cell-code" id="cb13" style="background: #f1f3f5;"><pre class="sourceCode python code-with-copy"><code class="sourceCode python"><span id="cb13-1">(df_pivot_table</span>
<span id="cb13-2"> .<span class="bu" style="color: null;
background-color: null;
font-style: inherit;">filter</span>(pl.col(<span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">'Status'</span>).is_in([<span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">'pending'</span>,<span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">'won'</span>]))</span>
<span id="cb13-3"> )</span></code></pre></div></div>
<div class="cell-output cell-output-display" data-execution_count="32">
<div><style>
.dataframe > thead > tr,
.dataframe > tbody > tr {
  text-align: right;
  white-space: pre-wrap;
}
</style>
<small>shape: (4, 14)</small>
<table class="dataframe caption-top table table-sm table-striped small" data-border="1">
<thead>
<tr class="header">
<th data-quarto-table-cell-role="th">Manager</th>
<th data-quarto-table-cell-role="th">Status</th>
<th data-quarto-table-cell-role="th">Quantity_CPU</th>
<th data-quarto-table-cell-role="th">Quantity_Maintenance</th>
<th data-quarto-table-cell-role="th">Quantity_Monitor</th>
<th data-quarto-table-cell-role="th">Quantity_Software</th>
<th data-quarto-table-cell-role="th">Sum_Price_CPU</th>
<th data-quarto-table-cell-role="th">Sum_Price_Maintenance</th>
<th data-quarto-table-cell-role="th">Sum_Price_Monitor</th>
<th data-quarto-table-cell-role="th">Sum_Price_Software</th>
<th data-quarto-table-cell-role="th">Avg_Price_CPU</th>
<th data-quarto-table-cell-role="th">Avg_Price_Maintenance</th>
<th data-quarto-table-cell-role="th">Avg_Price_Monitor</th>
<th data-quarto-table-cell-role="th">Avg_Price_Software</th>
</tr>
<tr class="even">
<td>str</td>
<td>str</td>
<td>u32</td>
<td>u32</td>
<td>u32</td>
<td>u32</td>
<td>i64</td>
<td>i64</td>
<td>i64</td>
<td>i64</td>
<td>f64</td>
<td>f64</td>
<td>f64</td>
<td>f64</td>
</tr>
</thead>
<tbody>
<tr class="odd">
<td>"Debra Henley"</td>
<td>"pending"</td>
<td>1</td>
<td>2</td>
<td>0</td>
<td>0</td>
<td>40000</td>
<td>10000</td>
<td>0</td>
<td>0</td>
<td>40000.0</td>
<td>5000.0</td>
<td>0.0</td>
<td>0.0</td>
</tr>
<tr class="even">
<td>"Debra Henley"</td>
<td>"won"</td>
<td>1</td>
<td>0</td>
<td>0</td>
<td>0</td>
<td>65000</td>
<td>0</td>
<td>0</td>
<td>0</td>
<td>65000.0</td>
<td>0.0</td>
<td>0.0</td>
<td>0.0</td>
</tr>
<tr class="odd">
<td>"Fred Anderson"</td>
<td>"pending"</td>
<td>0</td>
<td>1</td>
<td>0</td>
<td>0</td>
<td>0</td>
<td>5000</td>
<td>0</td>
<td>0</td>
<td>0.0</td>
<td>5000.0</td>
<td>0.0</td>
<td>0.0</td>
</tr>
<tr class="even">
<td>"Fred Anderson"</td>
<td>"won"</td>
<td>2</td>
<td>1</td>
<td>0</td>
<td>0</td>
<td>165000</td>
<td>7000</td>
<td>0</td>
<td>0</td>
<td>82500.0</td>
<td>7000.0</td>
<td>0.0</td>
<td>0.0</td>
</tr>
</tbody>
</table>
</div>
</div>
</div>
<p>Pivot tables are too useful and too powerful to remain the preserve of Microsoft Excel alone. They can be created with many data analysis tools, including Polars, pandas, and DuckDB.</p>
<p>Check out my Polars book to learn more about this powerful data analysis tool.</p>
<ul>
<li><p><a href="https://leanpub.com/deep-analysis-with-polars">Deep Analysis with Polars, on Leanpub</a></p></li>
<li><p><a href="https://www.amazon.com/dp/B0GXG1BHG6/">Deep Analysis with Polars, on Amazon</a></p></li>
</ul>


</section>

 ]]></description>
  <category>data analysis</category>
  <guid>https://www.conterval.com/blog/advanced-pivot-tables-in-polars/</guid>
  <pubDate>Fri, 03 Jul 2026 05:00:00 GMT</pubDate>
</item>
<item>
  <title>How the 52-week high/low can guide your investment choice</title>
  <dc:creator>Joram Mutenge</dc:creator>
  <link>https://www.conterval.com/blog/52-week-high-and-low/</link>
  <description><![CDATA[ 




<style>
@font-face {
    font-family: 'Harmonia Sans Pro Cyr';
    src: url('../../assets/fonts/harmonia-sans-pro-cyrillic-semi-bold-condensed.woff2') format('woff2');
}
</style>
<p>Investing is not an easy activity. If it were, we would all be Warren Buffett rich! I’ve been reading investment literature to better understand what this rich-people activity is all about. I’ve reached a point in my life where I should start thinking seriously about investing, but the scholar in me resists the temptation to go in blindly. I know I’m going against conventional wisdom, “Time in the market beats timing the market.” Still, I have to apply my reasoning to the activity; after all, in investing, money is always at stake.</p>
<p>In my reading, I came across two numbers that are important, yet often ignored by both new and seasoned investors. I’ll attempt to explain these two numbers and demonstrate how you too can use them to guide your investment choices.</p>
<section id="what-is-the-52-week-high" class="level2">
<h2 data-anchor-id="what-is-the-52-week-high">What is the 52-week high?</h2>
<p>The 52-week high is the highest price a particular stock has reached during the most recent 52-week period. The 52-week low represents the lowest price for that stock during the same period. Once you know these prices, you can gauge where the stock currently stands relative to where it has been recently. These levels are widely watched because they provide quick insight into a stock’s price range, market sentiment, and potential opportunities or risks.</p>
</section>
<section id="why-care-about-the-52-week-highlow" class="level2">
<h2 data-anchor-id="why-care-about-the-52-week-highlow">Why care about the 52-week high/low?</h2>
<p>If watching these two numbers closely can provide insight into potential opportunities and risks, then it’s important for a new investor like myself to understand what to look for and how to interpret what I see. It turns out there are four things to pay attention to when analyzing a stock’s 52-week high and low.</p>
<ol type="1">
<li><strong>They show the stock’s trading range</strong> – The range between the high and the low tells you how volatile the stock has been. A wide range indicates higher volatility and larger price swings, while a narrow range suggests greater stability. For instance, Tesla (TSLA) often has a wide range because of growth expectations and sensitivity to news. By contrast, Coca-Cola (KO) tends to have a narrower range because of its steady business performance.</li>
</ol>
<div id="28365a76" class="cell" data-execution_count="1">
<details class="code-fold">
<summary>Show the code</summary>
<div class="code-copy-outer-scaffold"><div class="sourceCode cell-code" id="cb1" style="background: #f1f3f5;"><pre class="sourceCode python code-with-copy"><code class="sourceCode python"><span id="cb1-1"><span class="im" style="color: #00769E;
background-color: null;
font-style: inherit;">import</span> yfinance <span class="im" style="color: #00769E;
background-color: null;
font-style: inherit;">as</span> yf</span>
<span id="cb1-2"><span class="im" style="color: #00769E;
background-color: null;
font-style: inherit;">import</span> polars <span class="im" style="color: #00769E;
background-color: null;
font-style: inherit;">as</span> pl</span>
<span id="cb1-3"><span class="im" style="color: #00769E;
background-color: null;
font-style: inherit;">import</span> polars.selectors <span class="im" style="color: #00769E;
background-color: null;
font-style: inherit;">as</span> cs</span>
<span id="cb1-4"><span class="im" style="color: #00769E;
background-color: null;
font-style: inherit;">import</span> hvplot.polars</span>
<span id="cb1-5"><span class="im" style="color: #00769E;
background-color: null;
font-style: inherit;">import</span> holoviews <span class="im" style="color: #00769E;
background-color: null;
font-style: inherit;">as</span> hv</span>
<span id="cb1-6"><span class="im" style="color: #00769E;
background-color: null;
font-style: inherit;">from</span> bokeh.themes <span class="im" style="color: #00769E;
background-color: null;
font-style: inherit;">import</span> Theme</span>
<span id="cb1-7"><span class="im" style="color: #00769E;
background-color: null;
font-style: inherit;">from</span> bokeh.models <span class="im" style="color: #00769E;
background-color: null;
font-style: inherit;">import</span> CustomJSTickFormatter, Div</span>
<span id="cb1-8"><span class="im" style="color: #00769E;
background-color: null;
font-style: inherit;">from</span> bokeh.layouts <span class="im" style="color: #00769E;
background-color: null;
font-style: inherit;">import</span> column</span>
<span id="cb1-9"><span class="im" style="color: #00769E;
background-color: null;
font-style: inherit;">from</span> bokeh.io <span class="im" style="color: #00769E;
background-color: null;
font-style: inherit;">import</span> output_notebook, show</span>
<span id="cb1-10"><span class="im" style="color: #00769E;
background-color: null;
font-style: inherit;">import</span> base64</span>
<span id="cb1-11"><span class="im" style="color: #00769E;
background-color: null;
font-style: inherit;">from</span> pathlib <span class="im" style="color: #00769E;
background-color: null;
font-style: inherit;">import</span> Path</span>
<span id="cb1-12"><span class="im" style="color: #00769E;
background-color: null;
font-style: inherit;">import</span> datetime</span>
<span id="cb1-13"></span>
<span id="cb1-14"></span>
<span id="cb1-15"><span class="co" style="color: #5E5E5E;
background-color: null;
font-style: inherit;"># Define stock tickers</span></span>
<span id="cb1-16">tickers <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span> [</span>
<span id="cb1-17">    <span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"NVDA"</span>,  <span class="co" style="color: #5E5E5E;
background-color: null;
font-style: inherit;"># Nvidia</span></span>
<span id="cb1-18">    <span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"TSLA"</span>,  <span class="co" style="color: #5E5E5E;
background-color: null;
font-style: inherit;"># Tesla</span></span>
<span id="cb1-19">    <span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"KO"</span>,    <span class="co" style="color: #5E5E5E;
background-color: null;
font-style: inherit;"># Coca-Cola</span></span>
<span id="cb1-20">    <span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"META"</span>,  <span class="co" style="color: #5E5E5E;
background-color: null;
font-style: inherit;"># Meta</span></span>
<span id="cb1-21">    <span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"GME"</span>,   <span class="co" style="color: #5E5E5E;
background-color: null;
font-style: inherit;"># GameStop</span></span>
<span id="cb1-22">]</span>
<span id="cb1-23"></span>
<span id="cb1-24"><span class="co" style="color: #5E5E5E;
background-color: null;
font-style: inherit;"># Define date range</span></span>
<span id="cb1-25">start_date <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span> <span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"2021-01-01"</span></span>
<span id="cb1-26">end_date <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span> <span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"2026-06-11"</span></span>
<span id="cb1-27"></span>
<span id="cb1-28"><span class="co" style="color: #5E5E5E;
background-color: null;
font-style: inherit;"># Download data</span></span>
<span id="cb1-29">data <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span> yf.download(tickers, start<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span>start_date, end<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span>end_date, progress<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span><span class="va" style="color: #111111;
background-color: null;
font-style: inherit;">False</span> )</span>
<span id="cb1-30"></span>
<span id="cb1-31">df <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span> (pl.from_pandas(data.reset_index())</span>
<span id="cb1-32">      .<span class="bu" style="color: null;
background-color: null;
font-style: inherit;">filter</span>(pl.col(<span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"('Date', '')"</span>).dt.year().ne(<span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">2021</span>))</span>
<span id="cb1-33">      )</span>
<span id="cb1-34"></span>
<span id="cb1-35"><span class="co" style="color: #5E5E5E;
background-color: null;
font-style: inherit;"># Function to select specific stock</span></span>
<span id="cb1-36"><span class="kw" style="color: #003B4F;
background-color: null;
font-weight: bold;
font-style: inherit;">def</span> select_ticker(df, ticker: <span class="bu" style="color: null;
background-color: null;
font-style: inherit;">str</span>):</span>
<span id="cb1-37">    <span class="cf" style="color: #003B4F;
background-color: null;
font-weight: bold;
font-style: inherit;">return</span> (df</span>
<span id="cb1-38">        .select(cs.contains(ticker), <span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"('Date', '')"</span>)</span>
<span id="cb1-39">        .rename(<span class="kw" style="color: #003B4F;
background-color: null;
font-weight: bold;
font-style: inherit;">lambda</span> c: c.replace(<span class="ss" style="color: #20794D;
background-color: null;
font-style: inherit;">f"', '</span><span class="sc" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">{</span>ticker<span class="sc" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">}</span><span class="ss" style="color: #20794D;
background-color: null;
font-style: inherit;">')"</span>,<span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">""</span>).replace(<span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"('"</span>,<span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">""</span>).replace(<span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"', '')"</span>,<span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">''</span>))</span>
<span id="cb1-40">        .select(<span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">'Date'</span>, pl.<span class="bu" style="color: null;
background-color: null;
font-style: inherit;">all</span>().exclude(<span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">'Date'</span>))</span>
<span id="cb1-41">        .with_columns(pl.col(<span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">'Date'</span>).cast(pl.Date))</span>
<span id="cb1-42">        .with_columns(pl.col(<span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">'High'</span>).rolling_max_by(by<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span><span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">'Date'</span>, window_size<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span><span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">'52w'</span>).alias(<span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">'52-week High'</span>),</span>
<span id="cb1-43">                      pl.col(<span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">'Low'</span>).rolling_min_by(by<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span><span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">'Date'</span>, window_size<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span><span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">'52w'</span>).alias(<span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">'52-week Low'</span>))</span>
<span id="cb1-44">    )</span>
<span id="cb1-45"></span>
<span id="cb1-46"></span>
<span id="cb1-47">font <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span> <span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">'Harmonia Sans Pro Cyr'</span></span>
<span id="cb1-48">color_honeydew <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span> <span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">'#F0FFF0'</span></span>
<span id="cb1-49"></span>
<span id="cb1-50">hv.renderer(<span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">'bokeh'</span>).theme <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span> Theme(json<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span>{</span>
<span id="cb1-51">    <span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">'attrs'</span>: {</span>
<span id="cb1-52">        <span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">'Plot'</span>: {</span>
<span id="cb1-53">            <span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">'background_fill_color'</span>: color_honeydew,</span>
<span id="cb1-54">            <span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">'border_fill_color'</span>: color_honeydew,</span>
<span id="cb1-55">            <span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">'outline_line_color'</span>: color_honeydew,</span>
<span id="cb1-56">        },</span>
<span id="cb1-57">        <span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">'Legend'</span>: {</span>
<span id="cb1-58">            <span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">'background_fill_color'</span>: color_honeydew,</span>
<span id="cb1-59">            <span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">'border_line_color'</span>: color_honeydew,</span>
<span id="cb1-60">            <span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">'label_text_font'</span>: font,</span>
<span id="cb1-61">            <span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">'label_text_font_size'</span>: <span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">'13pt'</span>,</span>
<span id="cb1-62">        },</span>
<span id="cb1-63">        <span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">'Text'</span>: {<span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">'text_font'</span>: font},</span>
<span id="cb1-64">        <span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">'Axis'</span>: {</span>
<span id="cb1-65">            <span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">'major_label_text_font'</span>: font,</span>
<span id="cb1-66">            <span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">'axis_label_text_font'</span>: font,</span>
<span id="cb1-67">            <span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">'major_label_text_font_size'</span>: <span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">'15pt'</span>,</span>
<span id="cb1-68">        },</span>
<span id="cb1-69">        <span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">'Title'</span>: {<span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">'text_font'</span>: font, <span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">'text_font_size'</span>: <span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">'18pt'</span>, <span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">'align'</span>: <span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">'center'</span>},</span>
<span id="cb1-70">    }</span>
<span id="cb1-71">})</span>
<span id="cb1-72"></span>
<span id="cb1-73">logo_path <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span> Path(<span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">'../../images/logo_financical.png'</span>)</span>
<span id="cb1-74">logo_b64 <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span> base64.b64encode(logo_path.read_bytes()).decode(<span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">'utf-8'</span>)</span>
<span id="cb1-75">logo_data_uri <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span> <span class="ss" style="color: #20794D;
background-color: null;
font-style: inherit;">f"data:image/png;base64,</span><span class="sc" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">{</span>logo_b64<span class="sc" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">}</span><span class="ss" style="color: #20794D;
background-color: null;
font-style: inherit;">"</span></span>
<span id="cb1-76"></span>
<span id="cb1-77">LOGO_H <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span> <span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">30</span> <span class="co" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">#change image size</span></span>
<span id="cb1-78"></span>
<span id="cb1-79"><span class="kw" style="color: #003B4F;
background-color: null;
font-weight: bold;
font-style: inherit;">def</span> format_y_axis(bokeh_plot, element):</span>
<span id="cb1-80">    p <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span> bokeh_plot.state</span>
<span id="cb1-81">    p.min_border_top <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span> <span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">60</span></span>
<span id="cb1-82">    p.min_border_bottom <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span> LOGO_H <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">+</span> <span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">50</span>  <span class="co" style="color: #5E5E5E;
background-color: null;
font-style: inherit;"># space below x-axis for the logo</span></span>
<span id="cb1-83"></span>
<span id="cb1-84">    top_tick <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span> p.y_range.end</span>
<span id="cb1-85">    p.yaxis.formatter <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span> CustomJSTickFormatter(</span>
<span id="cb1-86">        args<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span>{<span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">'top_tick'</span>: top_tick},</span>
<span id="cb1-87">        code<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span><span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">'''</span></span>
<span id="cb1-88"><span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">            if (Math.abs(tick - top_tick) &lt; (top_tick * 0.05)) {</span></span>
<span id="cb1-89"><span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">                return '$' + tick.toFixed(0);</span></span>
<span id="cb1-90"><span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">            }</span></span>
<span id="cb1-91"><span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">            return tick.toFixed(0);</span></span>
<span id="cb1-92"><span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">        '''</span></span>
<span id="cb1-93">    )</span>
<span id="cb1-94"></span>
<span id="cb1-95"><span class="co" style="color: #5E5E5E;
background-color: null;
font-style: inherit;"># Create the chart</span></span>
<span id="cb1-96">plot_tesla <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span> (df</span>
<span id="cb1-97">    .pipe(select_ticker, ticker<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span><span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">'TSLA'</span>)</span>
<span id="cb1-98">    .hvplot.line(x<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span><span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">'Date'</span>, y<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span>[<span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">'52-week High'</span>, <span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">'52-week Low'</span>],</span>
<span id="cb1-99">                 title<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span><span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">'Tesla stock 52-week high/low'</span>,</span>
<span id="cb1-100">                 xlabel<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span><span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">' '</span>, ylabel<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span><span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">' '</span>, height<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span><span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">300</span>, width<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span><span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">500</span>,</span>
<span id="cb1-101">                 legend_cols<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span><span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">1</span>, legend<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span><span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">'top_left'</span>, legend_opts<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span>{<span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">'title'</span>:<span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">''</span>})</span>
<span id="cb1-102">).opts(hooks<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span>[format_y_axis])</span>
<span id="cb1-103"></span>
<span id="cb1-104">plot_coke <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span> (df</span>
<span id="cb1-105">    .pipe(select_ticker, ticker<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span><span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">'KO'</span>)</span>
<span id="cb1-106">    .hvplot.line(x<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span><span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">'Date'</span>, y<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span>[<span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">'52-week High'</span>, <span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">'52-week Low'</span>],</span>
<span id="cb1-107">                 title<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span><span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">'Coca Cola stock 52-week high/low'</span>,</span>
<span id="cb1-108">                 xlabel<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span><span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">' '</span>, ylabel<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span><span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">' '</span>, height<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span><span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">300</span>, width<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span><span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">500</span>,</span>
<span id="cb1-109">                 legend_cols<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span><span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">1</span>, legend<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span><span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">'top_left'</span>, legend_opts<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span>{<span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">'title'</span>:<span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">''</span>})</span>
<span id="cb1-110">).opts(hooks<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span>[format_y_axis])</span>
<span id="cb1-111"></span>
<span id="cb1-112">combined <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span> plot_tesla <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">+</span> plot_coke</span>
<span id="cb1-113"></span>
<span id="cb1-114">bokeh_plot <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span> hv.render(combined, backend<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span><span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">'bokeh'</span>)</span>
<span id="cb1-115"></span>
<span id="cb1-116"><span class="cf" style="color: #003B4F;
background-color: null;
font-weight: bold;
font-style: inherit;">for</span> item <span class="kw" style="color: #003B4F;
background-color: null;
font-weight: bold;
font-style: inherit;">in</span> bokeh_plot.children:</span>
<span id="cb1-117">    p <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span> item[<span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">0</span>] <span class="cf" style="color: #003B4F;
background-color: null;
font-weight: bold;
font-style: inherit;">if</span> <span class="bu" style="color: null;
background-color: null;
font-style: inherit;">isinstance</span>(item, <span class="bu" style="color: null;
background-color: null;
font-style: inherit;">tuple</span>) <span class="cf" style="color: #003B4F;
background-color: null;
font-weight: bold;
font-style: inherit;">else</span> item</span>
<span id="cb1-118">    p.title.text_font <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span> font</span>
<span id="cb1-119">    p.title.text_font_size <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span> <span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">'18pt'</span></span>
<span id="cb1-120">    p.title.align <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span> <span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">'left'</span></span>
<span id="cb1-121">    p.background_fill_color <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span> color_honeydew</span>
<span id="cb1-122">    p.border_fill_color <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span> color_honeydew</span>
<span id="cb1-123">    p.outline_line_color <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span> color_honeydew</span>
<span id="cb1-124">    p.legend.background_fill_color <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span> color_honeydew</span>
<span id="cb1-125">    p.legend.border_line_color <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span> color_honeydew</span>
<span id="cb1-126"></span>
<span id="cb1-127">total_width <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span> <span class="bu" style="color: null;
background-color: null;
font-style: inherit;">sum</span>((item[<span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">0</span>] <span class="cf" style="color: #003B4F;
background-color: null;
font-weight: bold;
font-style: inherit;">if</span> <span class="bu" style="color: null;
background-color: null;
font-style: inherit;">isinstance</span>(item, <span class="bu" style="color: null;
background-color: null;
font-style: inherit;">tuple</span>) <span class="cf" style="color: #003B4F;
background-color: null;
font-weight: bold;
font-style: inherit;">else</span> item).width <span class="cf" style="color: #003B4F;
background-color: null;
font-weight: bold;
font-style: inherit;">for</span> item <span class="kw" style="color: #003B4F;
background-color: null;
font-weight: bold;
font-style: inherit;">in</span> bokeh_plot.children)</span>
<span id="cb1-128"></span>
<span id="cb1-129">logo_div <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span> Div(</span>
<span id="cb1-130">    text<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span><span class="ss" style="color: #20794D;
background-color: null;
font-style: inherit;">f'''</span></span>
<span id="cb1-131"><span class="ss" style="color: #20794D;
background-color: null;
font-style: inherit;">        &lt;div style="</span></span>
<span id="cb1-132"><span class="ss" style="color: #20794D;
background-color: null;
font-style: inherit;">            width: </span><span class="sc" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">{</span>total_width<span class="sc" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">}</span><span class="ss" style="color: #20794D;
background-color: null;
font-style: inherit;">px;</span></span>
<span id="cb1-133"><span class="ss" style="color: #20794D;
background-color: null;
font-style: inherit;">            height: </span><span class="sc" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">{</span>LOGO_H <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">+</span> <span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">40</span><span class="sc" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">}</span><span class="ss" style="color: #20794D;
background-color: null;
font-style: inherit;">px;</span></span>
<span id="cb1-134"><span class="ss" style="color: #20794D;
background-color: null;
font-style: inherit;">            position: relative;</span></span>
<span id="cb1-135"><span class="ss" style="color: #20794D;
background-color: null;
font-style: inherit;">            top: -</span><span class="sc" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">{</span>LOGO_H <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">+</span> <span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">40</span><span class="sc" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">}</span><span class="ss" style="color: #20794D;
background-color: null;
font-style: inherit;">px;</span></span>
<span id="cb1-136"><span class="ss" style="color: #20794D;
background-color: null;
font-style: inherit;">            display: flex;</span></span>
<span id="cb1-137"><span class="ss" style="color: #20794D;
background-color: null;
font-style: inherit;">            align-items: center;</span></span>
<span id="cb1-138"><span class="ss" style="color: #20794D;
background-color: null;
font-style: inherit;">            justify-content: flex-end;</span></span>
<span id="cb1-139"><span class="ss" style="color: #20794D;
background-color: null;
font-style: inherit;">            padding-right: 40px;</span></span>
<span id="cb1-140"><span class="ss" style="color: #20794D;
background-color: null;
font-style: inherit;">            background-color: transparent;</span></span>
<span id="cb1-141"><span class="ss" style="color: #20794D;
background-color: null;
font-style: inherit;">            pointer-events: none;</span></span>
<span id="cb1-142"><span class="ss" style="color: #20794D;
background-color: null;
font-style: inherit;">        "&gt;</span></span>
<span id="cb1-143"><span class="ss" style="color: #20794D;
background-color: null;
font-style: inherit;">            &lt;img src="</span><span class="sc" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">{</span>logo_data_uri<span class="sc" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">}</span><span class="ss" style="color: #20794D;
background-color: null;
font-style: inherit;">" height="</span><span class="sc" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">{</span>LOGO_H<span class="sc" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">}</span><span class="ss" style="color: #20794D;
background-color: null;
font-style: inherit;">px"/&gt;</span></span>
<span id="cb1-144"><span class="ss" style="color: #20794D;
background-color: null;
font-style: inherit;">        &lt;/div&gt;</span></span>
<span id="cb1-145"><span class="ss" style="color: #20794D;
background-color: null;
font-style: inherit;">    '''</span></span>
<span id="cb1-146">)</span>
<span id="cb1-147"></span>
<span id="cb1-148">final <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span> column(bokeh_plot, logo_div, spacing<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span><span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">0</span>)</span>
<span id="cb1-149">show(final)</span></code></pre></div></div>
</details>
<div class="cell-output cell-output-display">
<script type="esms-options">{"shimMode": true}</script><style>*[data-root-id],
*[data-root-id] > * {
  box-sizing: border-box;
  font-family: var(--jp-ui-font-family);
  font-size: var(--jp-ui-font-size1);
  color: var(--vscode-editor-foreground, var(--jp-ui-font-color1));
}

/* Override VSCode background color */
.cell-output-ipywidget-background:has(
  > .cell-output-ipywidget-background > .lm-Widget > *[data-root-id]
),
.cell-output-ipywidget-background:has(> .lm-Widget > *[data-root-id]) {
  background-color: transparent !important;
}
</style>
</div>
<div class="cell-output cell-output-display">
<script type="application/javascript">
(function(root) {
  function now() {
    return new Date();
  }

  const force = true;
  const version = '3.9.1'.replace('rc', '-rc.').replace('.dev', '-dev.');
  const reloading = false;
  const Bokeh = root.Bokeh;
  const BK_RE = /^https:\/\/cdn\.bokeh\.org\/bokeh\/(release|dev)\/bokeh-/;
  const PN_RE = /^https:\/\/cdn\.holoviz\.org\/panel\/[^/]+\/dist\/panel/i;

  // Set a timeout for this load but only if we are not already initializing
  if (typeof (root._bokeh_timeout) === "undefined" || (force || !root._bokeh_is_initializing)) {
    root._bokeh_timeout = Date.now() + 5000;
    root._bokeh_failed_load = false;
  }

  function run_callbacks() {
    try {
      root._bokeh_onload_callbacks.forEach(function(callback) {
        if (callback != null)
          callback();
      });
    } finally {
      delete root._bokeh_onload_callbacks;
    }
    console.debug("Bokeh: all callbacks have finished");
  }

  function load_libs(css_urls, js_urls, js_modules, js_exports, Bokeh, callback) {
    if (css_urls == null) css_urls = [];
    if (js_urls == null) js_urls = [];
    if (js_modules == null) js_modules = [];
    if (js_exports == null) js_exports = {};

    root._bokeh_onload_callbacks.push(callback);

    if (root._bokeh_is_loading > 0) {
      // Don't load bokeh if it is still initializing
      console.debug("Bokeh: BokehJS is being loaded, scheduling callback at", now());
      return null;
    } else if (js_urls.length === 0 && js_modules.length === 0 && Object.keys(js_exports).length === 0) {
      // There is nothing to load
      run_callbacks();
      return null;
    }

    function on_load() {
      root._bokeh_is_loading--;
      if (root._bokeh_is_loading === 0) {
        console.debug("Bokeh: all BokehJS libraries/stylesheets loaded");
        run_callbacks()
      }
    }
    window._bokeh_on_load = on_load

    function on_error(e) {
      const src_el = e.srcElement
      console.error("failed to load " + (src_el.href || src_el.src));
    }

    const skip = [];
    if (window.requirejs) {
      window.requirejs.config({'packages': {}, 'paths': {}, 'shim': {}});
      root._bokeh_is_loading = css_urls.length + 0;
    } else {
      root._bokeh_is_loading = css_urls.length + js_urls.length + js_modules.length + Object.keys(js_exports).length;
    }

    const existing_stylesheets = []
    const links = document.getElementsByTagName('link')
    for (let i = 0; i < links.length; i++) {
      const link = links[i]
      if (link.href != null) {
        existing_stylesheets.push(link.href)
      }
    }
    for (let i = 0; i < css_urls.length; i++) {
      const url = css_urls[i];
      const escaped = encodeURI(url)
      if (existing_stylesheets.indexOf(escaped) !== -1) {
        on_load()
        continue;
      }
      const element = document.createElement("link");
      element.onload = on_load;
      element.onerror = on_error;
      element.rel = "stylesheet";
      element.type = "text/css";
      element.href = url;
      console.debug("Bokeh: injecting link tag for BokehJS stylesheet: ", url);
      document.body.appendChild(element);
    }    var existing_scripts = []
    const scripts = document.getElementsByTagName('script')
    for (let i = 0; i < scripts.length; i++) {
      var script = scripts[i]
      if (script.src != null) {
        existing_scripts.push(script.src)
      }
    }
    for (let i = 0; i < js_urls.length; i++) {
      const url = js_urls[i];
      const escaped = encodeURI(url)
      const shouldSkip = skip.includes(escaped) || existing_scripts.includes(escaped)
      const isBokehOrPanel = BK_RE.test(escaped) || PN_RE.test(escaped)
      const missingOrBroken = Bokeh == null || Bokeh.Panel == null || (Bokeh.version != version && !Bokeh.versions?.has(version)) || Bokeh.versions?.get(version)?.Panel == null;
      if (shouldSkip && !(isBokehOrPanel && missingOrBroken)) {
        if (!window.requirejs) {
          on_load();
        }
        continue;
      }
      const element = document.createElement('script');
      element.onload = on_load;
      element.onerror = on_error;
      element.async = false;
      element.src = url;
      console.debug("Bokeh: injecting script tag for BokehJS library: ", url);
      document.head.appendChild(element);
    }
    for (let i = 0; i < js_modules.length; i++) {
      const url = js_modules[i];
      const escaped = encodeURI(url)
      if (skip.indexOf(escaped) !== -1 || existing_scripts.indexOf(escaped) !== -1) {
        if (!window.requirejs) {
          on_load();
        }
        continue;
      }
      var element = document.createElement('script');
      element.onload = on_load;
      element.onerror = on_error;
      element.async = false;
      element.src = url;
      element.type = "module";
      console.debug("Bokeh: injecting script tag for BokehJS library: ", url);
      document.head.appendChild(element);
    }
    for (const name in js_exports) {
      const url = js_exports[name];
      const escaped = encodeURI(url)
      if (skip.indexOf(escaped) >= 0 || root[name] != null) {
        if (!window.requirejs) {
          on_load();
        }
        continue;
      }
      var element = document.createElement('script');
      element.onerror = on_error;
      element.async = false;
      element.type = "module";
      console.debug("Bokeh: injecting script tag for BokehJS library: ", url);
      element.textContent = `
      import ${name} from "${url}"
      window.${name} = ${name}
      window._bokeh_on_load()
      `
      document.head.appendChild(element);
    }
    if (!js_urls.length && !js_modules.length) {
      on_load()
    }
  };

  function inject_raw_css(css) {
    const element = document.createElement("style");
    element.appendChild(document.createTextNode(css));
    document.body.appendChild(element);
  }

  const js_urls = ["https://cdn.holoviz.org/panel/1.9.3/dist/bundled/reactiveesm/es-module-shims@^1.10.0/dist/es-module-shims.min.js", "https://cdn.bokeh.org/bokeh/release/bokeh-3.9.1.min.js", "https://cdn.bokeh.org/bokeh/release/bokeh-gl-3.9.1.min.js", "https://cdn.bokeh.org/bokeh/release/bokeh-widgets-3.9.1.min.js", "https://cdn.bokeh.org/bokeh/release/bokeh-tables-3.9.1.min.js", "https://cdn.holoviz.org/panel/1.9.3/dist/panel.min.js"];
  const js_modules = [];
  const js_exports = {};
  const css_urls = [];
  const inline_js = [    function(Bokeh) {
      Bokeh.set_log_level("info");
    },
function(Bokeh) {} // ensure no trailing comma for IE
  ];

  function run_inline_js() {
    if ((root.Bokeh !== undefined) || (force === true)) {
      for (let i = 0; i < inline_js.length; i++) {
        try {
          inline_js[i].call(root, root.Bokeh);
        } catch(e) {
          if (!reloading) {
            throw e;
          }
        }
      }
    } else if (Date.now() < root._bokeh_timeout) {
      setTimeout(run_inline_js, 100);
    } else if (!root._bokeh_failed_load) {
      console.log("Bokeh: BokehJS failed to load within specified timeout.");
      root._bokeh_failed_load = true;
    }
    root._bokeh_is_initializing = false;
  }

  function load_or_wait() {
    // Implement a backoff loop that tries to ensure we do not load multiple
    // versions of Bokeh and its dependencies at the same time.
    // In recent versions we use the root._bokeh_is_initializing flag
    // to determine whether there is an ongoing attempt to initialize
    // bokeh, however for backward compatibility we also try to ensure
    // that we do not start loading a newer (Panel>=1.0 and Bokeh>3) version
    // before older versions are fully initialized.
    if (root._bokeh_is_initializing && Date.now() > root._bokeh_timeout) {
      // If the timeout and bokeh was not successfully loaded we reset
      // everything and try loading again
      root._bokeh_timeout = Date.now() + 5000;
      root._bokeh_is_initializing = false;
      root._bokeh_onload_callbacks = undefined;
      root._bokeh_is_loading = 0;
      console.log("Bokeh: BokehJS was loaded multiple times but one version failed to initialize.");
      load_or_wait();
    } else if (root._bokeh_is_initializing || (typeof root._bokeh_is_initializing === "undefined" && root._bokeh_onload_callbacks !== undefined)) {
      setTimeout(load_or_wait, 100);
    } else {
      root._bokeh_is_initializing = true;
      root._bokeh_onload_callbacks = [];
      const bokeh_loaded = Bokeh != null && ((Bokeh.version === version && Bokeh.Panel) || (Bokeh.versions?.has(version) && Bokeh.versions.get(version)?.Panel));
      if (!reloading && !bokeh_loaded) {
        if (root.Bokeh) {
          root.Bokeh = undefined;
        }
        console.debug("Bokeh: BokehJS not loaded, scheduling load and callback at", now());
      }
      load_libs(css_urls, js_urls, js_modules, js_exports, Bokeh, function() {
        console.debug("Bokeh: BokehJS plotting callback run at", now());
        run_inline_js();
        if (Bokeh != undefined && !reloading) {
          const NewBokeh = root.Bokeh;
          if (Bokeh.versions === undefined) {
            Bokeh.versions = new Map();
          }
          if (NewBokeh.version !== Bokeh.version) {
            Bokeh[NewBokeh.version] = NewBokeh;
            Bokeh.versions.set(NewBokeh.version, NewBokeh);
          }
          root.Bokeh = Bokeh;
        }
      });
    }
  }
  // Give older versions of the autoload script a head-start to ensure
  // they initialize before we start loading newer version.
  setTimeout(load_or_wait, 100)
}(window));
</script>
</div>
<div class="cell-output cell-output-display">
<script type="application/javascript">

if ((window.PyViz === undefined) || (window.PyViz instanceof HTMLElement)) {
  window.PyViz = {comms: {}, comm_status:{}, kernels:{}, receivers: {}, plot_index: []}
}


    function JupyterCommManager() {
    }

    JupyterCommManager.prototype.register_target = function(plot_id, comm_id, msg_handler) {
      if (window.comm_manager || ((window.Jupyter !== undefined) && (Jupyter.notebook.kernel != null))) {
        var comm_manager = window.comm_manager || Jupyter.notebook.kernel.comm_manager;
        comm_manager.register_target(comm_id, function(comm) {
          comm.on_msg(msg_handler);
        });
      } else if ((plot_id in window.PyViz.kernels) && (window.PyViz.kernels[plot_id])) {
        window.PyViz.kernels[plot_id].registerCommTarget(comm_id, function(comm) {
          comm.onMsg = msg_handler;
        });
      } else if (typeof google != 'undefined' && google.colab.kernel != null) {
        google.colab.kernel.comms.registerTarget(comm_id, (comm) => {
          var messages = comm.messages[Symbol.asyncIterator]();
          function processIteratorResult(result) {
            var message = result.value;
            var content = {data: message.data, comm_id};
            var buffers = []
            for (var buffer of message.buffers || []) {
              buffers.push(new DataView(buffer))
            }
            var metadata = message.metadata || {};
            var msg = {content, buffers, metadata}
            msg_handler(msg);
            return messages.next().then(processIteratorResult);
          }
          return messages.next().then(processIteratorResult);
        })
      }
    }

    JupyterCommManager.prototype.get_client_comm = function(plot_id, comm_id, msg_handler) {
      if (comm_id in window.PyViz.comms) {
        return window.PyViz.comms[comm_id];
      } else if (window.comm_manager || ((window.Jupyter !== undefined) && (Jupyter.notebook.kernel != null))) {
        var comm_manager = window.comm_manager || Jupyter.notebook.kernel.comm_manager;
        var comm = comm_manager.new_comm(comm_id, {}, {}, {}, comm_id);
        if (msg_handler) {
          comm.on_msg(msg_handler);
        }
      } else if ((plot_id in window.PyViz.kernels) && (window.PyViz.kernels[plot_id])) {
        var comm = window.PyViz.kernels[plot_id].connectToComm(comm_id);
        let retries = 0;
        const open = () => {
          if (comm.active) {
            comm.open();
          } else if (retries > 3) {
            console.warn('Comm target never activated')
          } else {
            retries += 1
            setTimeout(open, 500)
          }
        }
        if (comm.active) {
          comm.open();
        } else {
          setTimeout(open, 500)
        }
        if (msg_handler) {
          comm.onMsg = msg_handler;
        }
      } else if (typeof google != 'undefined' && google.colab.kernel != null) {
        var comm_promise = google.colab.kernel.comms.open(comm_id)
        comm_promise.then((comm) => {
          window.PyViz.comms[comm_id] = comm;
          if (msg_handler) {
            var messages = comm.messages[Symbol.asyncIterator]();
            function processIteratorResult(result) {
              var message = result.value;
              var content = {data: message.data};
              var metadata = message.metadata || {comm_id};
              var msg = {content, metadata}
              msg_handler(msg);
              return messages.next().then(processIteratorResult);
            }
            return messages.next().then(processIteratorResult);
          }
        })
        var sendClosure = (data, metadata, buffers, disposeOnDone) => {
          return comm_promise.then((comm) => {
            comm.send(data, metadata, buffers, disposeOnDone);
          });
        };
        var comm = {
          send: sendClosure
        };
      }
      window.PyViz.comms[comm_id] = comm;
      return comm;
    }
    window.PyViz.comm_manager = new JupyterCommManager();
    


var JS_MIME_TYPE = 'application/javascript';
var HTML_MIME_TYPE = 'text/html';
var EXEC_MIME_TYPE = 'application/vnd.holoviews_exec.v0+json';
var CLASS_NAME = 'output';

/**
 * Render data to the DOM node
 */
function render(props, node) {
  var div = document.createElement("div");
  var script = document.createElement("script");
  node.appendChild(div);
  node.appendChild(script);
}

/**
 * Handle when a new output is added
 */
function handle_add_output(event, handle) {
  var output_area = handle.output_area;
  var output = handle.output;
  if ((output.data == undefined) || (!output.data.hasOwnProperty(EXEC_MIME_TYPE))) {
    return
  }
  var id = output.metadata[EXEC_MIME_TYPE]["id"];
  var toinsert = output_area.element.find("." + CLASS_NAME.split(' ')[0]);
  if (id !== undefined) {
    var nchildren = toinsert.length;
    var html_node = toinsert[nchildren-1].children[0];
    html_node.innerHTML = output.data[HTML_MIME_TYPE];
    var scripts = [];
    var nodelist = html_node.querySelectorAll("script");
    for (var i in nodelist) {
      if (nodelist.hasOwnProperty(i)) {
        scripts.push(nodelist[i])
      }
    }

    scripts.forEach( function (oldScript) {
      var newScript = document.createElement("script");
      var attrs = [];
      var nodemap = oldScript.attributes;
      for (var j in nodemap) {
        if (nodemap.hasOwnProperty(j)) {
          attrs.push(nodemap[j])
        }
      }
      attrs.forEach(function(attr) { newScript.setAttribute(attr.name, attr.value) });
      newScript.appendChild(document.createTextNode(oldScript.innerHTML));
      oldScript.parentNode.replaceChild(newScript, oldScript);
    });
    if (JS_MIME_TYPE in output.data) {
      toinsert[nchildren-1].children[1].textContent = output.data[JS_MIME_TYPE];
    }
    output_area._hv_plot_id = id;
    if ((window.Bokeh !== undefined) && (id in Bokeh.index)) {
      window.PyViz.plot_index[id] = Bokeh.index[id];
    } else {
      window.PyViz.plot_index[id] = null;
    }
  } else if (output.metadata[EXEC_MIME_TYPE]["server_id"] !== undefined) {
    var bk_div = document.createElement("div");
    bk_div.innerHTML = output.data[HTML_MIME_TYPE];
    var script_attrs = bk_div.children[0].attributes;
    for (var i = 0; i < script_attrs.length; i++) {
      toinsert[toinsert.length - 1].childNodes[1].setAttribute(script_attrs[i].name, script_attrs[i].value);
    }
    // store reference to server id on output_area
    output_area._bokeh_server_id = output.metadata[EXEC_MIME_TYPE]["server_id"];
  }
}

/**
 * Handle when an output is cleared or removed
 */
function handle_clear_output(event, handle) {
  var id = handle.cell.output_area._hv_plot_id;
  var server_id = handle.cell.output_area._bokeh_server_id;
  if (((id === undefined) || !(id in PyViz.plot_index)) && (server_id !== undefined)) { return; }
  var comm = window.PyViz.comm_manager.get_client_comm("hv-extension-comm", "hv-extension-comm", function () {});
  if (server_id !== null) {
    comm.send({event_type: 'server_delete', 'id': server_id});
    return;
  } else if (comm !== null) {
    comm.send({event_type: 'delete', 'id': id});
  }
  delete PyViz.plot_index[id];
  if ((window.Bokeh !== undefined) & (id in window.Bokeh.index)) {
    var doc = window.Bokeh.index[id].model.document
    doc.clear();
    const i = window.Bokeh.documents.indexOf(doc);
    if (i > -1) {
      window.Bokeh.documents.splice(i, 1);
    }
  }
}

/**
 * Handle kernel restart event
 */
function handle_kernel_cleanup(event, handle) {
  delete PyViz.comms["hv-extension-comm"];
  window.PyViz.plot_index = {}
}

/**
 * Handle update_display_data messages
 */
function handle_update_output(event, handle) {
  handle_clear_output(event, {cell: {output_area: handle.output_area}})
  handle_add_output(event, handle)
}

function register_renderer(events, OutputArea) {
  function append_mime(data, metadata, element) {
    // create a DOM node to render to
    var toinsert = this.create_output_subarea(
    metadata,
    CLASS_NAME,
    EXEC_MIME_TYPE
    );
    this.keyboard_manager.register_events(toinsert);
    // Render to node
    var props = {data: data, metadata: metadata[EXEC_MIME_TYPE]};
    render(props, toinsert[0]);
    element.append(toinsert);
    return toinsert
  }

  events.on('output_added.OutputArea', handle_add_output);
  events.on('output_updated.OutputArea', handle_update_output);
  events.on('clear_output.CodeCell', handle_clear_output);
  events.on('delete.Cell', handle_clear_output);
  events.on('kernel_ready.Kernel', handle_kernel_cleanup);

  OutputArea.prototype.register_mime_type(EXEC_MIME_TYPE, append_mime, {
    safe: true,
    index: 0
  });
}

if (window.Jupyter !== undefined) {
  try {
    var events = require('base/js/events');
    var OutputArea = require('notebook/js/outputarea').OutputArea;
    if (OutputArea.prototype.mime_types().indexOf(EXEC_MIME_TYPE) == -1) {
      register_renderer(events, OutputArea);
    }
  } catch(err) {
  }
}

</script>
</div>
<div class="cell-output cell-output-display">
<div id="ed1dfdf6-79f6-4ea1-b820-793bbb265ab7">
  <div id="a6b0cae7-db72-44c4-a3c6-4fea163e670f" data-root-id="ed1dfdf6-79f6-4ea1-b820-793bbb265ab7" style="display: contents;"></div>
</div>
<script type="application/javascript">(function(root) {
  var docs_json = {"3404b15a-711f-4aed-a1ab-d48eda6a646b":{"version":"3.9.1","title":"Bokeh Application","config":{"type":"object","name":"DocumentConfig","id":"6c61714c-a00a-491c-a7c3-d2798ccda9d3","attributes":{"notifications":{"type":"object","name":"Notifications","id":"93cf46d2-7e63-4243-a27e-e1af5e872cfa"}}},"roots":[{"type":"object","name":"panel.models.browser.BrowserInfo","id":"ed1dfdf6-79f6-4ea1-b820-793bbb265ab7"},{"type":"object","name":"panel.models.comm_manager.CommManager","id":"aee03d21-76fe-4734-832a-bc56938caef7","attributes":{"plot_id":"ed1dfdf6-79f6-4ea1-b820-793bbb265ab7","comm_id":"f62663ee20cf4c3d9e2c890f115f0d5c","client_comm_id":"c478707d4ff249eda950f364ec1f1052"}}],"defs":[{"type":"model","name":"ReactiveHTML1"},{"type":"model","name":"FlexBox1","properties":[{"name":"align_content","kind":"Any","default":"flex-start"},{"name":"align_items","kind":"Any","default":"flex-start"},{"name":"flex_direction","kind":"Any","default":"row"},{"name":"flex_wrap","kind":"Any","default":"wrap"},{"name":"gap","kind":"Any","default":""},{"name":"justify_content","kind":"Any","default":"flex-start"}]},{"type":"model","name":"FloatPanel1","properties":[{"name":"config","kind":"Any","default":{"type":"map"}},{"name":"contained","kind":"Any","default":true},{"name":"position","kind":"Any","default":"right-top"},{"name":"offsetx","kind":"Any","default":null},{"name":"offsety","kind":"Any","default":null},{"name":"theme","kind":"Any","default":"primary"},{"name":"status","kind":"Any","default":"normalized"}]},{"type":"model","name":"GridStack1","properties":[{"name":"ncols","kind":"Any","default":null},{"name":"nrows","kind":"Any","default":null},{"name":"allow_resize","kind":"Any","default":true},{"name":"allow_drag","kind":"Any","default":true},{"name":"state","kind":"Any","default":[]}]},{"type":"model","name":"drag1","properties":[{"name":"slider_width","kind":"Any","default":5},{"name":"slider_color","kind":"Any","default":"black"},{"name":"start","kind":"Any","default":0},{"name":"end","kind":"Any","default":100},{"name":"value","kind":"Any","default":50}]},{"type":"model","name":"click1","properties":[{"name":"terminal_output","kind":"Any","default":""},{"name":"debug_name","kind":"Any","default":""},{"name":"clears","kind":"Any","default":0}]},{"type":"model","name":"ReactiveESM1","properties":[{"name":"esm_constants","kind":"Any","default":{"type":"map"}}]},{"type":"model","name":"JSComponent1","properties":[{"name":"esm_constants","kind":"Any","default":{"type":"map"}}]},{"type":"model","name":"ReactComponent1","properties":[{"name":"use_shadow_dom","kind":"Any","default":true},{"name":"esm_constants","kind":"Any","default":{"type":"map"}}]},{"type":"model","name":"AnyWidgetComponent1","properties":[{"name":"use_shadow_dom","kind":"Any","default":true},{"name":"esm_constants","kind":"Any","default":{"type":"map"}}]},{"type":"model","name":"FastWrapper1","properties":[{"name":"object","kind":"Any","default":null},{"name":"style","kind":"Any","default":null}]},{"type":"model","name":"NotificationArea1","properties":[{"name":"js_events","kind":"Any","default":{"type":"map"}},{"name":"max_notifications","kind":"Any","default":5},{"name":"notifications","kind":"Any","default":[]},{"name":"position","kind":"Any","default":"bottom-right"},{"name":"_clear","kind":"Any","default":0},{"name":"types","kind":"Any","default":[{"type":"map","entries":[["type","warning"],["background","#ffc107"],["icon",{"type":"map","entries":[["className","fas fa-exclamation-triangle"],["tagName","i"],["color","white"]]}]]},{"type":"map","entries":[["type","info"],["background","#007bff"],["icon",{"type":"map","entries":[["className","fas fa-info-circle"],["tagName","i"],["color","white"]]}]]}]}]},{"type":"model","name":"Notification","properties":[{"name":"background","kind":"Any","default":null},{"name":"duration","kind":"Any","default":3000},{"name":"icon","kind":"Any","default":null},{"name":"message","kind":"Any","default":""},{"name":"notification_type","kind":"Any","default":null},{"name":"_rendered","kind":"Any","default":false},{"name":"_destroyed","kind":"Any","default":false}]},{"type":"model","name":"TemplateActions1","properties":[{"name":"open_modal","kind":"Any","default":0},{"name":"close_modal","kind":"Any","default":0}]},{"type":"model","name":"BootstrapTemplateActions1","properties":[{"name":"open_modal","kind":"Any","default":0},{"name":"close_modal","kind":"Any","default":0}]},{"type":"model","name":"TemplateEditor1","properties":[{"name":"layout","kind":"Any","default":[]}]},{"type":"model","name":"MaterialTemplateActions1","properties":[{"name":"open_modal","kind":"Any","default":0},{"name":"close_modal","kind":"Any","default":0}]},{"type":"model","name":"request_value1","properties":[{"name":"fill","kind":"Any","default":"none"},{"name":"_synced","kind":"Any","default":null},{"name":"_request_sync","kind":"Any","default":0}]},{"type":"model","name":"holoviews.plotting.bokeh.raster.HoverModel","properties":[{"name":"xy","kind":"Any","default":null},{"name":"data","kind":"Any","default":null}]}]}};
  var render_items = [{"docid":"3404b15a-711f-4aed-a1ab-d48eda6a646b","roots":{"ed1dfdf6-79f6-4ea1-b820-793bbb265ab7":"a6b0cae7-db72-44c4-a3c6-4fea163e670f"},"root_ids":["ed1dfdf6-79f6-4ea1-b820-793bbb265ab7"]}];
  var docs = Object.values(docs_json)
  if (!docs) {
    return
  }
  const version = docs[0].version.replace('rc', '-rc.').replace('.dev', '-dev.')
  async function embed_document(root) {
    var Bokeh = get_bokeh(root)
    await Bokeh.embed.embed_items_notebook(docs_json, render_items);
    for (const render_item of render_items) {
      for (const root_id of render_item.root_ids) {
    const id_el = document.getElementById(root_id)
    if (id_el.children.length && id_el.children[0].hasAttribute('data-root-id')) {
      const root_el = id_el.children[0]
      root_el.id = root_el.id + '-rendered'
      for (const child of root_el.children) {
            // Ensure JupyterLab does not capture keyboard shortcuts
            // see: https://jupyterlab.readthedocs.io/en/4.1.x/extension/notebook.html#keyboard-interaction-model
        child.setAttribute('data-lm-suppress-shortcuts', 'true')
      }
    }
      }
    }
  }
  function get_bokeh(root) {
    if (root.Bokeh === undefined) {
      return null
    } else if (root.Bokeh.version !== version) {
      if (root.Bokeh.versions === undefined || !root.Bokeh.versions.has(version)) {
    return null
      }
      return root.Bokeh.versions.get(version);
    } else if (root.Bokeh.version === version) {
      return root.Bokeh
    }
    return null
  }
  function is_loaded(root) {
    var Bokeh = get_bokeh(root)
    return (Bokeh != null && Bokeh.Panel !== undefined)
  }
  if (is_loaded(root)) {
    embed_document(root);
  } else {
    var attempts = 0;
    var timer = setInterval(function(root) {
      if (is_loaded(root)) {
        clearInterval(timer);
        embed_document(root);
      } else if (document.readyState == "complete") {
        attempts++;
        if (attempts > 200) {
          clearInterval(timer);
      var Bokeh = get_bokeh(root)
      if (Bokeh == null || Bokeh.Panel == null) {
            console.warn("Panel: ERROR: Unable to run Panel code because Bokeh or Panel library is missing");
      } else {
        console.warn("Panel: WARNING: Attempting to render but not all required libraries could be resolved.")
        embed_document(root)
      }
        }
      }
    }, 25, root)
  }
})(window);</script>
</div>
<div class="cell-output cell-output-display">

  <div id="c7e759ed-a5f3-4224-b7a7-b1c4af3409cf" data-root-id="b5857cb1-f246-43bf-a5de-856cca4a96b5" style="display: contents;"></div>
</div>
<div class="cell-output cell-output-display">
<script type="application/javascript">
(function(root) {
  function embed_document(root) {
  const docs_json = {"6f1af56e-1fa6-4cc1-af9a-c17d38451624":{"version":"3.9.1","title":"Bokeh Application","config":{"type":"object","name":"DocumentConfig","id":"1cf190dd-43e4-491a-8493-67eb5ac4f6d1","attributes":{"notifications":{"type":"object","name":"Notifications","id":"6e83e3a8-1c5b-4ff0-ab8c-8cf9521e123f"}}},"roots":[{"type":"object","name":"Column","id":"b5857cb1-f246-43bf-a5de-856cca4a96b5","attributes":{"children":[{"type":"object","name":"GridPlot","id":"22ebe673-9ad8-41d7-ae92-83c50ad54ebe","attributes":{"rows":null,"cols":null,"toolbar":{"type":"object","name":"Toolbar","id":"92550dc0-f36d-4157-88c3-29c4d3bf1515","attributes":{"tools":[{"type":"object","name":"ToolProxy","id":"63dc37dd-34e9-4429-a802-9d891b901d6f","attributes":{"tools":[{"type":"object","name":"WheelZoomTool","id":"e5067b99-1957-4ced-8d78-1ee3e631a802","attributes":{"tags":["hv_created"],"renderers":"auto","zoom_together":"none"}},{"type":"object","name":"WheelZoomTool","id":"1ed9357e-7881-4eb7-809c-e72496fdaf52","attributes":{"tags":["hv_created"],"renderers":"auto","zoom_together":"none"}}]}},{"type":"object","name":"ToolProxy","id":"067d65f2-a1e8-442c-a633-a56b36831a65","attributes":{"tools":[{"type":"object","name":"HoverTool","id":"875e3e78-9d95-4cbe-acef-c47ce4bf7fec","attributes":{"tags":["hv_created"],"renderers":[{"type":"object","name":"GlyphRenderer","id":"989d12df-e4e9-4c95-ac0a-dfba248e7f7a","attributes":{"name":"52-week High","js_property_callbacks":{"type":"map","entries":[["change:muted",[{"type":"object","name":"CustomJS","id":"96bbad6b-bdf2-43df-b680-8aa8a266d87e","attributes":{"args":{"type":"map","entries":[["src",{"id":"989d12df-e4e9-4c95-ac0a-dfba248e7f7a"}],["dst",{"type":"object","name":"GlyphRenderer","id":"e91c3e3d-c418-4f44-9368-4faea8ff1048","attributes":{"name":"52-week High","js_property_callbacks":{"type":"map","entries":[["change:muted",[{"type":"object","name":"CustomJS","id":"2eb2361f-99e0-40ca-b580-4e7a8cea947e","attributes":{"args":{"type":"map","entries":[["src",{"id":"e91c3e3d-c418-4f44-9368-4faea8ff1048"}],["dst",{"id":"989d12df-e4e9-4c95-ac0a-dfba248e7f7a"}]]},"code":"dst.muted = src.muted"}}]]]},"data_source":{"type":"object","name":"ColumnDataSource","id":"00e47af0-f57c-4033-b15b-c2f3a65ac2f3","attributes":{"selected":{"type":"object","name":"Selection","id":"491dace5-6fc7-43bc-913e-537cd8e2d446","attributes":{"indices":[],"line_indices":[]}},"selection_policy":{"type":"object","name":"UnionRenderers","id":"f2aa44b6-ccc8-4d87-bdb1-419a1a008c51"},"data":{"type":"map","entries":[["Date",{"type":"ndarray","array":{"type":"bytes","data":"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"},"shape":[1113],"dtype":"float64","order":"little"}],["52-week High",{"type":"ndarray","array":{"type":"bytes","data":"H4sIAAEAAAAA/+3XfUzMcRwH8F8SxjJCl2N1aaKZU7v16KH3dtT0u9/v7ve7mz/IlOsB3aaOPG7kiBjtuDzMsOLceqArj6dbrgekoWbsstHYuHbENOIau+Efu600MZns+9fr//c+7/f28Q90lKhDkvC+6LBxZmUShMekjlM9v64yxBb1YCKNwRY1E0LHxtHo7VtG0jhlE43fVRhoPqg20+jProLJOWssNPqzJ8vkfn+Txr8qRWV4ie/T2Ht6rVjT7dE39nK1epIMrYrQ4jKBDPVfrkQlJMiQGxK2c0m2DLMeNsc4DsgwrEHz6mmTDO67hXerW2Tw3WiWJAQyfRRPTY3NWcOgMV6W31bnEZyJL2pjQCQ5kDsgPSA7QHaA7MDQ3YHotqm7R19lQCQ5kDsgPSA7QHaA7MDQ3YGW5DjtGwODn3nt0o5Qyx4GdcL2i5eMA9cgqTh18jKDiMBm+bI7DLx0c9dbXjCo11rtQcNZGKfMzhs16e9ZGtVYmS5mcTYR5s1xLCqGZenzlv95bcXzyphcFnuppavzN7Dwtgeb1FtZdIqkaC/0WL7KFrnrEIs/5dFM2z2rgYXOqTWHC+TYSnlp5El9DRIJl7EZcnw3JrM7+8Y9OS5cjx6x3+nxiDvSJBAp8F3dy2kdwREK5PRUGv30g+87w5kz488p0Fv1a+v56U8UoKiC1EVe3DfHNcr9ODRwEVrpLA549OGaHhw6O6pTV2o4xIx6vM29hUhyIHfwP/XgWdcMqy6fQ3/Sos7Wi6Uc/hUD0vRHN7o4DJb+rSPXRfnxIJIcyB2QHgz1HchM3G1fIeRB/HEOXT6LTzhDeFgf+HSHSXiEL68pqZLysIwpc+Ul8ngeX9qUks6jtsWbbT/G4+Q2+tOVOzwcziqbaIESt0YIr3akKeHa47IfKlKi5kTD0jnl/eu7cHttgEuJgbrv+GZm3AQVBOWxx7lpfb1t/rwwLFkF4tDMgaKovPnlqm//1183JeOjCl8BGoBF2cgiAAA="},"shape":[1113],"dtype":"float64","order":"little"}],["A_52_hyphen_minus_week_High",{"type":"ndarray","array":{"type":"bytes","data":"H4sIAAEAAAAA/+3XfUzMcRwH8F8SxjJCl2N1aaKZU7v16KH3dtT0u9/v7ve7mz/IlOsB3aaOPG7kiBjtuDzMsOLceqArj6dbrgekoWbsstHYuHbENOIau+Efu600MZns+9fr//c+7/f28Q90lKhDkvC+6LBxZmUShMekjlM9v64yxBb1YCKNwRY1E0LHxtHo7VtG0jhlE43fVRhoPqg20+jProLJOWssNPqzJ8vkfn+Txr8qRWV4ie/T2Ht6rVjT7dE39nK1epIMrYrQ4jKBDPVfrkQlJMiQGxK2c0m2DLMeNsc4DsgwrEHz6mmTDO67hXerW2Tw3WiWJAQyfRRPTY3NWcOgMV6W31bnEZyJL2pjQCQ5kDsgPSA7QHaA7MDQ3YHotqm7R19lQCQ5kDsgPSA7QHaA7MDQ3YGW5DjtGwODn3nt0o5Qyx4GdcL2i5eMA9cgqTh18jKDiMBm+bI7DLx0c9dbXjCo11rtQcNZGKfMzhs16e9ZGtVYmS5mcTYR5s1xLCqGZenzlv95bcXzyphcFnuppavzN7Dwtgeb1FtZdIqkaC/0WL7KFrnrEIs/5dFM2z2rgYXOqTWHC+TYSnlp5El9DRIJl7EZcnw3JrM7+8Y9OS5cjx6x3+nxiDvSJBAp8F3dy2kdwREK5PRUGv30g+87w5kz488p0Fv1a+v56U8UoKiC1EVe3DfHNcr9ODRwEVrpLA549OGaHhw6O6pTV2o4xIx6vM29hUhyIHfwP/XgWdcMqy6fQ3/Sos7Wi6Uc/hUD0vRHN7o4DJb+rSPXRfnxIJIcyB2QHgz1HchM3G1fIeRB/HEOXT6LTzhDeFgf+HSHSXiEL68pqZLysIwpc+Ul8ngeX9qUks6jtsWbbT/G4+Q2+tOVOzwcziqbaIESt0YIr3akKeHa47IfKlKi5kTD0jnl/eu7cHttgEuJgbrv+GZm3AQVBOWxx7lpfb1t/rwwLFkF4tDMgaKovPnlqm//1183JeOjCl8BGoBF2cgiAAA="},"shape":[1113],"dtype":"float64","order":"little"}],["Variable",["52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High"]]]}}},"view":{"type":"object","name":"CDSView","id":"644c14dd-8b11-4306-bf11-2a860aac1291","attributes":{"filter":{"type":"object","name":"AllIndices","id":"c2c1e9fa-5bab-4033-8149-5b2df4acf4ed"}}},"glyph":{"type":"object","name":"Line","id":"c1e25aa9-ed81-4959-9d2a-79e5b78c3166","attributes":{"tags":["apply_ranges"],"x":{"type":"field","field":"Date"},"y":{"type":"field","field":"52-week High"},"line_color":"#30a2da","line_width":2}},"selection_glyph":{"type":"object","name":"Line","id":"fe1dd027-5efd-4be8-92a0-5d9d509b5d1f","attributes":{"tags":["apply_ranges"],"x":{"type":"field","field":"Date"},"y":{"type":"field","field":"52-week High"},"line_color":"#30a2da","line_width":2}},"nonselection_glyph":{"type":"object","name":"Line","id":"f96d027c-2e2e-4b2d-bf49-958c279751b4","attributes":{"tags":["apply_ranges"],"x":{"type":"field","field":"Date"},"y":{"type":"field","field":"52-week High"},"line_color":"#30a2da","line_alpha":0.1,"line_width":2}},"muted_glyph":{"type":"object","name":"Line","id":"d917bb31-0007-42c0-b60a-b769aed90671","attributes":{"tags":["apply_ranges"],"x":{"type":"field","field":"Date"},"y":{"type":"field","field":"52-week High"},"line_color":"#30a2da","line_alpha":0.2,"line_width":2}}}}]]},"code":"dst.muted = src.muted"}}]]]},"data_source":{"type":"object","name":"ColumnDataSource","id":"15fb7052-e50a-4f42-a96a-6b3b3548dba7","attributes":{"selected":{"type":"object","name":"Selection","id":"62f8940e-95a9-4dd9-a428-1c261df11f51","attributes":{"indices":[],"line_indices":[]}},"selection_policy":{"type":"object","name":"UnionRenderers","id":"c98ed614-4e3d-4a9d-91ce-411e7727848c"},"data":{"type":"map","entries":[["Date",{"type":"ndarray","array":{"type":"bytes","data":"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"},"shape":[1113],"dtype":"float64","order":"little"}],["52-week High",{"type":"ndarray","array":{"type":"bytes","data":"H4sIAAEAAAAA/2NgYHiwhbXSgYGBYcEqrVF6NBxG08FoPhgtB0bLgdFyYIiXAw4XEitA9fqDxSyj9AgKhwSdg2WgeKc27WDcXwoyt8GPGUwnhF4tAdEMDC+KSaEdjDeD1S9YtWqUHg0HotPBgTNzwOllqNMPFl8pAvnjweIto/RoOIymg9F8MFoOjJYDNCsHHB72FYLqG4V1+aM0BeHg8FAOHH7oNAPDhwKQ+HClHyyWAPubVHpBgSS4XGNg2AOmFWK6wf2FBtsscP+EUvpB1QywOQ4P55FJl5WD9DNcDwf3jw+c8QGPeymsmw2mG0T6qiDiV6C0SzWI78D1uQZEM1y3rwPRDxZ3jNKj4TCaDkbzwWg5MFoOjJYDQ6wcYGDYAcm3VV+w0gvcdetB9fwoPRoOo+lgkOYDADhU1OLIIgAA"},"shape":[1113],"dtype":"float64","order":"little"}],["A_52_hyphen_minus_week_High",{"type":"ndarray","array":{"type":"bytes","data":"H4sIAAEAAAAA/2NgYHiwhbXSgYGBYcEqrVF6NBxG08FoPhgtB0bLgdFyYIiXAw4XEitA9fqDxSyj9AgKhwSdg2WgeKc27WDcXwoyt8GPGUwnhF4tAdEMDC+KSaEdjDeD1S9YtWqUHg0HotPBgTNzwOllqNMPFl8pAvnjweIto/RoOIymg9F8MFoOjJYDNCsHHB72FYLqG4V1+aM0BeHg8FAOHH7oNAPDhwKQ+HClHyyWAPubVHpBgSS4XGNg2AOmFWK6wf2FBtsscP+EUvpB1QywOQ4P55FJl5WD9DNcDwf3jw+c8QGPeymsmw2mG0T6qiDiV6C0SzWI78D1uQZEM1y3rwPRDxZ3jNKj4TCaDkbzwWg5MFoOjJYDQ6wcYGDYAcm3VV+w0gvcdetB9fwoPRoOo+lgkOYDADhU1OLIIgAA"},"shape":[1113],"dtype":"float64","order":"little"}],["Variable",["52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High"]]]}}},"view":{"type":"object","name":"CDSView","id":"d51cecdb-681a-4e0d-bdae-97446d741be2","attributes":{"filter":{"type":"object","name":"AllIndices","id":"032113b5-da1d-4e91-a048-c941cde9a38d"}}},"glyph":{"type":"object","name":"Line","id":"c453923c-ce0b-4a27-b448-4c516c4ab238","attributes":{"tags":["apply_ranges"],"x":{"type":"field","field":"Date"},"y":{"type":"field","field":"52-week High"},"line_color":"#30a2da","line_width":2}},"selection_glyph":{"type":"object","name":"Line","id":"93859e03-41d4-4719-ac0d-67f6c083c1f8","attributes":{"tags":["apply_ranges"],"x":{"type":"field","field":"Date"},"y":{"type":"field","field":"52-week High"},"line_color":"#30a2da","line_width":2}},"nonselection_glyph":{"type":"object","name":"Line","id":"970aadf7-d0b8-4e94-a9bd-965a71fea348","attributes":{"tags":["apply_ranges"],"x":{"type":"field","field":"Date"},"y":{"type":"field","field":"52-week High"},"line_color":"#30a2da","line_alpha":0.1,"line_width":2}},"muted_glyph":{"type":"object","name":"Line","id":"bd664388-64fd-4b2b-a997-9cb4520c63a7","attributes":{"tags":["apply_ranges"],"x":{"type":"field","field":"Date"},"y":{"type":"field","field":"52-week High"},"line_color":"#30a2da","line_alpha":0.2,"line_width":2}}}}],"tooltips":[["Variable","@{Variable}"],["Date","@{Date}{%F %T}"],["value","@{A_52_hyphen_minus_week_High}"]],"formatters":{"type":"map","entries":[["@{Date}","datetime"]]},"sort_by":null}},{"type":"object","name":"HoverTool","id":"6ce1c84e-ce0a-445b-9a53-5f37f0dfca03","attributes":{"tags":["hv_created"],"renderers":[{"type":"object","name":"GlyphRenderer","id":"f5c1c67a-0942-4470-9ca0-ea567125021c","attributes":{"name":"52-week Low","js_property_callbacks":{"type":"map","entries":[["change:muted",[{"type":"object","name":"CustomJS","id":"878f0c95-f623-43ed-8018-1d318f31a7d1","attributes":{"args":{"type":"map","entries":[["src",{"id":"f5c1c67a-0942-4470-9ca0-ea567125021c"}],["dst",{"type":"object","name":"GlyphRenderer","id":"28a449e7-4e49-4e74-96f9-f0b12d44c59f","attributes":{"name":"52-week Low","js_property_callbacks":{"type":"map","entries":[["change:muted",[{"type":"object","name":"CustomJS","id":"57bc351f-55ba-4a53-94e4-2ecdcb650a04","attributes":{"args":{"type":"map","entries":[["src",{"id":"28a449e7-4e49-4e74-96f9-f0b12d44c59f"}],["dst",{"id":"f5c1c67a-0942-4470-9ca0-ea567125021c"}]]},"code":"dst.muted = src.muted"}}]]]},"data_source":{"type":"object","name":"ColumnDataSource","id":"f8fb4298-a30d-4fc0-99d8-1bde1c42b48d","attributes":{"selected":{"type":"object","name":"Selection","id":"f657ffee-80f2-41ce-85b3-68ab5e09db5a","attributes":{"indices":[],"line_indices":[]}},"selection_policy":{"type":"object","name":"UnionRenderers","id":"0f4dd83e-a110-4313-ac81-56a23d5c838f"},"data":{"type":"map","entries":[["Date",{"type":"ndarray","array":{"type":"bytes","data":"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"},"shape":[1113],"dtype":"float64","order":"little"}],["52-week Low",{"type":"ndarray","array":{"type":"bytes","data":"H4sIAAEAAAAA/7ORCvEp3+XpYDNK0yUc5P4GcuiHezqM0qPhMJoORvMBtcqBqV8ivq4z8HQgRCss7bnazeTpYP3JO3PXDg+HMO/De80LPRzaKzRsN4SN0qPhMJoORvPBaDkwWg6MlgNDqRxwXpB4W8bJw2GbTFOk2Af3UXo0HEbTwWg+GC0HRsuB0XJgCJcDac1anSuMPBxKBBqfb4rApEMev3+6Eth/F30hmVDQCWy3B9fI5mz1cFieNiF/I7CfD6NzTzyf5C7p6QCjm7MW1EpO83TARftVee1T3uPpwJWhP8+Cw4tieuFLV4YsDy+H4zO+6fqG4KbZYgRWmxZ7OST9CFtpON/L4fe+tQtsng1+OqeWZ7ayhrfDsckCi9/pIOjyB+bRD0K8HUbp0XCgZjrov+F7NCPT22F/2tubvfO8Haz9Vp+Xuebt8ECr691Eax84/cVrToHiBR+HoUqba8v/URHwdZiz8/dpZmlfh+1tNznbbEfp0XAYTQej+WDolAMvPpVwLvbwdcBFe1r2Paid6OtwIY3J4ttkBF2W/nyZ0ixfB1x0qUnplOOLfB3+1P51buTyg9N66jt41YT9HAjRZ/btP3bCwM8h81PXYp8IP4ebvNUnDrT4OTDs6jJ/ucXP4dCZqRvsWAIc4lodpsvwjNKEwmF7ydrFd2UCHEZp+oYDABbVsAbIIgAA"},"shape":[1113],"dtype":"float64","order":"little"}],["A_52_hyphen_minus_week_Low",{"type":"ndarray","array":{"type":"bytes","data":"H4sIAAEAAAAA/7ORCvEp3+XpYDNK0yUc5P4GcuiHezqM0qPhMJoORvMBtcqBqV8ivq4z8HQgRCss7bnazeTpYP3JO3PXDg+HMO/De80LPRzaKzRsN4SN0qPhMJoORvPBaDkwWg6MlgNDqRxwXpB4W8bJw2GbTFOk2Af3UXo0HEbTwWg+GC0HRsuB0XJgCJcDac1anSuMPBxKBBqfb4rApEMev3+6Eth/F30hmVDQCWy3B9fI5mz1cFieNiF/I7CfD6NzTzyf5C7p6QCjm7MW1EpO83TARftVee1T3uPpwJWhP8+Cw4tieuFLV4YsDy+H4zO+6fqG4KbZYgRWmxZ7OST9CFtpON/L4fe+tQtsng1+OqeWZ7ayhrfDsckCi9/pIOjyB+bRD0K8HUbp0XCgZjrov+F7NCPT22F/2tubvfO8Haz9Vp+Xuebt8ECr691Eax84/cVrToHiBR+HoUqba8v/URHwdZiz8/dpZmlfh+1tNznbbEfp0XAYTQej+WDolAMvPpVwLvbwdcBFe1r2Paid6OtwIY3J4ttkBF2W/nyZ0ixfB1x0qUnplOOLfB3+1P51buTyg9N66jt41YT9HAjRZ/btP3bCwM8h81PXYp8IP4ebvNUnDrT4OTDs6jJ/ucXP4dCZqRvsWAIc4lodpsvwjNKEwmF7ydrFd2UCHEZp+oYDABbVsAbIIgAA"},"shape":[1113],"dtype":"float64","order":"little"}],["Variable",["52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low"]]]}}},"view":{"type":"object","name":"CDSView","id":"4adf33a0-0571-4e2c-b9d0-48a4a53c0a5f","attributes":{"filter":{"type":"object","name":"AllIndices","id":"18a3c255-f230-4368-8b63-7b8873e3c71b"}}},"glyph":{"type":"object","name":"Line","id":"c93eca76-45eb-49bd-b62e-2134e733619e","attributes":{"tags":["apply_ranges"],"x":{"type":"field","field":"Date"},"y":{"type":"field","field":"52-week Low"},"line_color":"#fc4f30","line_width":2}},"selection_glyph":{"type":"object","name":"Line","id":"c5786abf-611c-4be5-b580-e398a7e1c479","attributes":{"tags":["apply_ranges"],"x":{"type":"field","field":"Date"},"y":{"type":"field","field":"52-week Low"},"line_color":"#fc4f30","line_width":2}},"nonselection_glyph":{"type":"object","name":"Line","id":"76a08682-c3f9-4e61-971b-7570c93afc11","attributes":{"tags":["apply_ranges"],"x":{"type":"field","field":"Date"},"y":{"type":"field","field":"52-week Low"},"line_color":"#fc4f30","line_alpha":0.1,"line_width":2}},"muted_glyph":{"type":"object","name":"Line","id":"675dca7f-fb66-4ab3-a795-5d194fec37cf","attributes":{"tags":["apply_ranges"],"x":{"type":"field","field":"Date"},"y":{"type":"field","field":"52-week Low"},"line_color":"#fc4f30","line_alpha":0.2,"line_width":2}}}}]]},"code":"dst.muted = src.muted"}}]]]},"data_source":{"type":"object","name":"ColumnDataSource","id":"c5df2416-ae32-47fc-8400-124e56550fa9","attributes":{"selected":{"type":"object","name":"Selection","id":"519a2b12-3e40-44d3-ab3c-d5ae6c056a85","attributes":{"indices":[],"line_indices":[]}},"selection_policy":{"type":"object","name":"UnionRenderers","id":"b206604a-0079-4238-bb2c-76b30d765c01"},"data":{"type":"map","entries":[["Date",{"type":"ndarray","array":{"type":"bytes","data":"H4sIAAEAAAAA/yXLd1zIXx+G8UOUPbK3rJCdzHAkO2RFREJIRmYKOZLMIpE9s2UlMlLHiJC9kpXZQCQyIs/zu75/vV/X+dxHCBl//5W3nRDCqt7r/9Sr56DKuY7SpdobOqjsWzp7HArnM6hji77jXmek4bl979lZ/EaxxCGV3cdtKKqHpdGL0lClt0tn3y8IxcmXRr9/lEE7NPjA/vhcVBVuoZxf8yN9pMInuuxEFL4xqF+WyOTe1Q317KGf6WcHUdr9RbG/3xfuxXcZ7v6Qxa5Ix6/svFajePTaaLPkbHpyo2/8u+eHqs1dlNtqf6dvV86hbSaj2ByHWpj/4D5uLOr1w3/Sfw+jHCN+sb82AHWTPUaP2vKbjs9EZdU5l31IKIof74yu//wPHdz0L/vshaicH6CMq5dHf6n2j3byQhFzEbVFOTHnv/uS8ahPj8xHVz+OMsAk/3+KjMGGC7ebsHufhcrBvgC7yDAUFdON7plSkD7awpR92cWofB+jTGlgRpe2KER7z0DxPB61XcXC3PdPRP3ErQjdKQrlHtOi7Is6o/Y6ZPSuXcVos++oJncvzv7+RhRtPxo98U0J+o5NSfY2S1FtTkaZr3Ep3DC7NLu8BNRjqpizuzYZ9e+xZehR0SivFC7LvpEL6pAjRl/aU46u/xNVcK/y7L9tQTHss2FWm4rsnFaginmOslazSvRAy8r0GR8UNRJRB1Svwj3Dy3Dh2arsUotVY9fHFXXkcaPf7q9O98xFdbRPDfbldqCY+9XoiPSatLmtBXvvYFTPU1B2sa5Fz2xYm06eh0LeRr3Hog73ojNR23rWpXedR1moVD32U0ajvh9ldMEIS3piHqo7jvXZtwpHseW70Tc/NqCtOzVkvyEEVd4blGNbWdHrGjeicxegcLuH+kqdxtwbeaMeMaUJfUmjbFCmKftV7qi/RRuuyNecXdZAlEP2ojj/0+jMzy3oQXbW/DuzFlWNVJSL27akTzWzoasuQuH/EHWqZSvufXxR+01rTb+9hLJX+Tbsj01AXe6c0d0j29IRBdqxNx+Ccs4BFC9yjS6Z3Z6e1dWWffJ6VDID5V7bDvRj6450h0AU4UmoC1l14j5lPurtMyVd8CpKz0qd2d/1RN0q1ugJJ+3om2Zd2FsPQ7kxAsW/PKOb5djTYT26ss/dhMrtE8qrnbrRP1t1p0cuQ3H5KeoGTXpwX6VQa++edL3rKFdW7cX7kAsolp3uTWcWcWA3aATKs0dR1Mzfh+7/C0V0777sq25D5f8FZZpdP7pSO0d6wUoU716g7tW8P/dji1C/8h1Ad7+J8nCNgezLTEc957JhyRKD2c0ahfJpJIrOBZ0wqe8Q9h12ogrPRlm421C6XQdnescqFKavUXu2HMb9bqDhhDvD2d2q5cKu5SzUG68afSN2BN2s9Ej+hY1B+eckitGFXOnQfyh+9R/FfuRuVJdzUDbs6UYPl6PpC2tQWL5DvbL1GO5fl6GuvXAsvew+ys913dkPnoP67HXD/mXHs4seh7LaGRSLik6go/J70JUHo16wD9W7Xyh7O0yk53XxpF+vQ9EjDfXhdpO4lwlCbR8wmT74CGWpBlPYz56L+ulNo4vHT6WnV/Bin+SBsmMMit0lptEPC06n2w9FveMgKtO/KCf1m0Fv7TaTNtmIwuMD6lsdZqH7ktnsbjxB2byRN7v1fqj/3DG6ScIcOrSyD/tfk1C6xqGIL+1L5xSaS7sMR33hMCpLMY970ABUsT3n03W2oFieifqz9OM+OBR14PIF9MdnKAc0VexPL0Rd7YHR/W4spKOq+bOv7IVSXUTxvuwiukKxAHr+SNSvj6HqYbKY+5HBhl23B7I7lIW6lP0SdrPDUO8LWkoXT0E5o8Uy9k8CUHd8bLTXreX0w5or2LefgXJnPAqziitxm1sQO5MoVB6mwexuD0UlHFfR43ahSPyGunn31dzXb0SdsDqE3VqbNex+L0Htmmx0yN1QOqf2Wv65zEZ5MQFF/SrraGfzMDpuLOo60aiWF17P/ctwVBYDN9BL9qD49AP1gF4buZ/egjo9dBPd7z3Kk202s6+yArV6bnTkgy10Bcut7Of7oHxzA0XP6tto33Lb6ZTxqLueRXWo2A7upV1R2TntpPfvR1EiF/WMPru4P9mOusj6cNorHeWj9rvZ2waj3pli2KbhXnbb5qEscBvFRIt99OaK++l8nqjHnUeVWPIA9xajUY1xPkhfO4SiaR7qtY6HuP/ehdpqUwQd8hHlj46H2Y8IQX3xjdHfko/Qzo2Pso9bgLLuPRQr6hyjY6ocp2tNQb1Eo/pkHsl9oDuqAJcTdMYRFI75otifHIiqyl6jHbaepCM/o6xod4q931rUb94bXe5FNO3b7DT7FH+U3R6iiLA8Qz+vfpbuMg31/kuoSpQ/x33mBFR7XGPoopEophU4z/6REyrbA0ZP3hFL3/+Ksm3XOHYFMlC0eqXpzdYX2OULRDk+CcXNhhfpPItL9NiZqK9dQdW00mXu6zxRXRkdTzc6iWKN2RX2P5xRjYgwOjj8Kv3tO8phPRLY602o634yjGl1nV2tZSiXPkWR2fgGLvZOZJ9xDZVj1ZvsTk1Blep+i+5zGsWJIrfZVxyByu+oYblfd9jN7X2X3autqLt9MXpO6j36edv7/OuyEuWBFyhKNn9Ay/oP6b2+qIveRDWtxiPuj6ehKuTxmJ5yDsWD4kns245CtT3S6DsHntCt/qDc0jeZff6dqMdnG+bZPmM3dhXK669QNGv5nHazekFfnY+60R1Ua2q95P5zJqoGk1LoVbEovpd6xX7YGFT6pNFZEa/pIf9Qnu//hn3t3aiX5hh99tNbuoZ8x37xGpQf3qLo3/o97d8klU5TqPvcR3Wibhr2mprO7tgFFOXLZrCbOw7Vq9NGmx/7QM/J/5H9i0Eo7PehPvDL6KdfPtGySyb7vetQFktDMb3dZzq8+Re6cADqKY9QPaifxb3dXFSe07/Sdy+jaF0hm/0WD1T5Y4y2PvGN3ljwO/t/Q1C4H0R9/Y/Rf7JzaLduP9hf3YCy8QcUoR1+0pdb/qIbLkG96gmq71a/uQ/3M/x6NZfd0Mp/2J2fhKp2nNGDTv2lzxbK41/N4SgCD6P+8M/oaj/+0f49hc9/+7TNKPtmooiS+eh3rfPTvZejKt/UhPd5C1EdnlOALnMDhU+1gv+pX0xFZX/R6FlnTOmnRc3Ydx6JuphJIf51/I063KEwu8LbUU7NQvGwSxHatH1RelIQ6rsvUbVuUYz71gBUt+YWp1veQrGpZgn2/6ajco83OiymJP2nRCn2o91QJJxA3di0NO36F/XlfubsG+5CufobipxuZWjLjmXpoNWov75GNdSmHPfYJag++5WnB99Fca52BfY1Z6MKTDA6Oq4iXc28EvtFY1Gkn0Ldt3BlfDegCrvee1Ae/4GiQq+qdI/O1egjoajLvEfl06Y695fLUZXyr0HPfoDiWb2a7Dv7oNp3w+ikixZ0x3K12O8ej6LIWdRTi9Wmd5rUoU2dUE3aj/LebxRt+tSlPezr0bfDULdMR7WpvSV3EYyq+eL69PrHKP42aMB+9DxUCbeM/hXfkHataMU+fiIKq/OoV5dsRF80bUxbOqMKOoQy+y8KZ8cm9PLuTekvG1EP/ojqXMdm3C1CUA1Y2pw+nYyieuMW7BctQJV+1+jK16xpVaUl+/eTUTho1MfNbeg3hVvRPVxQHTmCwndga/4d6tWGLr0V9ezPqJ51bsvdbi2qGSva0U+eo+jUrD373f6oijw0un2iLb2zegf2ZtNQTL6E+l65jnSB4p1oD1eUNgUk75udUCb26Uy32IHqr70d72PWo1ob3IX+nYJilLU971ZJqF1ud6UvWnRjV38miuArqLMrdsflo3uw+xKF0smsJ7sYZ5SfHHvRA8NRn/6OqnqP3twDNqE6GeJAV3mLYmGrPuzfL0Xl8NTo+ff60m/q9GPf0xvF0Wuoy1Z1xEPu/dmVPo3Su8gAds9dUJYYNJCeuRf1k5+oOvUexH3PVlSP1g6mbVNR7GrrxN5sJarJL4ze9nAIXaD+UPYTfVHcSURtU8OZHl9+GJ04AVWLcyg3FB/OPc8VZdMhLvS6A6h/56Ia1XcE9ys7UP1YP5IekYHikq0r+/qrUAW/MjouaRRd18qN/Yr5KLJuo3aqNZpeWmkM/ckT1cBYlGdKjUXHYe7sTkWgrvIP1cL+47inhqOquHk87fcJxdtOE9j3XIPq6FujU5560N2aTGQfoVCY30ftXdeTPlB1El1iKqqZF1Aml5nMXY5DOW3EFPrxUdS2+aey3zUIZaF9htu/eLEr2GUau4nrUN1JNTrfy+n0+OYz+HdzEQrrR6g31J9JX68xi246HdW6yyhzy8/m7uaBcs0ob/pnJOoRBefw3uAgqmE7fWidjaJeN192KzagysowutbrufTSlvPYZwaiGPTE8EMtP/45zkJ16irKqpUXsPOfhPLEGEVXOoXar9BC9m+Hoex12Oi5u/3pVzkouvdcxD5iMyrzTKO7vAugD7RezL7kchSznqFObhJIF6u3hJ42B9Xj6yg7VFvKPXwqygfjltHtzqDeXnQ5+4IjUXoeM3rLvhV0/t8oJjisZH9zGyrrLKPHpgXR19sFs28WhCLsJerc5qtwzdzV7H7eRDmyZgi7y9NRfvdYQw+PQa1LhLKv54Zy5Qmjzx9cS9f+i2JZv3XsM3eiGvTN6MUfwugPHdaz778aRfRr1FVtNtB9G22kT/ihqnQX5YLam7i/m4Wy/OTN9Lw41K9Kb2HffSzKw6eMfnF4K20vtrE/OAB1yT2oZv0wem/mdrpY5x3sp4eiSHqHukObnfTUprvoBwtRtXuAcke9cO6mPihbe+2mt15Enb/cHvYTxqO8dcbof8f20u4m+9jfGIy62X5UYb+Nvpq1n25sf4B9aBiKX2moR7Y/SK9ucYj+HoBq+GMUlvMi+Dd0xmE6Nh517YpH2C2biPJzjNE1o47SgabH2H8cirr/IVTRf41O+3ac7ts9kn3URhSVP6Je0PEEfdwmii6/FNW8ZBQ9Fpzkn8/sU/TLBNT2VaJ5L6VRdY4+Te8rfIZdcRfU04+gShJn6cI/UU3tdY79wy0o2n9GvaNzDLZecZ7d1ucoTZrFsvPwR7nJJ44Wiajdq2v2N7xQNr9k9OizF+iEYhfZN3FFHXoc1S+TS3TDXFSr+1xmn7MdhctX1Bfs43Fo8BV2sSko61hfZbd8Mcpz8xJoi9uoAy2usf84A+WAK0YvOn+dTi95g32/0aijolBVNkuke+ehOu54k32FcBTzv6N+3f0WXbbTbdonBNXLNyi7trrD/dBSlM8W3KXt7qHeV+ce++LeKGdcM3q3vk8XKfOAvZc76ofRhpPyPeLfvYEo2+xFse0napPej2kbuyR601pUIhXluLZPuCeuQPnXP5ke8xB1guVT9k18Ua5NNDr+0jPaqvxz9iETUOecReVS/AUdVOAlne2E0vkAirhc1HX6ptBOXV/R59ajsshAucT2NfdPwSirB76hA5JQpzd8y77ffJQnbxs6VHrPLtITdYVYVPNLpdJHzNLossNQ+kagSMlD3bV/Ou3dI4N+tgmV3af/+z/5L8DhyCIAAA=="},"shape":[1113],"dtype":"float64","order":"little"}],["52-week Low",{"type":"ndarray","array":{"type":"bytes","data":"H4sIAAEAAAAA/+3aT0gVQRwH8F/XZxGh15aFICQ8CNpBQViF2GtPeJD2sFVz62nWK1PhnRZkj4KXxD0IE3vz5NkQ1w4leOvgK7rMu3QxUQ/ePLTznV1IWSrkIb7e7/RhZv+xM7+dHX4zRGTV1uYtIhLBBKRxfw7ltYFZbS5x8q0uX0yilRl1vdOx+TrTwgPUixte+Soow/VX+n3vTbMqHhqjHZxC4QXi6x+Nz5xU56fK0veSKrPcDhwH8f8h9xnfQ2T4fzQ+E8dTrdqX56pcLyPjHe5H9OgZrN5xL6IIbuE6YR8/VXptny7VyFgdx3P3SzA6aYfC3h5DfV8vjIz7o0pZOXVguDSiFHY/lGHnY6VZvJlpfN9hdfy8VJ0ZUvUstwPHAX8HPA7wOMDjQOOOA1Zto6j6L9Vxf6B8Xqq2PtH9fFbH3UO9DHcwz/D6BjDvSKVqC+Yn7P/VDo67PKb61crZUARD6HeW24HjgL8DHgd4HOBxoPHGAdMPdd4ov455m+nvJvO3XeS5IuOgKRVBzwTiuXxb5/8S4xZCOTJmM42P6Dxjk2gWD5FfTRX2NeRdRblwRm//fZKP/ZrkeQeR/7VqdTK3pfPNJ1Kvx1S6sU4j8w8zNf0F1De7RDvJehar4oHbg+PgMuMg/s9MqecJ+1tdtLo+YD3b+7j4Uum4d7EvwWvrxT4JWfmZKdER6v+mWWzFvourqghW9b6QRJm//gbv/bu/ANQWlofIIgAA"},"shape":[1113],"dtype":"float64","order":"little"}],["A_52_hyphen_minus_week_Low",{"type":"ndarray","array":{"type":"bytes","data":"H4sIAAEAAAAA/+3aT0gVQRwH8F/XZxGh15aFICQ8CNpBQViF2GtPeJD2sFVz62nWK1PhnRZkj4KXxD0IE3vz5NkQ1w4leOvgK7rMu3QxUQ/ePLTznV1IWSrkIb7e7/RhZv+xM7+dHX4zRGTV1uYtIhLBBKRxfw7ltYFZbS5x8q0uX0yilRl1vdOx+TrTwgPUixte+Soow/VX+n3vTbMqHhqjHZxC4QXi6x+Nz5xU56fK0veSKrPcDhwH8f8h9xnfQ2T4fzQ+E8dTrdqX56pcLyPjHe5H9OgZrN5xL6IIbuE6YR8/VXptny7VyFgdx3P3SzA6aYfC3h5DfV8vjIz7o0pZOXVguDSiFHY/lGHnY6VZvJlpfN9hdfy8VJ0ZUvUstwPHAX8HPA7wOMDjQOOOA1Zto6j6L9Vxf6B8Xqq2PtH9fFbH3UO9DHcwz/D6BjDvSKVqC+Yn7P/VDo67PKb61crZUARD6HeW24HjgL8DHgd4HOBxoPHGAdMPdd4ov455m+nvJvO3XeS5IuOgKRVBzwTiuXxb5/8S4xZCOTJmM42P6Dxjk2gWD5FfTRX2NeRdRblwRm//fZKP/ZrkeQeR/7VqdTK3pfPNJ1Kvx1S6sU4j8w8zNf0F1De7RDvJehar4oHbg+PgMuMg/s9MqecJ+1tdtLo+YD3b+7j4Uum4d7EvwWvrxT4JWfmZKdER6v+mWWzFvourqghW9b6QRJm//gbv/bu/ANQWlofIIgAA"},"shape":[1113],"dtype":"float64","order":"little"}],["Variable",["52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low"]]]}}},"view":{"type":"object","name":"CDSView","id":"e0afb363-1dbc-4aab-aef8-6e4e017be58b","attributes":{"filter":{"type":"object","name":"AllIndices","id":"79dcd8bd-4253-4759-8bfe-5e86d9a5e6b7"}}},"glyph":{"type":"object","name":"Line","id":"49a8c171-862d-414e-b0fe-f3f5af0b656b","attributes":{"tags":["apply_ranges"],"x":{"type":"field","field":"Date"},"y":{"type":"field","field":"52-week Low"},"line_color":"#fc4f30","line_width":2}},"selection_glyph":{"type":"object","name":"Line","id":"6ff86f6c-92da-47f5-b30e-85bb2e0484e4","attributes":{"tags":["apply_ranges"],"x":{"type":"field","field":"Date"},"y":{"type":"field","field":"52-week Low"},"line_color":"#fc4f30","line_width":2}},"nonselection_glyph":{"type":"object","name":"Line","id":"71ebbf23-d8f6-4892-87fa-f6d6a3069e66","attributes":{"tags":["apply_ranges"],"x":{"type":"field","field":"Date"},"y":{"type":"field","field":"52-week Low"},"line_color":"#fc4f30","line_alpha":0.1,"line_width":2}},"muted_glyph":{"type":"object","name":"Line","id":"6a4a3d66-94e7-4392-b1a6-9eb01bce9251","attributes":{"tags":["apply_ranges"],"x":{"type":"field","field":"Date"},"y":{"type":"field","field":"52-week Low"},"line_color":"#fc4f30","line_alpha":0.2,"line_width":2}}}}],"tooltips":[["Variable","@{Variable}"],["Date","@{Date}{%F %T}"],["value","@{A_52_hyphen_minus_week_Low}"]],"formatters":{"type":"map","entries":[["@{Date}","datetime"]]},"sort_by":null}},{"type":"object","name":"HoverTool","id":"7b9f18fc-defe-4689-8e38-fc4044af92f9","attributes":{"tags":["hv_created"],"renderers":[{"id":"e91c3e3d-c418-4f44-9368-4faea8ff1048"}],"tooltips":[["Variable","@{Variable}"],["Date","@{Date}{%F %T}"],["value","@{A_52_hyphen_minus_week_High}"]],"formatters":{"type":"map","entries":[["@{Date}","datetime"]]},"sort_by":null}},{"type":"object","name":"HoverTool","id":"b453c13b-49d7-4be0-ad5d-7a367a0e84dd","attributes":{"tags":["hv_created"],"renderers":[{"id":"28a449e7-4e49-4e74-96f9-f0b12d44c59f"}],"tooltips":[["Variable","@{Variable}"],["Date","@{Date}{%F %T}"],["value","@{A_52_hyphen_minus_week_Low}"]],"formatters":{"type":"map","entries":[["@{Date}","datetime"]]},"sort_by":null}}]}},{"type":"object","name":"SaveTool","id":"80f5f0b9-2d58-485b-8e2d-e8b0d681ffa5"},{"type":"object","name":"ToolProxy","id":"b27cd392-abb5-4ec8-b2ff-2c53bde59454","attributes":{"tools":[{"type":"object","name":"PanTool","id":"c8f7264d-ba1b-4bc6-b621-c1d8d291bbc5"},{"type":"object","name":"PanTool","id":"2ab4e0b4-62d1-45c8-897a-264c7a1af5e6"}]}},{"type":"object","name":"ToolProxy","id":"5a5a80bb-ec32-4695-ad0a-90f8da2e03e6","attributes":{"tools":[{"type":"object","name":"BoxZoomTool","id":"83c65fba-c95a-438e-a1bf-596894d65243","attributes":{"overlay":{"type":"object","name":"BoxAnnotation","id":"c4dc77e3-b58c-4c32-9244-d28c9bf7ac3e","attributes":{"syncable":false,"line_color":"black","line_alpha":1.0,"line_width":2,"line_dash":[4,4],"fill_color":"lightgrey","fill_alpha":0.5,"level":"overlay","visible":false,"left":{"type":"number","value":"nan"},"right":{"type":"number","value":"nan"},"top":{"type":"number","value":"nan"},"bottom":{"type":"number","value":"nan"},"left_units":"canvas","right_units":"canvas","top_units":"canvas","bottom_units":"canvas","handles":{"type":"object","name":"BoxInteractionHandles","id":"2e4ad166-e93f-4cde-aaae-82fe9a26a9e7","attributes":{"all":{"type":"object","name":"AreaVisuals","id":"8eec1539-a1c2-4e49-85ac-ad4e5f93608a","attributes":{"fill_color":"white","hover_fill_color":"lightgray"}}}}}}}},{"type":"object","name":"BoxZoomTool","id":"75cd2065-8b55-461e-86fc-5e63117441fa","attributes":{"overlay":{"type":"object","name":"BoxAnnotation","id":"51d4f17c-0223-45b3-a7b7-6c83e0411a34","attributes":{"syncable":false,"line_color":"black","line_alpha":1.0,"line_width":2,"line_dash":[4,4],"fill_color":"lightgrey","fill_alpha":0.5,"level":"overlay","visible":false,"left":{"type":"number","value":"nan"},"right":{"type":"number","value":"nan"},"top":{"type":"number","value":"nan"},"bottom":{"type":"number","value":"nan"},"left_units":"canvas","right_units":"canvas","top_units":"canvas","bottom_units":"canvas","handles":{"type":"object","name":"BoxInteractionHandles","id":"11abfa8a-9b30-43d3-87d1-4e1b5672430f","attributes":{"all":{"type":"object","name":"AreaVisuals","id":"d108999a-6429-4751-ab76-17e3d03f807e","attributes":{"fill_color":"white","hover_fill_color":"lightgray"}}}}}}}}]}},{"type":"object","name":"ToolProxy","id":"2218d1ec-5efd-4a79-841e-0db8b6738f9c","attributes":{"tools":[{"type":"object","name":"ResetTool","id":"d1476545-0989-458c-b6dd-dd3dc765060d"},{"type":"object","name":"ResetTool","id":"be3e11c6-2ebd-4e1f-a4fc-47e01c7f1198"}]}}]}},"children":[[{"type":"object","name":"Figure","id":"ae82c9b3-c8b8-4644-8b6a-f2fd5e1df489","attributes":{"width":500,"height":300,"sizing_mode":"fixed","align":"start","x_range":{"type":"object","name":"Range1d","id":"00148b02-e894-40ac-93e6-f96e01d9e6b5","attributes":{"name":"Date","tags":[[["Date",null]],[]],"start":1641168000000.0,"end":1781049600000.0,"reset_start":1641168000000.0,"reset_end":1781049600000.0}},"y_range":{"type":"object","name":"Range1d","id":"55b71796-a2ae-425f-bdfd-c3ebeca71e7f","attributes":{"name":"52-week High","tags":[[["value",null]],{"type":"map","entries":[["invert_yaxis",false],["autorange",false]]}],"start":2.7802516054005224,"end":543.9254170237988,"reset_start":2.7802516054005224,"reset_end":543.9254170237988}},"x_scale":{"type":"object","name":"LinearScale","id":"21960702-ba8e-484c-a38d-48959b231e92"},"y_scale":{"type":"object","name":"LinearScale","id":"e8daa405-be99-410a-85fd-285915d72041"},"title":{"type":"object","name":"Title","id":"55a3cf6e-05d6-4dad-a86a-b814379e117f","attributes":{"text":"Tesla stock 52-week high/low","text_font":"Harmonia Sans Pro Cyr","text_font_size":"18pt"}},"outline_line_color":"#F0FFF0","renderers":[{"id":"989d12df-e4e9-4c95-ac0a-dfba248e7f7a"},{"id":"f5c1c67a-0942-4470-9ca0-ea567125021c"}],"toolbar":{"type":"object","name":"Toolbar","id":"d80c688f-a1ea-4db4-a636-5abca6b0980d","attributes":{"tools":[{"id":"e5067b99-1957-4ced-8d78-1ee3e631a802"},{"id":"875e3e78-9d95-4cbe-acef-c47ce4bf7fec"},{"id":"6ce1c84e-ce0a-445b-9a53-5f37f0dfca03"},{"type":"object","name":"SaveTool","id":"24b384a1-a535-4e49-bf19-4e16aa546eeb"},{"id":"c8f7264d-ba1b-4bc6-b621-c1d8d291bbc5"},{"id":"83c65fba-c95a-438e-a1bf-596894d65243"},{"id":"d1476545-0989-458c-b6dd-dd3dc765060d"}],"active_drag":{"id":"c8f7264d-ba1b-4bc6-b621-c1d8d291bbc5"},"active_scroll":{"id":"e5067b99-1957-4ced-8d78-1ee3e631a802"}}},"toolbar_location":null,"left":[{"type":"object","name":"LinearAxis","id":"4eac3d67-9dc8-4370-b6fc-abb6feef212e","attributes":{"ticker":{"type":"object","name":"BasicTicker","id":"04b10873-2e39-4c65-b5d0-6ba43aef41c3","attributes":{"mantissas":[1,2,5]}},"formatter":{"type":"object","name":"CustomJSTickFormatter","id":"adaa884f-197f-4c58-8458-0a181a00fd27","attributes":{"args":{"type":"map","entries":[["top_tick",543.9254170237988]]},"code":"\n            if (Math.abs(tick - top_tick) < (top_tick * 0.05)) {\n                return '$' + tick.toFixed(0);\n            }\n            return tick.toFixed(0);\n        "}},"axis_label":" ","axis_label_text_font":"Harmonia Sans Pro Cyr","major_label_policy":{"type":"object","name":"AllLabels","id":"010cbfb5-6393-48fa-9cd6-c6d0bbe8d925"},"major_label_text_font":"Harmonia Sans Pro Cyr","major_label_text_font_size":"15pt"}}],"below":[{"type":"object","name":"DatetimeAxis","id":"b8febe6d-fd6d-450e-9acb-61a0fa992dc5","attributes":{"ticker":{"type":"object","name":"DatetimeTicker","id":"e3a19097-2192-4677-af80-9f444904c711","attributes":{"num_minor_ticks":5,"tickers":[{"type":"object","name":"AdaptiveTicker","id":"e2398bb2-ac70-4bec-b693-b307e4c6005a","attributes":{"num_minor_ticks":0,"mantissas":[1,2,5],"max_interval":500.0}},{"type":"object","name":"AdaptiveTicker","id":"702d52f6-810f-4c5d-aba2-0d48cfaa2822","attributes":{"num_minor_ticks":0,"base":60,"mantissas":[1,2,5,10,15,20,30],"min_interval":1000.0,"max_interval":1800000.0}},{"type":"object","name":"AdaptiveTicker","id":"a4728165-0e10-4866-8280-1c167086ef1b","attributes":{"num_minor_ticks":0,"base":24,"mantissas":[1,2,4,6,8,12],"min_interval":3600000.0,"max_interval":43200000.0}},{"type":"object","name":"DaysTicker","id":"2a86cb6a-ca02-4612-806d-2d109babdf3d","attributes":{"days":[1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31]}},{"type":"object","name":"DaysTicker","id":"af4650d3-34d5-42ef-b016-d2dc86b604b3","attributes":{"days":[1,4,7,10,13,16,19,22,25,28]}},{"type":"object","name":"DaysTicker","id":"be1ec58f-e577-4d7a-863d-44fefd4339a5","attributes":{"days":[1,8,15,22]}},{"type":"object","name":"DaysTicker","id":"d7fc8d97-883f-41e5-b1a8-b95c5937cffe","attributes":{"days":[1,15]}},{"type":"object","name":"MonthsTicker","id":"5dd280f8-9f9a-43ff-a5c4-bde110c27549","attributes":{"months":[0,1,2,3,4,5,6,7,8,9,10,11]}},{"type":"object","name":"MonthsTicker","id":"99350574-56e3-4ef6-b5db-0aef7ba57d1e","attributes":{"months":[0,2,4,6,8,10]}},{"type":"object","name":"MonthsTicker","id":"a626949a-0aef-4e28-9268-c6e21f7fbbac","attributes":{"months":[0,4,8]}},{"type":"object","name":"MonthsTicker","id":"6d597c2f-c361-4697-8750-008bdf26049d","attributes":{"months":[0,6]}},{"type":"object","name":"YearsTicker","id":"f00a9c1d-fa2a-4fdd-99f5-e7fa8d68f1fb"}]}},"formatter":{"type":"object","name":"DatetimeTickFormatter","id":"02b707d1-0a6f-4a86-8be0-70fc091c4509","attributes":{"seconds":"%T","minsec":"%T","minutes":"%H:%M","hours":"%H:%M","days":"%b %d","months":"%b %Y","strip_leading_zeros":["microseconds","milliseconds","seconds"],"boundary_scaling":false,"context":{"type":"object","name":"DatetimeTickFormatter","id":"a8150f5e-96e1-4696-9d88-8436353cb4e3","attributes":{"microseconds":"%T","milliseconds":"%T","seconds":"%b %d, %Y","minsec":"%b %d, %Y","minutes":"%b %d, %Y","hourmin":"%b %d, %Y","hours":"%b %d, %Y","days":"%Y","months":"","years":"","boundary_scaling":false,"hide_repeats":true,"context":{"type":"object","name":"DatetimeTickFormatter","id":"71fa8827-7e06-4e54-96cd-94b31360ea18","attributes":{"microseconds":"%b %d, %Y","milliseconds":"%b %d, %Y","seconds":"","minsec":"","minutes":"","hourmin":"","hours":"","days":"","months":"","years":"","boundary_scaling":false,"hide_repeats":true}},"context_which":"all"}},"context_which":"all"}},"axis_label":" ","axis_label_text_font":"Harmonia Sans Pro Cyr","major_label_policy":{"type":"object","name":"AllLabels","id":"619a550e-9440-47b8-96d8-562a6a38991c"},"major_label_text_font":"Harmonia Sans Pro Cyr","major_label_text_font_size":"15pt"}}],"center":[{"type":"object","name":"Grid","id":"f271b176-32ca-45ce-9ff1-2776fb9165e2","attributes":{"axis":{"id":"b8febe6d-fd6d-450e-9acb-61a0fa992dc5"},"grid_line_color":null}},{"type":"object","name":"Grid","id":"6857ca3b-c870-4f00-9573-a42aad2f8826","attributes":{"dimension":1,"axis":{"id":"4eac3d67-9dc8-4370-b6fc-abb6feef212e"},"grid_line_color":null}},{"type":"object","name":"Legend","id":"93bf3414-fb88-48d7-b416-80589f4bc7dc","attributes":{"location":"top_left","ncols":1,"title":"","border_line_color":"#F0FFF0","background_fill_color":"#F0FFF0","click_policy":"mute","label_text_font_size":"13pt","items":[{"type":"object","name":"LegendItem","id":"337bb37e-c39f-4d3a-b146-9338cf8f33d3","attributes":{"label":{"type":"value","value":"52-week High"},"renderers":[{"id":"989d12df-e4e9-4c95-ac0a-dfba248e7f7a"}]}},{"type":"object","name":"LegendItem","id":"0a49fea9-4b68-4e25-89a5-cfc289d71bb7","attributes":{"label":{"type":"value","value":"52-week Low"},"renderers":[{"id":"f5c1c67a-0942-4470-9ca0-ea567125021c"}]}}]}}],"background_fill_color":"#F0FFF0","border_fill_color":"#F0FFF0","min_border_top":60,"min_border_bottom":80,"min_border_left":10,"min_border_right":10,"output_backend":"webgl"}},0,0],[{"type":"object","name":"Figure","id":"3deafcb3-e97e-4f57-b10f-1761cc0a2173","attributes":{"width":500,"height":300,"sizing_mode":"fixed","align":"start","x_range":{"id":"00148b02-e894-40ac-93e6-f96e01d9e6b5"},"y_range":{"id":"55b71796-a2ae-425f-bdfd-c3ebeca71e7f"},"x_scale":{"type":"object","name":"LinearScale","id":"c95b7de3-3d1b-4f62-a3fa-77eccbbaf706"},"y_scale":{"type":"object","name":"LinearScale","id":"2338beb5-5390-4b62-9376-2d0fadcd7e04"},"title":{"type":"object","name":"Title","id":"a58ff9ec-1254-4e97-bb83-f99e747e5758","attributes":{"text":"Coca Cola stock 52-week high/low","text_font":"Harmonia Sans Pro Cyr","text_font_size":"18pt"}},"outline_line_color":"#F0FFF0","renderers":[{"id":"e91c3e3d-c418-4f44-9368-4faea8ff1048"},{"id":"28a449e7-4e49-4e74-96f9-f0b12d44c59f"}],"toolbar":{"type":"object","name":"Toolbar","id":"b33e356a-10ee-4eb2-bac9-47213d1650d1","attributes":{"tools":[{"id":"1ed9357e-7881-4eb7-809c-e72496fdaf52"},{"id":"7b9f18fc-defe-4689-8e38-fc4044af92f9"},{"id":"b453c13b-49d7-4be0-ad5d-7a367a0e84dd"},{"type":"object","name":"SaveTool","id":"cefbd50a-2e10-4ebb-9ab0-f424713ebd59"},{"id":"2ab4e0b4-62d1-45c8-897a-264c7a1af5e6"},{"id":"75cd2065-8b55-461e-86fc-5e63117441fa"},{"id":"be3e11c6-2ebd-4e1f-a4fc-47e01c7f1198"}],"active_drag":{"id":"2ab4e0b4-62d1-45c8-897a-264c7a1af5e6"},"active_scroll":{"id":"1ed9357e-7881-4eb7-809c-e72496fdaf52"}}},"toolbar_location":null,"left":[{"type":"object","name":"LinearAxis","id":"93b8db89-f931-431d-87b2-a3273fcc087b","attributes":{"ticker":{"type":"object","name":"BasicTicker","id":"7e341990-e65c-4f75-8c68-2202e33eab06","attributes":{"mantissas":[1,2,5]}},"formatter":{"type":"object","name":"CustomJSTickFormatter","id":"17c9ec86-4e6a-4a57-8898-8f4065803b24","attributes":{"args":{"type":"map","entries":[["top_tick",543.9254170237988]]},"code":"\n            if (Math.abs(tick - top_tick) < (top_tick * 0.05)) {\n                return '$' + tick.toFixed(0);\n            }\n            return tick.toFixed(0);\n        "}},"axis_label":" ","axis_label_text_font":"Harmonia Sans Pro Cyr","major_label_policy":{"type":"object","name":"AllLabels","id":"9c8c3a3e-b224-4b1c-9eed-f6299390f46f"},"major_label_text_font":"Harmonia Sans Pro Cyr","major_label_text_font_size":"15pt"}}],"below":[{"type":"object","name":"DatetimeAxis","id":"231912d6-9fb3-4ac9-b2eb-128bdc37539b","attributes":{"ticker":{"type":"object","name":"DatetimeTicker","id":"876a24cc-1c9c-489a-bc25-713dcc64fee3","attributes":{"num_minor_ticks":5,"tickers":[{"type":"object","name":"AdaptiveTicker","id":"e37a4476-cf30-41c4-8a87-6197834573d9","attributes":{"num_minor_ticks":0,"mantissas":[1,2,5],"max_interval":500.0}},{"type":"object","name":"AdaptiveTicker","id":"d3d9fe89-be77-4684-91dc-16c7e306c9d6","attributes":{"num_minor_ticks":0,"base":60,"mantissas":[1,2,5,10,15,20,30],"min_interval":1000.0,"max_interval":1800000.0}},{"type":"object","name":"AdaptiveTicker","id":"09f9452b-c10c-449c-8a28-689c7393b467","attributes":{"num_minor_ticks":0,"base":24,"mantissas":[1,2,4,6,8,12],"min_interval":3600000.0,"max_interval":43200000.0}},{"type":"object","name":"DaysTicker","id":"7f4d4763-b57f-4796-b29a-2ac354051e5d","attributes":{"days":[1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31]}},{"type":"object","name":"DaysTicker","id":"474cad58-f560-4011-9c7a-ddb1dec02110","attributes":{"days":[1,4,7,10,13,16,19,22,25,28]}},{"type":"object","name":"DaysTicker","id":"b7137d9f-a5e2-44d8-83fd-632c9f3115f2","attributes":{"days":[1,8,15,22]}},{"type":"object","name":"DaysTicker","id":"3370030d-3b7a-4b4d-baba-7201397ee5b1","attributes":{"days":[1,15]}},{"type":"object","name":"MonthsTicker","id":"6c571025-071c-4040-8c33-cbd01f1b5465","attributes":{"months":[0,1,2,3,4,5,6,7,8,9,10,11]}},{"type":"object","name":"MonthsTicker","id":"93645353-12f4-460a-a9c7-698343ff94ba","attributes":{"months":[0,2,4,6,8,10]}},{"type":"object","name":"MonthsTicker","id":"4b5db075-f4d4-4431-be6c-6422b0b14b74","attributes":{"months":[0,4,8]}},{"type":"object","name":"MonthsTicker","id":"73709545-b045-44f3-9dc8-658d45d01baa","attributes":{"months":[0,6]}},{"type":"object","name":"YearsTicker","id":"1cdc100b-8e9b-488f-b9f7-3596b069ea05"}]}},"formatter":{"type":"object","name":"DatetimeTickFormatter","id":"e7c081ee-eed6-44e5-870e-4feaf0588ee2","attributes":{"seconds":"%T","minsec":"%T","minutes":"%H:%M","hours":"%H:%M","days":"%b %d","months":"%b %Y","strip_leading_zeros":["microseconds","milliseconds","seconds"],"boundary_scaling":false,"context":{"type":"object","name":"DatetimeTickFormatter","id":"86eb8512-22de-4468-94fa-19dd9ddc3ea1","attributes":{"microseconds":"%T","milliseconds":"%T","seconds":"%b %d, %Y","minsec":"%b %d, %Y","minutes":"%b %d, %Y","hourmin":"%b %d, %Y","hours":"%b %d, %Y","days":"%Y","months":"","years":"","boundary_scaling":false,"hide_repeats":true,"context":{"type":"object","name":"DatetimeTickFormatter","id":"58a881a4-1dcd-48b1-9d0f-98285b75eaf9","attributes":{"microseconds":"%b %d, %Y","milliseconds":"%b %d, %Y","seconds":"","minsec":"","minutes":"","hourmin":"","hours":"","days":"","months":"","years":"","boundary_scaling":false,"hide_repeats":true}},"context_which":"all"}},"context_which":"all"}},"axis_label":" ","axis_label_text_font":"Harmonia Sans Pro Cyr","major_label_policy":{"type":"object","name":"AllLabels","id":"abc19ff1-cf77-4b5d-91b8-443779304c52"},"major_label_text_font":"Harmonia Sans Pro Cyr","major_label_text_font_size":"15pt"}}],"center":[{"type":"object","name":"Grid","id":"71403564-a354-4a97-8e63-67a9ba53590f","attributes":{"axis":{"id":"231912d6-9fb3-4ac9-b2eb-128bdc37539b"},"grid_line_color":null}},{"type":"object","name":"Grid","id":"0a1c158c-17df-4afc-9838-85a58a848f1f","attributes":{"dimension":1,"axis":{"id":"93b8db89-f931-431d-87b2-a3273fcc087b"},"grid_line_color":null}},{"type":"object","name":"Legend","id":"14d1af34-6e2d-4fe1-b911-6202a1b85360","attributes":{"location":"top_left","ncols":1,"title":"","border_line_color":"#F0FFF0","background_fill_color":"#F0FFF0","click_policy":"mute","label_text_font_size":"13pt","items":[{"type":"object","name":"LegendItem","id":"1d5e4873-defb-4207-b047-b57b191acaef","attributes":{"label":{"type":"value","value":"52-week High"},"renderers":[{"id":"e91c3e3d-c418-4f44-9368-4faea8ff1048"}]}},{"type":"object","name":"LegendItem","id":"a3573f8f-286d-4b67-8467-232c6945af65","attributes":{"label":{"type":"value","value":"52-week Low"},"renderers":[{"id":"28a449e7-4e49-4e74-96f9-f0b12d44c59f"}]}}]}}],"background_fill_color":"#F0FFF0","border_fill_color":"#F0FFF0","min_border_top":60,"min_border_bottom":80,"min_border_left":10,"min_border_right":10,"output_backend":"webgl"}},0,1]]}},{"type":"object","name":"Div","id":"fcfe9c48-c0ff-4bc8-819f-306ecea1df46","attributes":{"text":"\n        <div style=\"\n            width: 1000px;\n            height: 70px;\n            position: relative;\n            top: -70px;\n            display: flex;\n            align-items: center;\n            justify-content: flex-end;\n            padding-right: 40px;\n            background-color: transparent;\n            pointer-events: none;\n        \">\n            <img src=\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAA6oAAAF3CAYAAACsQ7bGAAAACXBIWXMAAC4jAAAuIwF4pT92AAAAGXRFWHRTb2Z0d2FyZQB3d3cuaW5rc2NhcGUub3Jnm+48GgAAIABJREFUeJzs3Xl8XGW9P/DP98wkabqDtFDazEy6sAYqzUySzqQtAUWpKy4VV0QRFeWqF3+iIi644q6IXkFAxQUriKCgcMFAm0zTZFoshEVL20zSQtks3Ztk5nx/fyT1YqHtJDnnec7MfN6vl3/c180830/JmZzzPec5zyOqCiIiIiIiIqKgcGwHICIiIiIiInohNqpEREREREQUKGxUiYiIiIiIKFDYqBIREREREVGgsFElIiIiIiKiQGGjSkRERERERIHCRpWIiIiIiIgChY0qERERERERBQobVSIiIiIiIgoUNqpEREREREQUKGxUiYiIiIiIKFDYqBIREREREVGgsFElIiIiIiKiQGGjSkRERERERIHCRpWIiIiIiIgChY0qERERERERBQobVSIiIiIiIgoUNqpEREREREQUKGxUiYiIiIiIKFDYqBIREREREVGgsFElIiIiIiKiQGGjSkRERERERIHCRpWIiIiIiIgChY0qERERERERBQobVSIiIiIiIgoUNqpEREREREQUKGxUiYiIiIiIKFDYqBIREREREVGgsFElIiIiIiKiQGGjSkRERERERIHCRpWIiIiIiIgChY0qERERERERBQobVSIiIiIiIgoUNqpEREREREQUKGxUiYiIiIiIKFDYqBIREREREVGgsFElIiIiIiKiQGGjSkRERERERIHCRpWIiIiIiIgChY0qERERERERBQobVSIiIiIiIgoUNqpEREREREQUKGxUiYiIiIiIKFDYqBIREREREVGgsFElIiIiIiKiQGGjSkRERERERIHCRpWIiIiIiIgChY0qERERERERBQobVSIiIiIiIgqUsO0ARERERERENCSaSjwBYIbPZR7Ltned6HONMeETVSIiIiIiIgoUNqpEREREREQUKGxUiYiIiIiIKFDYqBIREREREVGgsFElIiIiIiKiQGGjSkRERERERIHCRpWIiIiIiIgChY0qERERERERBQobVSIiIiIiIgoUNqpEREREREQUKGxUiYiIiIiIKFDYqBIREREREVGgsFElIiIiIiKiQGGjSkRERERERIHCRpWIiIiIiIgChY0qERERERERBQobVSIiIiIiIgoUNqpEREREREQUKGxUiYiIiIiIKFDYqBIREREREVGgsFElIiIiIiKiQGGjSkRERERERIHCRpWIiIiIiIgChY0qERERERERBQobVSIiIiIiIgoUNqpEREREREQUKGxUiYiIiIiIKFDYqBIREREREVGgsFElIiIiIiKiQGGjSkRERERERIHCRpWIiIiIiIgChY0qERERERERBQobVSIiIiIiIgoUNqpEREREREQUKGxUiYiIiIiIKFDYqBIREREREVGgsFElIiIiIiKiQGGjSkRERERERIHCRpWIiIiIiIgChY0qERERERERBQobVSIiIiIiIgoUNqpEREREREQUKGxUiYiIiIiIKFDYqBIREREREVGgsFElIiIiIiKiQGGjSkRERERERIHCRpWIiIiIiIgChY0qERERERERBQobVSIiIiIiIgoUNqpEREREREQUKGxUiYiIiIiIKFDYqBIREREREVGgsFElIiIiIiKiQGGjSkRERERERIHCRpWIiIiIiIgChY0qERERERERBUrYdgDyj4jIzOaGeY7qaY7rHqcisyByxP/9hO4VRR9Ee1T0gUnb+h/q7u4esJeYiIiovJzQ3Dxpjw6c5qie4joaE8UMiFMJAHBdhchTIuhTkcdUc2t629Y+YTkyEZERoqq2MxS9urq6yj1TKmfkpGKa5HUqQipwdSoAqMiAuLJbHQw4rrvLDblb+46d+5QuX573I4uISDS5oMWF804RLIXimII/rNgNwT0AbnG14ua+dHqvHxmJiIjK2YzFC6ZVuKF3ieKNAJIY2YODf6jon9TFL/vSmYd8ikhEFkVTiScAzPC5zGPZ9q4Tfa4xJmxUR0CWLQtF+zbOV8eph+oCFXm5QKMAjgEgIxgqD+ApAJsBfUSAbhV5sEIH1j3evu7pUWUTcSLJ+DsBvRyQeaMZ4wDPA/h+ZT70vfUdHTs8GI+IiKiszVkUjwzm5fMieDeAyrGPKCtdxeV96c77xz4WEQUFG9UhbFQPY2hKTv9rBPpaQF4N4GU+l3wcKu3iuG15t/LXhTzVrE3GT8iLc4NAm3zI8yTUvTCbXvNnH8YmIiIqeSLi1CTrPy6QrwCo9np8FfmNuuGL+9Lpf3k9NhGZx0Z1CBvVg4gtrD9RndB5AC4E9IjDfsAPjszJruzceKgf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\" height=\"30px\"/>\n        </div>\n    "}}]}}],"defs":[{"type":"model","name":"ReactiveHTML1"},{"type":"model","name":"FlexBox1","properties":[{"name":"align_content","kind":"Any","default":"flex-start"},{"name":"align_items","kind":"Any","default":"flex-start"},{"name":"flex_direction","kind":"Any","default":"row"},{"name":"flex_wrap","kind":"Any","default":"wrap"},{"name":"gap","kind":"Any","default":""},{"name":"justify_content","kind":"Any","default":"flex-start"}]},{"type":"model","name":"FloatPanel1","properties":[{"name":"config","kind":"Any","default":{"type":"map"}},{"name":"contained","kind":"Any","default":true},{"name":"position","kind":"Any","default":"right-top"},{"name":"offsetx","kind":"Any","default":null},{"name":"offsety","kind":"Any","default":null},{"name":"theme","kind":"Any","default":"primary"},{"name":"status","kind":"Any","default":"normalized"}]},{"type":"model","name":"GridStack1","properties":[{"name":"ncols","kind":"Any","default":null},{"name":"nrows","kind":"Any","default":null},{"name":"allow_resize","kind":"Any","default":true},{"name":"allow_drag","kind":"Any","default":true},{"name":"state","kind":"Any","default":[]}]},{"type":"model","name":"drag1","properties":[{"name":"slider_width","kind":"Any","default":5},{"name":"slider_color","kind":"Any","default":"black"},{"name":"start","kind":"Any","default":0},{"name":"end","kind":"Any","default":100},{"name":"value","kind":"Any","default":50}]},{"type":"model","name":"click1","properties":[{"name":"terminal_output","kind":"Any","default":""},{"name":"debug_name","kind":"Any","default":""},{"name":"clears","kind":"Any","default":0}]},{"type":"model","name":"ReactiveESM1","properties":[{"name":"esm_constants","kind":"Any","default":{"type":"map"}}]},{"type":"model","name":"JSComponent1","properties":[{"name":"esm_constants","kind":"Any","default":{"type":"map"}}]},{"type":"model","name":"ReactComponent1","properties":[{"name":"use_shadow_dom","kind":"Any","default":true},{"name":"esm_constants","kind":"Any","default":{"type":"map"}}]},{"type":"model","name":"AnyWidgetComponent1","properties":[{"name":"use_shadow_dom","kind":"Any","default":true},{"name":"esm_constants","kind":"Any","default":{"type":"map"}}]},{"type":"model","name":"FastWrapper1","properties":[{"name":"object","kind":"Any","default":null},{"name":"style","kind":"Any","default":null}]},{"type":"model","name":"NotificationArea1","properties":[{"name":"js_events","kind":"Any","default":{"type":"map"}},{"name":"max_notifications","kind":"Any","default":5},{"name":"notifications","kind":"Any","default":[]},{"name":"position","kind":"Any","default":"bottom-right"},{"name":"_clear","kind":"Any","default":0},{"name":"types","kind":"Any","default":[{"type":"map","entries":[["type","warning"],["background","#ffc107"],["icon",{"type":"map","entries":[["className","fas fa-exclamation-triangle"],["tagName","i"],["color","white"]]}]]},{"type":"map","entries":[["type","info"],["background","#007bff"],["icon",{"type":"map","entries":[["className","fas fa-info-circle"],["tagName","i"],["color","white"]]}]]}]}]},{"type":"model","name":"Notification","properties":[{"name":"background","kind":"Any","default":null},{"name":"duration","kind":"Any","default":3000},{"name":"icon","kind":"Any","default":null},{"name":"message","kind":"Any","default":""},{"name":"notification_type","kind":"Any","default":null},{"name":"_rendered","kind":"Any","default":false},{"name":"_destroyed","kind":"Any","default":false}]},{"type":"model","name":"TemplateActions1","properties":[{"name":"open_modal","kind":"Any","default":0},{"name":"close_modal","kind":"Any","default":0}]},{"type":"model","name":"BootstrapTemplateActions1","properties":[{"name":"open_modal","kind":"Any","default":0},{"name":"close_modal","kind":"Any","default":0}]},{"type":"model","name":"TemplateEditor1","properties":[{"name":"layout","kind":"Any","default":[]}]},{"type":"model","name":"MaterialTemplateActions1","properties":[{"name":"open_modal","kind":"Any","default":0},{"name":"close_modal","kind":"Any","default":0}]},{"type":"model","name":"request_value1","properties":[{"name":"fill","kind":"Any","default":"none"},{"name":"_synced","kind":"Any","default":null},{"name":"_request_sync","kind":"Any","default":0}]},{"type":"model","name":"holoviews.plotting.bokeh.raster.HoverModel","properties":[{"name":"xy","kind":"Any","default":null},{"name":"data","kind":"Any","default":null}]}]}};
  const render_items = [{"docid":"6f1af56e-1fa6-4cc1-af9a-c17d38451624","roots":{"b5857cb1-f246-43bf-a5de-856cca4a96b5":"c7e759ed-a5f3-4224-b7a7-b1c4af3409cf"},"root_ids":["b5857cb1-f246-43bf-a5de-856cca4a96b5"]}];
  void root.Bokeh.embed.embed_items_notebook(docs_json, render_items);
  }
  if (root.Bokeh !== undefined) {
    embed_document(root);
  } else {
    let attempts = 0;
    const timer = setInterval(function(root) {
      if (root.Bokeh !== undefined) {
        clearInterval(timer);
        embed_document(root);
      } else {
        attempts++;
        if (attempts > 100) {
          clearInterval(timer);
          console.log("Bokeh: ERROR: Unable to run BokehJS code because BokehJS library is missing");
        }
      }
    }, 10, root)
  }
})(window);
</script>
</div>
</div>
<ol start="2" type="1">
<li><strong>They indicate investor sentiment</strong> – A stock price near its 52-week high usually indicates strong bullish sentiment. A stock trading near its 52-week low often signals bearish sentiment. Investors can use this information to understand what the market thinks about a company. To an investor, the message coming from the market is often more reliable than the message coming from some stock-picking guru on television, as investor and entrepreneur Naval Ravikant advises:</li>
</ol>
<blockquote class="blockquote">
<p>Take feedback from nature and markets, not from people.</p>
</blockquote>
<ol start="3" type="1">
<li><p><strong>They act as psychological support and resistance levels</strong> – Investors often use these two values as important thresholds. The 52-week high can act as a resistance level, where investors may be inclined to sell because they expect a pullback. The 52-week low can act as a support level, where investors may buy because they expect a rebound. For example, if Apple (AAPL) approaches its 52-week high, traders might expect short-term resistance. However, if it approaches its 52-week low, value buyers may step in and see it as an opportunity.</p></li>
<li><p><strong>They help identify potential buying or selling opportunities</strong> – Value investors often look for stocks near their 52-week low and consider buying them. As someone new to investing, this initially did not make sense to me. Why would someone want to buy a stock whose price is falling? However, this strategy makes sense to value investors because they believe the stock may be undervalued. Rather than being alarmed by the falling price, they see an opportunity to buy the stock at a bargain. A good example is Meta (META) in 2022. As shown in the shaded gray area on the chart, the stock traded near its 52-week low because of concerns about the company’s future growth. However, long-term investors who bought the stock during that period were later rewarded with significant gains when the company recovered.</p></li>
</ol>
<div id="de40a74f" class="cell" data-execution_count="2">
<details class="code-fold">
<summary>Show the code</summary>
<div class="code-copy-outer-scaffold"><div class="sourceCode cell-code" id="cb2" style="background: #f1f3f5;"><pre class="sourceCode python code-with-copy"><code class="sourceCode python"><span id="cb2-1">chart <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span> (df</span>
<span id="cb2-2"> .pipe(select_ticker, <span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">'META'</span>)</span>
<span id="cb2-3"> .hvplot.line(x<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span><span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">'Date'</span>, y<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span>[<span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">'52-week High'</span>, <span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">'Close'</span>, <span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">'52-week Low'</span>],</span>
<span id="cb2-4">                 title<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span><span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"Meta's stock struggled in 2022"</span>,</span>
<span id="cb2-5">                 xlabel<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span><span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">' '</span>, ylabel<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span><span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">' '</span>, height<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span><span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">400</span>,</span>
<span id="cb2-6">                 color<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span>[<span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">'#ff7f0e'</span>, <span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">'#1f77b4'</span>, <span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">'#d62728'</span>],</span>
<span id="cb2-7">                 legend_cols<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span><span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">1</span>, legend<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span><span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">'top_left'</span>, legend_opts<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span>{<span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">'title'</span>:<span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">''</span>})</span>
<span id="cb2-8">).opts(hooks<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span>[format_y_axis])</span>
<span id="cb2-9"></span>
<span id="cb2-10">highlight <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span> hv.Rectangles([(datetime.date(<span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">2022</span>, <span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">1</span>, <span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">20</span>), <span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">100</span>, datetime.date(<span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">2022</span>, <span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">11</span>, <span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">5</span>), <span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">400</span>)]).opts(</span>
<span id="cb2-11">    color<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span><span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">'#1a1a1a'</span>, alpha<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span><span class="fl" style="color: #AD0000;
background-color: null;
font-style: inherit;">0.5</span>, line_width<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span><span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">0</span></span>
<span id="cb2-12">)</span>
<span id="cb2-13"></span>
<span id="cb2-14">annotation <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span> hv.Text(datetime.date(<span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">2023</span>, <span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">1</span>, <span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">15</span>), <span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">350</span>, <span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">'2023 Start'</span>).opts(</span>
<span id="cb2-15">    text_align<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span><span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">'left'</span>, text_color<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span><span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">'gray'</span>, text_font_size<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span><span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">'10pt'</span></span>
<span id="cb2-16">)</span>
<span id="cb2-17"></span>
<span id="cb2-18">combined <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span> chart <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">*</span> highlight <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">*</span> annotation</span>
<span id="cb2-19"></span>
<span id="cb2-20">bokeh_plot <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span> hv.render(combined, backend<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span><span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">'bokeh'</span>)</span>
<span id="cb2-21">bokeh_plot.title.text_font <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span> font</span>
<span id="cb2-22">bokeh_plot.title.text_font_size <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span> <span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">'18pt'</span></span>
<span id="cb2-23">bokeh_plot.title.align <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span> <span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">'left'</span></span>
<span id="cb2-24">bokeh_plot.background_fill_color <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span> color_honeydew</span>
<span id="cb2-25">bokeh_plot.border_fill_color <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span> color_honeydew</span>
<span id="cb2-26">bokeh_plot.outline_line_color <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span> color_honeydew</span>
<span id="cb2-27">bokeh_plot.legend.background_fill_color <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span> color_honeydew</span>
<span id="cb2-28">bokeh_plot.legend.border_line_color <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span> color_honeydew</span>
<span id="cb2-29"></span>
<span id="cb2-30">logo_div <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span> Div(</span>
<span id="cb2-31">    text<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span><span class="ss" style="color: #20794D;
background-color: null;
font-style: inherit;">f'''</span></span>
<span id="cb2-32"><span class="ss" style="color: #20794D;
background-color: null;
font-style: inherit;">        &lt;div style="</span></span>
<span id="cb2-33"><span class="ss" style="color: #20794D;
background-color: null;
font-style: inherit;">            width: </span><span class="sc" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">{</span>bokeh_plot<span class="sc" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">.</span>width <span class="kw" style="color: #003B4F;
background-color: null;
font-weight: bold;
font-style: inherit;">or</span> <span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">700</span><span class="sc" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">}</span><span class="ss" style="color: #20794D;
background-color: null;
font-style: inherit;">px;</span></span>
<span id="cb2-34"><span class="ss" style="color: #20794D;
background-color: null;
font-style: inherit;">            height: </span><span class="sc" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">{</span>LOGO_H <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">+</span> <span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">40</span><span class="sc" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">}</span><span class="ss" style="color: #20794D;
background-color: null;
font-style: inherit;">px;</span></span>
<span id="cb2-35"><span class="ss" style="color: #20794D;
background-color: null;
font-style: inherit;">            position: relative;</span></span>
<span id="cb2-36"><span class="ss" style="color: #20794D;
background-color: null;
font-style: inherit;">            top: -</span><span class="sc" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">{</span>LOGO_H <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">+</span> <span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">40</span><span class="sc" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">}</span><span class="ss" style="color: #20794D;
background-color: null;
font-style: inherit;">px;</span></span>
<span id="cb2-37"><span class="ss" style="color: #20794D;
background-color: null;
font-style: inherit;">            display: flex;</span></span>
<span id="cb2-38"><span class="ss" style="color: #20794D;
background-color: null;
font-style: inherit;">            align-items: center;</span></span>
<span id="cb2-39"><span class="ss" style="color: #20794D;
background-color: null;
font-style: inherit;">            justify-content: flex-end;</span></span>
<span id="cb2-40"><span class="ss" style="color: #20794D;
background-color: null;
font-style: inherit;">            padding-right: 40px;</span></span>
<span id="cb2-41"><span class="ss" style="color: #20794D;
background-color: null;
font-style: inherit;">            background-color: transparent;</span></span>
<span id="cb2-42"><span class="ss" style="color: #20794D;
background-color: null;
font-style: inherit;">            pointer-events: none;</span></span>
<span id="cb2-43"><span class="ss" style="color: #20794D;
background-color: null;
font-style: inherit;">        "&gt;</span></span>
<span id="cb2-44"><span class="ss" style="color: #20794D;
background-color: null;
font-style: inherit;">            &lt;img src="</span><span class="sc" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">{</span>logo_data_uri<span class="sc" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">}</span><span class="ss" style="color: #20794D;
background-color: null;
font-style: inherit;">" height="</span><span class="sc" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">{</span>LOGO_H<span class="sc" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">}</span><span class="ss" style="color: #20794D;
background-color: null;
font-style: inherit;">px"/&gt;</span></span>
<span id="cb2-45"><span class="ss" style="color: #20794D;
background-color: null;
font-style: inherit;">        &lt;/div&gt;</span></span>
<span id="cb2-46"><span class="ss" style="color: #20794D;
background-color: null;
font-style: inherit;">    '''</span></span>
<span id="cb2-47">)</span>
<span id="cb2-48"></span>
<span id="cb2-49">final <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span> column(bokeh_plot, logo_div, spacing<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span><span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">0</span>)</span>
<span id="cb2-50">show(final)</span></code></pre></div></div>
</details>
<div class="cell-output cell-output-display">

  <div id="a0a51ef5-0434-4bc3-9252-8e431584d241" data-root-id="d24b945a-e234-4c5b-8045-ec79d3bc41ab" style="display: contents;"></div>
</div>
<div class="cell-output cell-output-display">
<script type="application/javascript">
(function(root) {
  function embed_document(root) {
  const docs_json = {"bb9d700d-1655-44d2-b3f8-d91673903591":{"version":"3.9.1","title":"Bokeh Application","config":{"type":"object","name":"DocumentConfig","id":"368c8018-3fef-4783-b5b9-ec23cde84722","attributes":{"notifications":{"type":"object","name":"Notifications","id":"35b04eca-bbef-42c0-90e5-77253b6b0c42"}}},"roots":[{"type":"object","name":"Column","id":"d24b945a-e234-4c5b-8045-ec79d3bc41ab","attributes":{"children":[{"type":"object","name":"Figure","id":"181f610c-4650-41ae-8f9d-15520491f3c4","attributes":{"width":700,"height":400,"sizing_mode":"fixed","align":"start","x_range":{"type":"object","name":"Range1d","id":"848c1b2e-9b21-43cd-bde0-bc45c51143cb","attributes":{"name":"Date","tags":[[["Date",null]],[]],"start":1641168000000.0,"end":1781049600000.0,"reset_start":1641168000000.0,"reset_end":1781049600000.0}},"y_range":{"type":"object","name":"Range1d","id":"940891ed-7a64-4d90-be8e-8ec0495bfe2a","attributes":{"name":"52-week High","tags":[[["value",null]],{"type":"map","entries":[["invert_yaxis",false],["autorange",false]]}],"start":16.706064890601922,"end":865.082427776039,"reset_start":16.706064890601922,"reset_end":865.082427776039}},"x_scale":{"type":"object","name":"LinearScale","id":"5243c71d-3c62-46ae-bb8e-ec9b405f6985"},"y_scale":{"type":"object","name":"LinearScale","id":"7dea9aee-7432-4515-8665-e8bff4def3d0"},"title":{"type":"object","name":"Title","id":"488c2803-8fff-4afe-9b09-bf89dc77be4f","attributes":{"text":"Meta's stock struggled in 2022","text_font":"Harmonia Sans Pro Cyr","text_font_size":"18pt"}},"outline_line_color":"#F0FFF0","renderers":[{"type":"object","name":"GlyphRenderer","id":"dfd02c45-148f-4045-85ba-dca9abc43f2b","attributes":{"name":"52-week High","data_source":{"type":"object","name":"ColumnDataSource","id":"caff1275-441a-400d-926d-96e344cf2969","attributes":{"selected":{"type":"object","name":"Selection","id":"02f94720-d76b-4f46-8d57-431a6fba29a1","attributes":{"indices":[],"line_indices":[]}},"selection_policy":{"type":"object","name":"UnionRenderers","id":"c1f7524b-1817-4d3b-9656-f815400ca9f7"},"data":{"type":"map","entries":[["Date",{"type":"ndarray","array":{"type":"bytes","data":"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"},"shape":[1113],"dtype":"float64","order":"little"}],["52-week High",{"type":"ndarray","array":{"type":"bytes","data":"H4sIAAEAAAAA/+3UXUzTVxjHcZcSV+gyKKIwQNzAAGZpmYCAOOHZSsoCoq2Q4sqyFGNstFBa/n0DBi1tKXUbIDXOKt2cTiotZFQHOBx7yaQaHJQ1U4OujMq0Iw6LgehAQLabypKmmWMhA3KuPsm5/OU53+w58ic9kUKgdI2zz1ORaAd0B+gfoA6gDqAOLOcOqC1hT0R4IbhkDx1Z5+UQQBX5cR3O5q7aN7oo7UcBDDHfZCefFsBEa8KmiNzFczxUm7vley5s25VlJgZywUHVsLfWFoJRZjLKWMiF7lAtujp2cn8BkI/RzxVPcqBZlO7wG+WA/doYs8O6+D7nf+Il21QhuLz15W+b4ylcKL9+hniQtXgOacLptEYu5OyWYesHuDBBLkz1xYrcDCjvDolsKwIbVXcpPY0Hlp/bPnU2zdtyOZ4zOMsDPd5vNnMNH140d4/1rONDSF9sjDHy3+sTVdIl1PHBei/m+a9vera3IOnuqUd8mE1SaA9NPrs7p3WqK+8VA6Ez5eTf7WTj3n7w1zuRuep42cfFkE3unm18DYM8BimMr/Ns4y96LekSBs9q2rg6mUgSALRzDHXJyKW6g+N22IBknwBikv1Wi6TLRwMlscHeIICQA5sPlf4hAG0B48r2GXe9zr4alRMnBJdSuqZ7jiKE/1sD4eF0U40Qoh5pMj68L4Q83f09ETgRtOZ7740OFsHh7dOhX0TO2/mEU0eliIDHiMVo/IVr6Xh96sjLYnBJkerxM/li8ORRcUGw/boYqHP2rMl4yVPfSHA6CfUScNlAevedLQ0SyFHuE34+IwGlTbk7PK7Ezfijg3JreAX8VzeQ3rIRsirAkzS1/9UXOBWwNZEskpr+WQv+/dyWLCkk9fcQWDR3eefP9P0QLoOLOw5E5MHSUa6hrcIwGdRXE31wJTLouDEckCFFrvQddmaGxAVaZHBiznugahCZ/fu1IOuIDJaKzfCtf/uoDMQm3q7p0kr4tWDvvezaSkg/fcHad3PexnYf/Z0HlYCFdh3EP3SXaSytGXtFDi6P952dKNsoh/yLHziH6+QwEtTUjH2HXOgOgYHkSa9gBXx1Z7i/KkEBrWvptfvTFVAP2NqNH7m7x5wyYrqlgJVq6u0LN6IylbDaa4eky6CE8tq7pdaUqqc6+9tatBtU4MnHYQGqTUwViKYomkSWChixYrPjsLtBSYzRmlMqsBjX68+ZVODLEvYe861Goh1W5B1sI0cXkunVsFy8jFczM8RqWKgzbYbPyr5RA87IjjP3zuttx6Wu+UkNSLQDugP0D1AHUAcWswN/Ah1SMtfIIgAA"},"shape":[1113],"dtype":"float64","order":"little"}],["A_52_hyphen_minus_week_High",{"type":"ndarray","array":{"type":"bytes","data":"H4sIAAEAAAAA/+3UXUzTVxjHcZcSV+gyKKIwQNzAAGZpmYCAOOHZSsoCoq2Q4sqyFGNstFBa/n0DBi1tKXUbIDXOKt2cTiotZFQHOBx7yaQaHJQ1U4OujMq0Iw6LgehAQLabypKmmWMhA3KuPsm5/OU53+w58ic9kUKgdI2zz1ORaAd0B+gfoA6gDqAOLOcOqC1hT0R4IbhkDx1Z5+UQQBX5cR3O5q7aN7oo7UcBDDHfZCefFsBEa8KmiNzFczxUm7vley5s25VlJgZywUHVsLfWFoJRZjLKWMiF7lAtujp2cn8BkI/RzxVPcqBZlO7wG+WA/doYs8O6+D7nf+Il21QhuLz15W+b4ylcKL9+hniQtXgOacLptEYu5OyWYesHuDBBLkz1xYrcDCjvDolsKwIbVXcpPY0Hlp/bPnU2zdtyOZ4zOMsDPd5vNnMNH140d4/1rONDSF9sjDHy3+sTVdIl1PHBei/m+a9vera3IOnuqUd8mE1SaA9NPrs7p3WqK+8VA6Ez5eTf7WTj3n7w1zuRuep42cfFkE3unm18DYM8BimMr/Ns4y96LekSBs9q2rg6mUgSALRzDHXJyKW6g+N22IBknwBikv1Wi6TLRwMlscHeIICQA5sPlf4hAG0B48r2GXe9zr4alRMnBJdSuqZ7jiKE/1sD4eF0U40Qoh5pMj68L4Q83f09ETgRtOZ7740OFsHh7dOhX0TO2/mEU0eliIDHiMVo/IVr6Xh96sjLYnBJkerxM/li8ORRcUGw/boYqHP2rMl4yVPfSHA6CfUScNlAevedLQ0SyFHuE34+IwGlTbk7PK7Ezfijg3JreAX8VzeQ3rIRsirAkzS1/9UXOBWwNZEskpr+WQv+/dyWLCkk9fcQWDR3eefP9P0QLoOLOw5E5MHSUa6hrcIwGdRXE31wJTLouDEckCFFrvQddmaGxAVaZHBiznugahCZ/fu1IOuIDJaKzfCtf/uoDMQm3q7p0kr4tWDvvezaSkg/fcHad3PexnYf/Z0HlYCFdh3EP3SXaSytGXtFDi6P952dKNsoh/yLHziH6+QwEtTUjH2HXOgOgYHkSa9gBXx1Z7i/KkEBrWvptfvTFVAP2NqNH7m7x5wyYrqlgJVq6u0LN6IylbDaa4eky6CE8tq7pdaUqqc6+9tatBtU4MnHYQGqTUwViKYomkSWChixYrPjsLtBSYzRmlMqsBjX68+ZVODLEvYe861Goh1W5B1sI0cXkunVsFy8jFczM8RqWKgzbYbPyr5RA87IjjP3zuttx6Wu+UkNSLQDugP0D1AHUAcWswN/Ah1SMtfIIgAA"},"shape":[1113],"dtype":"float64","order":"little"}],["Variable",["52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High"]]]}}},"view":{"type":"object","name":"CDSView","id":"5f688ecf-e438-4b59-a945-b9639e661594","attributes":{"filter":{"type":"object","name":"AllIndices","id":"c757af21-df09-440f-9455-6678b8cf1460"}}},"glyph":{"type":"object","name":"Line","id":"facf16fd-a2bf-4585-b6d9-eceae39200cf","attributes":{"tags":["apply_ranges"],"x":{"type":"field","field":"Date"},"y":{"type":"field","field":"52-week High"},"line_color":"#ff7f0e","line_width":2}},"selection_glyph":{"type":"object","name":"Line","id":"c4013027-c455-41eb-bd97-5a6b3ae2e0c0","attributes":{"tags":["apply_ranges"],"x":{"type":"field","field":"Date"},"y":{"type":"field","field":"52-week High"},"line_color":"#ff7f0e","line_width":2}},"nonselection_glyph":{"type":"object","name":"Line","id":"65f326f9-e871-4b9e-8a22-eb36a13350ee","attributes":{"tags":["apply_ranges"],"x":{"type":"field","field":"Date"},"y":{"type":"field","field":"52-week High"},"line_color":"#ff7f0e","line_alpha":0.1,"line_width":2}},"muted_glyph":{"type":"object","name":"Line","id":"4fe3eb9a-640d-468f-8442-313087ecb63c","attributes":{"tags":["apply_ranges"],"x":{"type":"field","field":"Date"},"y":{"type":"field","field":"52-week High"},"line_color":"#ff7f0e","line_alpha":0.2,"line_width":2}}}},{"type":"object","name":"GlyphRenderer","id":"702778c2-0438-4436-9cbe-a6e6cff30184","attributes":{"name":"Close","data_source":{"type":"object","name":"ColumnDataSource","id":"654150bf-e626-4d6d-a2e9-0fc802c34994","attributes":{"selected":{"type":"object","name":"Selection","id":"82c45050-766b-4281-99e6-1e7da803fac5","attributes":{"indices":[],"line_indices":[]}},"selection_policy":{"type":"object","name":"UnionRenderers","id":"8263a99c-490c-4d14-aba8-96985b4b2079"},"data":{"type":"map","entries":[["Date",{"type":"ndarray","array":{"type":"bytes","data":"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"},"shape":[1113],"dtype":"float64","order":"little"}],["Close",{"type":"ndarray","array":{"type":"bytes","data":"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"},"shape":[1113],"dtype":"float64","order":"little"}],["Variable",["Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close"]]]}}},"view":{"type":"object","name":"CDSView","id":"26ebd418-b264-43e0-8a47-98e0f7a4fa91","attributes":{"filter":{"type":"object","name":"AllIndices","id":"892bff12-af42-493e-9241-c164a42182ff"}}},"glyph":{"type":"object","name":"Line","id":"ab943b5f-c960-43eb-8628-25061aad9993","attributes":{"tags":["apply_ranges"],"x":{"type":"field","field":"Date"},"y":{"type":"field","field":"Close"},"line_color":"#1f77b4","line_width":2}},"selection_glyph":{"type":"object","name":"Line","id":"1eb98af0-e8fb-4ee7-988e-33557c05e788","attributes":{"tags":["apply_ranges"],"x":{"type":"field","field":"Date"},"y":{"type":"field","field":"Close"},"line_color":"#1f77b4","line_width":2}},"nonselection_glyph":{"type":"object","name":"Line","id":"34a08f13-cd2a-4af2-997e-a23dd9ce1af2","attributes":{"tags":["apply_ranges"],"x":{"type":"field","field":"Date"},"y":{"type":"field","field":"Close"},"line_color":"#1f77b4","line_alpha":0.1,"line_width":2}},"muted_glyph":{"type":"object","name":"Line","id":"608a4a9d-96c0-4bdf-89d2-6eb3e6d64395","attributes":{"tags":["apply_ranges"],"x":{"type":"field","field":"Date"},"y":{"type":"field","field":"Close"},"line_color":"#1f77b4","line_alpha":0.2,"line_width":2}}}},{"type":"object","name":"GlyphRenderer","id":"807222d6-613d-4ce0-8071-d43cb00bb267","attributes":{"name":"52-week Low","data_source":{"type":"object","name":"ColumnDataSource","id":"ec4560a7-439e-4027-b562-a5299a9bfd0a","attributes":{"selected":{"type":"object","name":"Selection","id":"2bfff29c-c4b6-4068-aa35-2f8f1d40dd91","attributes":{"indices":[],"line_indices":[]}},"selection_policy":{"type":"object","name":"UnionRenderers","id":"e41ce8db-e745-4019-b356-0400a2f5a110"},"data":{"type":"map","entries":[["Date",{"type":"ndarray","array":{"type":"bytes","data":"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"},"shape":[1113],"dtype":"float64","order":"little"}],["52-week Low",{"type":"ndarray","array":{"type":"bytes","data":"H4sIAAEAAAAA/+3UfTDUCRzHcY661DQ3CNVF0XoonZTLzTLcB1cOPXlc1sM+0K7FYp+QItJIEnGk6EzRw+Wcdms7lSPOSWUqRUWc5vJstpRTKrrur21nMqaY7lzd76/X/+/5fj8lOyzXz+gTwur4moXfZQshMuMmz9US4mhUf9BGFYUZuseQkyHAZIV75LSOK3z0eOadMJbxJu0MmcYZexsubPZkfb48NQw0qcgk8VIowlYu3/D4Wsi4tjhxqnlFIZCrVmeUkO8VguCfV51JkHCwL6vhfiGfA2Xj3/ZrNARj5p/5NdgbDAsnzt0juewJ69p0oN3Fio0L1f1VhlrjSyuvLn40i42PTXXHGE03VTasnV2Hnp9n4QeX59TWnSxEsboPrnFgob7q5urOJ0H/W1sHT9VrewchMz4kbaOKwiVGZbZV9YGQu+2cRc0X3oF4krGM7eMYCHHlarVMfcIPtcP0vO3RrAEmxLcT/aK2MnGk+RNvHx4TPfwRdY8uxhhTDASOBQcZKB0QMStiGLAyL8q+R2YAtWa+hp10RBuZjYYWTt57XhElc7h0WHzTnjtCpcNfbBenmUBDT3e3trYrDdLrxyzaggLem9Z5lknOvRTIZXb0m9s984JczXr+zsM8L9wwIPWZPfREsXajpK2FkOhA3AHxB8QOEDtA7MCHvAMpv8RGKM+lwCd9xU23JApa2jIPmbz0xmJKgax30ActBew1Ce3USXstb/vODfepeNMwsml8jIyKeecMTRv0fXGG9VPxpq5/T5005jI3mh/k8tL4M+Yc98ObVl2tu7KvzA9FFfXXT37pj6eX1mmOegQgts4zbVunwuPrWL5VDjTomrzUt0lV6C7jsdlL6bj0KiwgjkIHo1PISg8cX22qyb0XEjpoqtK1WSsZsEwjpTxhKaRftu7urGUgMJOsepnMfO15r8KljjZMyK1wljK964MwVZopD/xePxyEP6rrWmc5bBrjYBvTrbR0EyYqOeJpbsRiNrYsSHfw+JGNuCGujbVq8BirFjS6x+0Oxrt6wjXKv0GPg0WxTkKpMQcdzJIuvaMcuGiSZ+4RT53Po9RddHs5yJlvSHqYGDZhd+ueanXICMPs4pGUPd8rFBfeMCmXhkFubSgrVbacCw1hX/vQKi58ymqGSbu48J9+tmekj4sVhz3iY8zDsWt48fwAxlhf3ck38u0Jh5flzF+rKBFQfijMVfo08rXOD7hLmmZH4l3VV7/Rvd8qEqWny7hkYSQeu+e7SIoUDrzQVO5tisQsUXxNlwqP8B/qcJFvz9bR4+FtPr29l5frzgPh++1wzMC2eJopH3v77tReDFZ40yO89K8yPgKiVQza9QRo3C3mZjkJMEouub1F8N91ZCW9YjBdgCWkHHfSCQFsz341u1wqALUlydCgWaERvzUqeZEQn0mG5q1lKEyW3T1klyqE6SMHB89uIay33lK7qiV6b0qqY0mLvhVBScWkedpmESo0rosfNYmQWHdRNU4tCh7dSx21bN5u9tGY7FGlaByoNk4Oj4xG89lnhppF0Sj15Ock9SvsGLYboinHYDy3na5ee4sWA8bq0AuU8s2EH0mHlAeU9ZVJsRjP/XR3+95bsciubCyVJG4h/MA7qLBsDb1VtmKikhr0rZmVcTitmrRL1klIdCDugPgDYgemagd0Cr5uTF8XDypnh8EGnQTYmJ98sHBhApSUlBLm2BPKO/wNA6Y7qMgiAAA="},"shape":[1113],"dtype":"float64","order":"little"}],["A_52_hyphen_minus_week_Low",{"type":"ndarray","array":{"type":"bytes","data":"H4sIAAEAAAAA/+3UfTDUCRzHcY661DQ3CNVF0XoonZTLzTLcB1cOPXlc1sM+0K7FYp+QItJIEnGk6EzRw+Wcdms7lSPOSWUqRUWc5vJstpRTKrrur21nMqaY7lzd76/X/+/5fj8lOyzXz+gTwur4moXfZQshMuMmz9US4mhUf9BGFYUZuseQkyHAZIV75LSOK3z0eOadMJbxJu0MmcYZexsubPZkfb48NQw0qcgk8VIowlYu3/D4Wsi4tjhxqnlFIZCrVmeUkO8VguCfV51JkHCwL6vhfiGfA2Xj3/ZrNARj5p/5NdgbDAsnzt0juewJ69p0oN3Fio0L1f1VhlrjSyuvLn40i42PTXXHGE03VTasnV2Hnp9n4QeX59TWnSxEsboPrnFgob7q5urOJ0H/W1sHT9VrewchMz4kbaOKwiVGZbZV9YGQu+2cRc0X3oF4krGM7eMYCHHlarVMfcIPtcP0vO3RrAEmxLcT/aK2MnGk+RNvHx4TPfwRdY8uxhhTDASOBQcZKB0QMStiGLAyL8q+R2YAtWa+hp10RBuZjYYWTt57XhElc7h0WHzTnjtCpcNfbBenmUBDT3e3trYrDdLrxyzaggLem9Z5lknOvRTIZXb0m9s984JczXr+zsM8L9wwIPWZPfREsXajpK2FkOhA3AHxB8QOEDtA7MCHvAMpv8RGKM+lwCd9xU23JApa2jIPmbz0xmJKgax30ActBew1Ce3USXstb/vODfepeNMwsml8jIyKeecMTRv0fXGG9VPxpq5/T5005jI3mh/k8tL4M+Yc98ObVl2tu7KvzA9FFfXXT37pj6eX1mmOegQgts4zbVunwuPrWL5VDjTomrzUt0lV6C7jsdlL6bj0KiwgjkIHo1PISg8cX22qyb0XEjpoqtK1WSsZsEwjpTxhKaRftu7urGUgMJOsepnMfO15r8KljjZMyK1wljK964MwVZopD/xePxyEP6rrWmc5bBrjYBvTrbR0EyYqOeJpbsRiNrYsSHfw+JGNuCGujbVq8BirFjS6x+0Oxrt6wjXKv0GPg0WxTkKpMQcdzJIuvaMcuGiSZ+4RT53Po9RddHs5yJlvSHqYGDZhd+ueanXICMPs4pGUPd8rFBfeMCmXhkFubSgrVbacCw1hX/vQKi58ymqGSbu48J9+tmekj4sVhz3iY8zDsWt48fwAxlhf3ck38u0Jh5flzF+rKBFQfijMVfo08rXOD7hLmmZH4l3VV7/Rvd8qEqWny7hkYSQeu+e7SIoUDrzQVO5tisQsUXxNlwqP8B/qcJFvz9bR4+FtPr29l5frzgPh++1wzMC2eJopH3v77tReDFZ40yO89K8yPgKiVQza9QRo3C3mZjkJMEouub1F8N91ZCW9YjBdgCWkHHfSCQFsz341u1wqALUlydCgWaERvzUqeZEQn0mG5q1lKEyW3T1klyqE6SMHB89uIay33lK7qiV6b0qqY0mLvhVBScWkedpmESo0rosfNYmQWHdRNU4tCh7dSx21bN5u9tGY7FGlaByoNk4Oj4xG89lnhppF0Sj15Ock9SvsGLYboinHYDy3na5ee4sWA8bq0AuU8s2EH0mHlAeU9ZVJsRjP/XR3+95bsciubCyVJG4h/MA7qLBsDb1VtmKikhr0rZmVcTitmrRL1klIdCDugPgDYgemagd0Cr5uTF8XDypnh8EGnQTYmJ98sHBhApSUlBLm2BPKO/wNA6Y7qMgiAAA="},"shape":[1113],"dtype":"float64","order":"little"}],["Variable",["52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low"]]]}}},"view":{"type":"object","name":"CDSView","id":"93b56e51-0f40-4c0b-8ece-7aa776c494fc","attributes":{"filter":{"type":"object","name":"AllIndices","id":"7d571668-aae1-48f3-9910-dc47bdc9e32b"}}},"glyph":{"type":"object","name":"Line","id":"7e1baf8c-8f30-44e2-b525-ead0c5a3dc19","attributes":{"tags":["apply_ranges"],"x":{"type":"field","field":"Date"},"y":{"type":"field","field":"52-week Low"},"line_color":"#d62728","line_width":2}},"selection_glyph":{"type":"object","name":"Line","id":"732b5b84-239d-45df-997a-6b6fbc6e0a14","attributes":{"tags":["apply_ranges"],"x":{"type":"field","field":"Date"},"y":{"type":"field","field":"52-week Low"},"line_color":"#d62728","line_width":2}},"nonselection_glyph":{"type":"object","name":"Line","id":"abcdd901-1c4e-4841-b7fc-c6175a318b19","attributes":{"tags":["apply_ranges"],"x":{"type":"field","field":"Date"},"y":{"type":"field","field":"52-week Low"},"line_color":"#d62728","line_alpha":0.1,"line_width":2}},"muted_glyph":{"type":"object","name":"Line","id":"b4377d77-0ce2-4480-84fa-e8e103635a58","attributes":{"tags":["apply_ranges"],"x":{"type":"field","field":"Date"},"y":{"type":"field","field":"52-week Low"},"line_color":"#d62728","line_alpha":0.2,"line_width":2}}}},{"type":"object","name":"GlyphRenderer","id":"df8e7f3d-601b-4385-ba4b-1e31ff8b442a","attributes":{"data_source":{"type":"object","name":"ColumnDataSource","id":"117f1707-6e7d-4b20-abf8-96019b866412","attributes":{"selected":{"type":"object","name":"Selection","id":"fed7636c-81bf-44af-b356-4e93573b5381","attributes":{"indices":[],"line_indices":[]}},"selection_policy":{"type":"object","name":"UnionRenderers","id":"0af2ed4f-f55c-488f-8dda-5ed4162e9ae6"},"data":{"type":"map","entries":[["left",{"type":"ndarray","array":{"type":"bytes","data":"H4sIAAEAAAAA/2NgYGj3eV7uBADGXSfjCAAAAA=="},"shape":[1],"dtype":"float64","order":"little"}],["right",{"type":"ndarray","array":{"type":"bytes","data":"H4sIAAEAAAAA/2NgOJAS6FLhBADJjm5jCAAAAA=="},"shape":[1],"dtype":"float64","order":"little"}],["bottom",{"type":"ndarray","array":{"type":"bytes","data":"H4sIAAEAAAAA/0thYGAAAEi/AJUEAAAA"},"shape":[1],"dtype":"int32","order":"little"}],["top",{"type":"ndarray","array":{"type":"bytes","data":"H4sIAAEAAAAA/5vAyMAAAI9Uxp0EAAAA"},"shape":[1],"dtype":"int32","order":"little"}]]}}},"view":{"type":"object","name":"CDSView","id":"ea68d825-3283-43a2-851c-cffdee598e05","attributes":{"filter":{"type":"object","name":"AllIndices","id":"c9ea3230-c7ee-4a18-9435-84a8823c0b18"}}},"glyph":{"type":"object","name":"Quad","id":"f9f1b6dc-5feb-415f-8640-f4efc4434365","attributes":{"tags":["apply_ranges"],"left":{"type":"field","field":"left"},"right":{"type":"field","field":"right"},"bottom":{"type":"field","field":"bottom"},"top":{"type":"field","field":"top"},"line_alpha":{"type":"value","value":0.5},"line_width":{"type":"value","value":0},"fill_color":{"type":"value","value":"#1a1a1a"},"fill_alpha":{"type":"value","value":0.5},"hatch_color":{"type":"value","value":"#1a1a1a"},"hatch_alpha":{"type":"value","value":0.5}}},"selection_glyph":{"type":"object","name":"Quad","id":"3cb7ddd5-ab81-4a36-bcb3-c3f23ebaef7a","attributes":{"tags":["apply_ranges"],"left":{"type":"field","field":"left"},"right":{"type":"field","field":"right"},"bottom":{"type":"field","field":"bottom"},"top":{"type":"field","field":"top"},"line_color":{"type":"value","value":"black"},"line_alpha":{"type":"value","value":0.5},"line_width":{"type":"value","value":0},"line_join":{"type":"value","value":"bevel"},"line_cap":{"type":"value","value":"butt"},"line_dash":{"type":"value","value":[]},"line_dash_offset":{"type":"value","value":0},"fill_color":{"type":"value","value":"#1a1a1a"},"fill_alpha":{"type":"value","value":0.5},"hatch_color":{"type":"value","value":"#1a1a1a"},"hatch_alpha":{"type":"value","value":0.5},"hatch_scale":{"type":"value","value":12.0},"hatch_pattern":{"type":"value","value":null},"hatch_weight":{"type":"value","value":1.0}}},"nonselection_glyph":{"type":"object","name":"Quad","id":"0cb68d14-2918-43aa-a21f-9c696bc728b2","attributes":{"tags":["apply_ranges"],"left":{"type":"field","field":"left"},"right":{"type":"field","field":"right"},"bottom":{"type":"field","field":"bottom"},"top":{"type":"field","field":"top"},"line_alpha":{"type":"value","value":0.5},"line_width":{"type":"value","value":0},"fill_color":{"type":"value","value":"#1a1a1a"},"fill_alpha":{"type":"value","value":0.5},"hatch_color":{"type":"value","value":"#1a1a1a"},"hatch_alpha":{"type":"value","value":0.1}}},"muted_glyph":{"type":"object","name":"Quad","id":"f91e9b3e-e0c0-4533-92e6-909f8607d2d2","attributes":{"tags":["apply_ranges"],"left":{"type":"field","field":"left"},"right":{"type":"field","field":"right"},"bottom":{"type":"field","field":"bottom"},"top":{"type":"field","field":"top"},"line_alpha":{"type":"value","value":0.5},"line_width":{"type":"value","value":0},"fill_color":{"type":"value","value":"#1a1a1a"},"fill_alpha":{"type":"value","value":0.5},"hatch_color":{"type":"value","value":"#1a1a1a"},"hatch_alpha":{"type":"value","value":0.2}}}}},{"type":"object","name":"GlyphRenderer","id":"cf3e2dc1-0f71-408c-8e71-46820b20ee43","attributes":{"data_source":{"type":"object","name":"ColumnDataSource","id":"d35a6d24-9ddf-4806-9778-f404f9426217","attributes":{"selected":{"type":"object","name":"Selection","id":"798bbb87-ac15-406b-918f-8e95512870a1","attributes":{"indices":[],"line_indices":[]}},"selection_policy":{"type":"object","name":"UnionRenderers","id":"d9db359f-f374-41ca-97f6-334b8fe27fbe"},"data":{"type":"map","entries":[["x",["2023-01-15"]],["y",[350]],["text",["2023 Start"]]]}}},"view":{"type":"object","name":"CDSView","id":"e7df8edf-1c5a-4a4f-a21d-c8b13740e5e2","attributes":{"filter":{"type":"object","name":"AllIndices","id":"235f4b43-2e1d-4ce1-b69c-b8566d78d6f5"}}},"glyph":{"type":"object","name":"Text","id":"fedcde2d-e815-493f-8395-69670bf64b38","attributes":{"tags":["apply_ranges"],"x":{"type":"field","field":"x"},"y":{"type":"field","field":"y"},"text":{"type":"field","field":"text"},"text_color":{"type":"value","value":"gray"},"text_font_size":{"type":"value","value":"10pt"},"text_baseline":{"type":"value","value":"middle"}}},"selection_glyph":{"type":"object","name":"Text","id":"15247404-dd2f-427b-9b25-e0e33bb0f2e5","attributes":{"tags":["apply_ranges"],"x":{"type":"field","field":"x"},"y":{"type":"field","field":"y"},"text":{"type":"field","field":"text"},"angle":{"type":"value","value":0.0},"x_offset":{"type":"value","value":0},"y_offset":{"type":"value","value":0},"outline_shape":{"type":"value","value":"box"},"text_color":{"type":"value","value":"gray"},"text_outline_color":{"type":"value","value":null},"text_outline_width":{"type":"value","value":1},"text_alpha":{"type":"value","value":1.0},"text_font_size":{"type":"value","value":"10pt"},"text_font_style":{"type":"value","value":"normal"},"text_align":{"type":"value","value":"left"},"text_baseline":{"type":"value","value":"middle"},"text_line_height":{"type":"value","value":1.2},"background_fill_color":{"type":"value","value":null},"background_fill_alpha":{"type":"value","value":1.0},"background_hatch_color":{"type":"value","value":null},"background_hatch_alpha":{"type":"value","value":1.0},"background_hatch_scale":{"type":"value","value":12.0},"background_hatch_pattern":{"type":"value","value":null},"background_hatch_weight":{"type":"value","value":1.0},"border_line_color":{"type":"value","value":null},"border_line_alpha":{"type":"value","value":1.0},"border_line_width":{"type":"value","value":1},"border_line_join":{"type":"value","value":"bevel"},"border_line_cap":{"type":"value","value":"butt"},"border_line_dash":{"type":"value","value":[]},"border_line_dash_offset":{"type":"value","value":0}}},"nonselection_glyph":{"type":"object","name":"Text","id":"aeedf688-feab-4ef9-9a63-fd7edd26de58","attributes":{"tags":["apply_ranges"],"x":{"type":"field","field":"x"},"y":{"type":"field","field":"y"},"text":{"type":"field","field":"text"},"text_color":{"type":"value","value":"gray"},"text_alpha":{"type":"value","value":0.1},"text_font_size":{"type":"value","value":"10pt"},"text_baseline":{"type":"value","value":"middle"}}},"muted_glyph":{"type":"object","name":"Text","id":"31119ca4-70a7-4da0-aae5-f4579122c1b1","attributes":{"tags":["apply_ranges"],"x":{"type":"field","field":"x"},"y":{"type":"field","field":"y"},"text":{"type":"field","field":"text"},"text_color":{"type":"value","value":"gray"},"text_alpha":{"type":"value","value":0.2},"text_font_size":{"type":"value","value":"10pt"},"text_baseline":{"type":"value","value":"middle"}}}}}],"toolbar":{"type":"object","name":"Toolbar","id":"2f096e67-1756-43c9-8148-8065c10f753b","attributes":{"tools":[{"type":"object","name":"WheelZoomTool","id":"a51a304f-e7b6-46f5-b111-2dff4290f4e8","attributes":{"tags":["hv_created"],"renderers":"auto","zoom_together":"none"}},{"type":"object","name":"HoverTool","id":"a7419de1-f52b-4527-bb4a-19e9939e3ad4","attributes":{"tags":["hv_created"],"renderers":[{"id":"dfd02c45-148f-4045-85ba-dca9abc43f2b"}],"tooltips":[["Variable","@{Variable}"],["Date","@{Date}{%F %T}"],["value","@{A_52_hyphen_minus_week_High}"]],"formatters":{"type":"map","entries":[["@{Date}","datetime"]]},"sort_by":null}},{"type":"object","name":"HoverTool","id":"bb64dece-4dd3-471b-99b4-0e5b0864d13f","attributes":{"tags":["hv_created"],"renderers":[{"id":"702778c2-0438-4436-9cbe-a6e6cff30184"}],"tooltips":[["Variable","@{Variable}"],["Date","@{Date}{%F %T}"],["value","@{Close}"]],"formatters":{"type":"map","entries":[["@{Date}","datetime"]]},"sort_by":null}},{"type":"object","name":"HoverTool","id":"b655ab2d-4d60-451f-a656-551ef65a3d41","attributes":{"tags":["hv_created"],"renderers":[{"id":"807222d6-613d-4ce0-8071-d43cb00bb267"}],"tooltips":[["Variable","@{Variable}"],["Date","@{Date}{%F %T}"],["value","@{A_52_hyphen_minus_week_Low}"]],"formatters":{"type":"map","entries":[["@{Date}","datetime"]]},"sort_by":null}},{"type":"object","name":"SaveTool","id":"08f3bacc-34df-4b9a-90b9-22e3bdc0ec0a"},{"type":"object","name":"PanTool","id":"2b81f581-d8f3-41a2-8bfc-2ced6b232cb7"},{"type":"object","name":"BoxZoomTool","id":"36dc0a91-5263-4cb3-a1fe-e65676f55849","attributes":{"overlay":{"type":"object","name":"BoxAnnotation","id":"90e889c7-cabd-4079-9d1f-a94c514eb5d1","attributes":{"syncable":false,"line_color":"black","line_alpha":1.0,"line_width":2,"line_dash":[4,4],"fill_color":"lightgrey","fill_alpha":0.5,"level":"overlay","visible":false,"left":{"type":"number","value":"nan"},"right":{"type":"number","value":"nan"},"top":{"type":"number","value":"nan"},"bottom":{"type":"number","value":"nan"},"left_units":"canvas","right_units":"canvas","top_units":"canvas","bottom_units":"canvas","handles":{"type":"object","name":"BoxInteractionHandles","id":"68223d2d-c5bd-4fbd-8628-d7b624a264f4","attributes":{"all":{"type":"object","name":"AreaVisuals","id":"797e2c4c-9387-4b37-a226-d62eea0d966a","attributes":{"fill_color":"white","hover_fill_color":"lightgray"}}}}}}}},{"type":"object","name":"ResetTool","id":"a0597877-51d0-4739-8abd-8e3e0da7efbb"}],"active_drag":{"id":"2b81f581-d8f3-41a2-8bfc-2ced6b232cb7"},"active_scroll":{"id":"a51a304f-e7b6-46f5-b111-2dff4290f4e8"}}},"left":[{"type":"object","name":"LinearAxis","id":"beaa08ad-a8d2-4c00-9c02-1a03a8feafc6","attributes":{"ticker":{"type":"object","name":"BasicTicker","id":"ebd7a81f-0171-4655-9fcb-beac6f883673","attributes":{"mantissas":[1,2,5]}},"formatter":{"type":"object","name":"CustomJSTickFormatter","id":"c94b10e8-4c06-4bfd-adae-8fe9305cc51c","attributes":{"args":{"type":"map","entries":[["top_tick",865.082427776039]]},"code":"\n            if (Math.abs(tick - top_tick) < (top_tick * 0.05)) {\n                return '$' + tick.toFixed(0);\n            }\n            return tick.toFixed(0);\n        "}},"axis_label":" ","axis_label_text_font":"Harmonia Sans Pro Cyr","major_label_policy":{"type":"object","name":"AllLabels","id":"f6a82aa6-3ce9-42d7-ac7a-c455fdd499b1"},"major_label_text_font":"Harmonia Sans Pro Cyr","major_label_text_font_size":"15pt"}}],"below":[{"type":"object","name":"DatetimeAxis","id":"64932b14-312e-4b94-ba9a-076667a63483","attributes":{"ticker":{"type":"object","name":"DatetimeTicker","id":"2c8921fd-6f1d-4a10-b136-70f796c5e625","attributes":{"num_minor_ticks":5,"tickers":[{"type":"object","name":"AdaptiveTicker","id":"459ccedf-505f-426e-bd55-bc061ad1c045","attributes":{"num_minor_ticks":0,"mantissas":[1,2,5],"max_interval":500.0}},{"type":"object","name":"AdaptiveTicker","id":"f8c6dfad-78ae-4968-9121-4e924b39ca15","attributes":{"num_minor_ticks":0,"base":60,"mantissas":[1,2,5,10,15,20,30],"min_interval":1000.0,"max_interval":1800000.0}},{"type":"object","name":"AdaptiveTicker","id":"6e30d1c0-2ddd-4194-811d-f93a59bcc206","attributes":{"num_minor_ticks":0,"base":24,"mantissas":[1,2,4,6,8,12],"min_interval":3600000.0,"max_interval":43200000.0}},{"type":"object","name":"DaysTicker","id":"860f5161-202b-4b5f-afee-946001c65239","attributes":{"days":[1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31]}},{"type":"object","name":"DaysTicker","id":"eb979f10-97df-432e-b734-af1159f2f26c","attributes":{"days":[1,4,7,10,13,16,19,22,25,28]}},{"type":"object","name":"DaysTicker","id":"4a4ca190-99df-4580-8411-a252d0dcc983","attributes":{"days":[1,8,15,22]}},{"type":"object","name":"DaysTicker","id":"0d987531-bca1-482a-bd46-296ea6e6f1f2","attributes":{"days":[1,15]}},{"type":"object","name":"MonthsTicker","id":"7313a62c-c9a3-4db7-aacb-3ebcd1375b9b","attributes":{"months":[0,1,2,3,4,5,6,7,8,9,10,11]}},{"type":"object","name":"MonthsTicker","id":"6d1ae708-552a-4101-920a-5cad25331bb0","attributes":{"months":[0,2,4,6,8,10]}},{"type":"object","name":"MonthsTicker","id":"31bbcdf0-ac1a-4d8d-98fa-9d27c66b34f7","attributes":{"months":[0,4,8]}},{"type":"object","name":"MonthsTicker","id":"7a4683fd-a814-4497-ad95-72febd528198","attributes":{"months":[0,6]}},{"type":"object","name":"YearsTicker","id":"8bd86ac0-032c-4ed7-8b74-024bb65641d3"}]}},"formatter":{"type":"object","name":"DatetimeTickFormatter","id":"2dd68e77-f401-4e4d-a472-276c512ba416","attributes":{"seconds":"%T","minsec":"%T","minutes":"%H:%M","hours":"%H:%M","days":"%b %d","months":"%b %Y","strip_leading_zeros":["microseconds","milliseconds","seconds"],"boundary_scaling":false,"context":{"type":"object","name":"DatetimeTickFormatter","id":"16713007-901a-4690-8ee6-6b88caf13cbb","attributes":{"microseconds":"%T","milliseconds":"%T","seconds":"%b %d, %Y","minsec":"%b %d, %Y","minutes":"%b %d, %Y","hourmin":"%b %d, %Y","hours":"%b %d, %Y","days":"%Y","months":"","years":"","boundary_scaling":false,"hide_repeats":true,"context":{"type":"object","name":"DatetimeTickFormatter","id":"c446d190-2729-4255-b771-f402916f4dc6","attributes":{"microseconds":"%b %d, %Y","milliseconds":"%b %d, %Y","seconds":"","minsec":"","minutes":"","hourmin":"","hours":"","days":"","months":"","years":"","boundary_scaling":false,"hide_repeats":true}},"context_which":"all"}},"context_which":"all"}},"axis_label":" ","axis_label_text_font":"Harmonia Sans Pro Cyr","major_label_policy":{"type":"object","name":"AllLabels","id":"3d41a9b7-fde0-4ab7-a17f-475b6fae99e8"},"major_label_text_font":"Harmonia Sans Pro Cyr","major_label_text_font_size":"15pt"}}],"center":[{"type":"object","name":"Grid","id":"a6732c56-9a63-4ed9-8053-22c0755dfff8","attributes":{"axis":{"id":"64932b14-312e-4b94-ba9a-076667a63483"},"grid_line_color":null}},{"type":"object","name":"Grid","id":"fa3ddb93-7c14-4017-9fb1-ae6dc0b3dca3","attributes":{"dimension":1,"axis":{"id":"beaa08ad-a8d2-4c00-9c02-1a03a8feafc6"},"grid_line_color":null}},{"type":"object","name":"Legend","id":"1e7c838a-7fa2-49a2-97f2-8ae5dbf357f6","attributes":{"location":"top_left","ncols":1,"border_line_color":"#F0FFF0","background_fill_color":"#F0FFF0","click_policy":"mute","label_text_font_size":"13pt","items":[{"type":"object","name":"LegendItem","id":"7f78b7e7-def0-4e1b-9e33-df2641c2de19","attributes":{"label":{"type":"value","value":"52-week High"},"renderers":[{"id":"dfd02c45-148f-4045-85ba-dca9abc43f2b"}]}},{"type":"object","name":"LegendItem","id":"30e0bccd-9a71-452b-9e76-9f6192777a09","attributes":{"label":{"type":"value","value":"Close"},"renderers":[{"id":"702778c2-0438-4436-9cbe-a6e6cff30184"}]}},{"type":"object","name":"LegendItem","id":"6d0d5a7d-5f05-4834-b2d1-55fa5c1ac5cf","attributes":{"label":{"type":"value","value":"52-week Low"},"renderers":[{"id":"807222d6-613d-4ce0-8071-d43cb00bb267"}]}}]}}],"background_fill_color":"#F0FFF0","border_fill_color":"#F0FFF0","min_border_top":60,"min_border_bottom":80,"min_border_left":10,"min_border_right":10,"output_backend":"webgl"}},{"type":"object","name":"Div","id":"676ba97e-528a-40f4-83c3-9e339110fa4c","attributes":{"text":"\n        <div style=\"\n            width: 700px;\n            height: 70px;\n            position: relative;\n            top: -70px;\n            display: flex;\n            align-items: center;\n            justify-content: flex-end;\n            padding-right: 40px;\n            background-color: transparent;\n            pointer-events: none;\n        \">\n            <img src=\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAA6oAAAF3CAYAAACsQ7bGAAAACXBIWXMAAC4jAAAuIwF4pT92AAAAGXRFWHRTb2Z0d2FyZQB3d3cuaW5rc2NhcGUub3Jnm+48GgAAIABJREFUeJzs3Xl8XGW9P/DP98wkabqDtFDazEy6sAYqzUySzqQtAUWpKy4VV0QRFeWqF3+iIi644q6IXkFAxQUriKCgcMFAm0zTZFoshEVL20zSQtks3Ztk5nx/fyT1YqHtJDnnec7MfN6vl3/c180830/JmZzzPec5zyOqCiIiIiIiIqKgcGwHICIiIiIiInohNqpEREREREQUKGxUiYiIiIiIKFDYqBIREREREVGgsFElIiIiIiKiQGGjSkRERERERIHCRpWIiIiIiIgChY0qERERERERBQobVSIiIiIiIgoUNqpEREREREQUKGxUiYiIiIiIKFDYqBIREREREVGgsFElIiIiIiKiQGGjSkRERERERIHCRpWIiIiIiIgChY0qERERERERBQobVSIiIiIiIgoUNqpEREREREQUKGxUiYiIiIiIKFDYqBIREREREVGgsFElIiIiIiKiQGGjSkRERERERIHCRpWIiIiIiIgChY0qERERERERBQobVSIiIiIiIgoUNqpEREREREQUKGxUiYiIiIiIKFDYqBIREREREVGgsFElIiIiIiKiQGGjSkRERERERIHCRpWIiIiIiIgChY0qERERERERBQobVSIiIiIiIgoUNqpEREREREQUKGxUiYiIiIiIKFDYqBIREREREVGgsFElIiIiIiKiQGGjSkRERERERIHCRpWIiIiIiIgChY0qERERERERBQobVSIiIiIiIgoUNqpEREREREQUKGxUiYiIiIiIKFDYqBIREREREVGgsFElIiIiIiKiQGGjSkRERERERIHCRpWIiIiIiIgChY0qERERERERBQobVSIiIiIiIgqUsO0ARERERERENCSaSjwBYIbPZR7Ltned6HONMeETVSIiIiIiIgoUNqpEREREREQUKGxUiYiIiIiIKFDYqBIREREREVGgsFElIiIiIiKiQGGjSkRERERERIHCRpWIiIiIiIgChY0qERERERERBQobVSIiIiIiIgoUNqpEREREREQUKGxUiYiIiIiIKFDYqBIREREREVGgsFElIiIiIiKiQGGjSkRERERERIHCRpWIiIiIiIgChY0qERERERERBQobVSIiIiIiIgoUNqpEREREREQUKGxUiYiIiIiIKFDYqBIREREREVGgsFElIiIiIiKiQGGjSkRERERERIHCRpWIiIiIiIgChY0qERERERERBQobVSIiIiIiIgoUNqpEREREREQUKGxUiYiIiIiIKFDYqBIREREREVGgsFElIiIiIiKiQGGjSkRERERERIHCRpWIiIiIiIgChY0qERERERERBQobVSIiIiIiIgoUNqpEREREREQUKGxUiYiIiIiIKFDYqBIREREREVGgsFElIiIiIiKiQGGjSkRERERERIHCRpWIiIiIiIgChY0qERERERERBQobVSIiIiIiIgoUNqpEREREREQUKGxUiYiIiIiIKFDYqBIREREREVGgsFElIiIiIiKiQGGjSkRERERERIHCRpWIiIiIiIgChY0qERERERERBQobVSIiIiIiIgoUNqpEREREREQUKGxUiYiIiIiIKFDYqBIREREREVGgsFElIiIiIiKiQGGjSkRERERERIHCRpWIiIiIiIgChY0qERERERERBUrYdgDyj4jIzOaGeY7qaY7rHqcisyByxP/9hO4VRR9Ee1T0gUnb+h/q7u4esJeYiIiovJzQ3Dxpjw6c5qie4joaE8UMiFMJAHBdhchTIuhTkcdUc2t629Y+YTkyEZERoqq2MxS9urq6yj1TKmfkpGKa5HUqQipwdSoAqMiAuLJbHQw4rrvLDblb+46d+5QuX573I4uISDS5oMWF804RLIXimII/rNgNwT0AbnG14ua+dHqvHxmJiIjK2YzFC6ZVuKF3ieKNAJIY2YODf6jon9TFL/vSmYd8ikhEFkVTiScAzPC5zGPZ9q4Tfa4xJmxUR0CWLQtF+zbOV8eph+oCFXm5QKMAjgEgIxgqD+ApAJsBfUSAbhV5sEIH1j3evu7pUWUTcSLJ+DsBvRyQeaMZ4wDPA/h+ZT70vfUdHTs8GI+IiKiszVkUjwzm5fMieDeAyrGPKCtdxeV96c77xz4WEQUFG9UhbFQPY2hKTv9rBPpaQF4N4GU+l3wcKu3iuG15t/LXhTzVrE3GT8iLc4NAm3zI8yTUvTCbXvNnH8YmIiIqeSLi1CTrPy6QrwCo9np8FfmNuuGL+9Lpf3k9NhGZx0Z1CBvVg4gtrD9RndB5AC4E9IjDfsAPjszJruzceKgfiS5seAUcvQXAZH/DyJW96a7PKA8YIiKigs1bOq9q4Pkpv4TIMl8LKTY50KWb0pnHfK1DRL5jozqEiykdILq46STk8t+A47wOCHZPVpNseLXj6O0AKvyvppdGkgkA+LT/tYiIiIpfPB6vGKiaejsEZ/leTFDrwrk/koone9szG3yvR0TkM25PM2xeU9PkaCrxU+TzD0LwOtt5DieSis9xRJfDSJO6n14aSSbebq4eERFR8Xqmyvk2YKBJ/TedLorba5JJz6cXExGZxkYVQCzVuHDAyf8dwIUAQrbzFMKBXAdgkum6IvjR3NT86abrEhERFZNIc/0iQC82XljkJEdyXzBel4jIY2XfqMaSiY8o3BUQ1NrOUqhosv61CiyxVP7InFZy+i8REdEhiDpXYmQ7AnhIPzarqWmWndpERN4o60Y1mopfqoIfodje1ZXQp2yWV8GHaltOm2ozAxERUVANPU3FQosRxoVC7kct1iciGrOybVSjyfjXAPmG7RwjVdPUNA/QZssxqt2BCn9XLyQiIipSjjrn284A6Htl2bKieJ2JiOillGWjGmtOvB8in7GdYzRCjvsGWJtK9EL6etsJiIiIgkaWLQspArEo49HRzT2NtkMQEY1W2TWqNcmGJar4ie0co+VCz7CdAQCgOJ13aomIiP5TdPOmUwEcZTsHAEDcYFwzEBGNQlk1qic0N09yxP05jG7p4i0RLLCdAQAgmBB5oucE2zGIiIgCxQnIeRqAQuK2MxARjVZZNap70f8tQGKWY4za8L5oR9vOsZ+oG7OdgYiIKEhclZjtDPspNGY7AxHRaJVNo1qTjJ8CxQds5xgLtyIXjKlEw1w402xnICIiChJRDcy5WoIyBZmIaBTKplF1RL6OIv/3VgwG5+QHAI7yBEhERPQfJEjnRglQFiKikSnqxq1Qtc31TQBeYzvHWGlIJ9jO8EIqOtF2BiIioiBRRZDO1VV1dXWVtkMQEY1GWTSqrjofsZ3BE+pssx3hP+m/bCcgIiIKFEeCdK7e2d3dPWA7BBHRaJR8ozonHp8C4E22c3ghlHOetZ3hhUQRqDxERES2BercGKQsREQjVPKNaq5SzgUw3nYOL2yqrn4OgNrOsZ8rPAESERH9B8FztiP8G8/TRFTESr5RheD1tiN4RVtbcwA22M6xXz7sPGo7AxERUZAo8A/bGV7gMdsBiIhGq6Qb1dqWlnEATredw0sCZGxnGPbUlvs7+2yHICIiChR1g3KeBqABykJENDJh2wH85O7b3QzH+rTf5wDcB+hmUTznivMcxHVFMUXhTHSgM13FMSKoA1BzuMFcyF0CPdf31Id3t+0AREREQdPbntkQTSUeBzDXdhZHea4mouJV0o2qOG6TQmyU3qGi1zh5/DbbsebvquoW8qGaZHKmI4MLBVioQFMYbu7An8lXun8OD0g/gCrPU4+AArfYrE9ERBRYIjdD9dOWUzy8KZ3h1F8iKlol3agqZL6Fon+SsH4wuyLz5Eg/2pdObwFw8/D/XtKW1syzsVTiVgUsPlXVLX2Vk+6wV5+IiCi4XDd/nSPOp2D1FSu9xl5tIqKxK+l3VAE12qgK9Me9qzJv6BlFkzoSedWvASjoKa1Prhxe2ImIiIgO0Jde87gAv7MWQLC1f9fgddbqExF5oGQb1XlL51UBMsdgyVXZ9JqLVdX37WP60pmHAPzM7zovSfWRyinbeZeWiIjoUMLOZQB22SitKp/dum7dbhu1iYi8UrKNam7bUTNg7t83gFDogkLfRfVCtVR9UoB/mqo3bB9C+p71d67vN1yXiIioqPTcv3qTKD5muq4Af+xt77zBdF0iIq+VbKPqIjfTYLlbsys6HjFYD4+1te10oUsB+DrN+AVyAN6dXblmjaF6RERERa0n3XW9AF8zWLJz366BdxmsR0Tkm5JtVCF6rLFSgl+YqvVCve2ZDSHkFwLo9rnUdlX3tdn2roMu8kREREQv1tPedZlCL8HQDV8/3d6/a+AMTvklolJRwo2qM9VQpX1H7dN7DNV6kY3ta7OuVjSo6LcBDPpQ4s5cWE7pTa+5y4exiYiISl5ve+a7riIFf24sPw/IB3vTmTeySSWiUlK6jSrccWbqyMOZTMaPBrFgfen03t62zP+DIyeo4jooxnqicgG5y1U5Pdve9Zot93f2eRKUiIioTPWluzp705n5AN4D4O8eDPmUinwZTv/sbHvnNSYWcyQiMqlk91EVkXFm/mS7D5moUojsys6NAC6YE49fkquUNwD6GogsAjCjgI/vALBaoHeJW3HLplWrevzMSkREVG6GF128EcCNsYXxBa7jnOOovlIFpwGoPNzHAX0cIn+DyB3T9rp/zWS6rN4oJyLyU8k2qnB1HET8r6PyjP9FRmZDJrMdwC+H/4dI84JjAZkj6sSgGA/RqaKyyxXZA7hbNB/etHn16g0mVy0mIiIqZz2rMmsBrAVweV1dXeX2iVUnOBWhKFwcA8V4ASpUsAPqbnMc7UOF+9im1geet52biMiUkm1UVSRkoo6I7jBRZyx629Y+AeAJACttZyEiIqL/1N3dPQDgweH/ERERSvodVTNcES5cQERERERE5CE2qmMkLrh4ARERERERkYfYqBIREREREVGgsFElIiIiIiKiQGGjSkRERERERIHCRpWIiIiIiIgChY0qERERERERBQobVSIiIiIiIgoUNqpEREREREQUKGHbAYhKTV1dXeXzEyZMqqrMT8hhYOe0vZW7MpnMoO1cROXkhObmSXuwZ1I4V5mXXG7fhkxmu+1M5WReU9PknMiRkMFxbkgniMpkQMYN/X91n4rucPKy2wlhzxF78ST/RtJoTG+pmzgpN+7IfoTGhZCb5OZDEwX5cY5IWNXZh1D+eclhj6By74SdO5/o7u4esJ2ZiArHRpVoFGqSyWoHuaSKO1/gnAjoyQLMVWAKplRXhuAi5wqAKjxTBURTiTyAJwXY4CoeF9H1KpoOVUzu2tTaus/2v6fY1NXVVe6aVDUHEj5BkT9eRKYpMBGqUyEYD5FxCt3pqPSrYCtcZBGSDU4/ujZ1dm61nZ+8MXNJQ00ojySAk0X1JAAnA3I0oEcAgCCEfCgPhATRVAIA9gDIQvG4AI/DwcMO0LaxresfFv8ZRS22sP5EFSehIvMc6FwF5gIyB6Gh3wEggCvQ//iUACpwBXBd4Jkq5KKpRC8EGwFsgCuPqiDdVznhAW1tzZn/V1HQRFLxOY6iUUWOA3Suwpkj0LnVqD4qByAEF4ADRxSAM3S8iQKuA3UARQ47p1S70VSiD8BGVWx0RB+FOqsqpm5bs/7O9f02/33FLrY4PgMuTlBXjgM0CsgREEwAMB6CKVAMQGQ3FNsh6IOrPa7r/n1zZM7Dunx53nZ+Ci5R1cP/VBGKphJfBPAF3wspPpFNd33f9zpkXe3ChTHXGXy9iJytiiUAqj0Ydh+AThH8OZcL/XZzR8dmD8YsObUtp03N94dOB+RMgZ4BkeMw+httfQA6AXQiFPpzdkXHI54FJV+JiBNrji9281gKwasBnOLNwNgqivsg8vuKydvu4EXrwdWmGl7uKpYodLGINAM63cdyewToUtX7BfLHnnTXAz7WogCJLaw/0XXkdAeySKGLAZnpY7l+AGsAWelI/o897WtXa6leHHtAli0L1TyRPU00fyYgZwJoBDB5VIMpdkNkrUC71JH7Kidtu5t/f4dEU4knAMzwucxj2fauE32uMSZF0ajWLlwYc5GfO6IPOfoeAO/2J9H/EchP1MUfvBov78oDm1evfq7Qn5/d1HR0XlxvLtYOIa/OY342UbWLEqe7OfH1CX+uEv/Ycn9n30g+I8uWhSJP9izVvH5YBK+Cv+91u4Dcp6o/65tVu7zc7zLOa2qaPBBy3wbR86BoAhDyqdRDCvxO1f1dX3rN46MZYGY8Pj5c4SS9DvZC6ujW3vaubr/Gn5uaP33QrTrVr/H3662JtY702J7ZEj+qYlDOV8UHAczxKdow2Qa4N7uKq/rSmYf8rVUcooubTtK8+3aBvh2+//c/pI1Q3CLAb4utaa1ZFG90cs4kP2u4gsG+dOf9ftbwU3RRw2x19e0CvB3AyfaS6BZVuVUUN2VXdbXbyxEcIiKR5vqUuPI+hbxx/6wVHzwP6B9ddX63uWrCPaOdURFLJk5TlZd5He6Fpg269/v5ygIb1SFF0ahGk/FPQ+TrtnOYoNBX9bZn7i7056PJ+FshstzPTACgkI/0tnf+2K/xo6nENgBT/Rp/iH4s2575YSE/KSJONFX/PlX5HICov7le0uOi+PpRA3pjub27FUs2JNXRD0LxFgDjDZe/w1Vc0Zfu6hzJh2qamuY5ofw//QoFACrym962znf6NX6sueFNqnqLX+Pv179rYOLWdet2F/KztQ0Nx7gV+iUA7wEwzt9kL6IC3KaO+5XsyjVrDNe27pj58ydUTai6QMU9XyDzbed5CfdCcGW2ret/bQcpRDSVeADAy/2tItuy7Z1H+lvDW3V1dZW7po57j6q8D0ATALGd6YVEsRpwrsyu6rxNVV3beUyb2RI/KtyPC0TkfAWOM1y+TyHfqJqy7bqRPmWNphJ3ATjLp1xDnP4jsysf3ObX8GxUh3DVX6ID1C5KnB5JxteoyrWw06QCwFwVXPdslXTHmuMtljIYFUnFz4qlEvepaDsU74H5JhUAXuMIVkeSiTtrkokGC/UJQG1Ly7hoMv5pt0L/CeBCmG9SgaE33N4I18lEU4kb56bm+znFNTBOaG6eFE3FLx03sXITRL8f0CYVAM6E4u5oKrE21pxYajsMjUxtS8u4WDLxkZ1Tqh8fPtcuRMCaVABQQaOK+4dIMv5IJJU4V0QCl9EPkeYFx8ZSie+E+6UHIl+30KQCQI1Arx7YPvXxWHPio3V1dZUWMpBlbFSJhk1vqZsYTcV/5bpohe93vgujwHGqcm802fDzWY2Nvk5jsSWSip8VTSU6BXKXAkts5wEAEZztCFZFmxPfq0kmvXgXmQoUSTUk3IFdDw/PovF1quQIvGsQlY/Gkon32Q7il5pksjqWin9ur/b3APINBabZzlSg01RxRzSVuLumqd73qes0NvF4vCKabPiYO7Brgwp+BKDGdqYCHS/Ab2uSiXQs2eDrax42zU3Nnx5LNfxYNLRRgf8eXhDJtlmquGrHlHGdsxc1BvXGGfmEjSoRhqZuVg9UrwLEt6mVYyAQPc8Ju2sjzY1x22G8UpNMzow2NywXyF0AErbzvAQHio87MvhAbXN9k+0w5SDWnHi/QFcAmG07y0s4UgXXRVOJm6a31E20HcZLsebEUkcGuxXyZQBFNXX0BV7phJy1sVT86lL7/ZSK6KJ48zNVshai3wdwrO08oyHQJhVtizQ3/LqUbh6LiBNJxT88iKrHFPphAFW2Mx1IIPPzrtsZS8U/Jy0t3LWkTLBRpbIXa04sdUL5LgB1trMcigARUbctmmr4gO0sYzF8QvxvRwYfg+pbbecpwPGuOisjqYbzbQcpVdLSEo6mEj9Vxc9gZ5rvSLyteqC6Y9aiRhtT4TxVk0zOjKYSv1fFHQjmzYGRCinkour+6gdrkg2BmJ1BwKzGxpdFkomfwZUVCPh5tkAiqu8IVbjdkebE622HGatYMnFaJBlfLZAf+7hIklcqFfLlyMCuO05obg7KjBvyERtVKmux5sTZqrgVwBTbWQpUBeg1keaGK2wHGY0ZixdMiyTjfxXIdwAU01OPsECviyXjl9sOUmpExIkM7Pw5ht5FLRYnh1w3HV1UX287yGjFUok3OzL4MIC32M7iOUGtI/q3SKrh23zyYlcsVX9GKOw+LIL3I4DvoI6J4hhR3BZLJa4v1ldEYsnER1SwCkCxzdY6a6/23x9bHPd7sSGyjI0qla2aZMMSVdwCoOhe0BfVyyOphm8X08IO0UXx5sq88wCAV9rOMkqiIlfEUvGri+m/e5CJiEQWxq8O6JT7w3kZXOfeWKpxoe0gIxGPxytiycR3Ffg9iucG3Wg4Ar0kMrDrr6U0RbNYiIhEUonLFM7dAI62ncdPCpzvyOCKWU1Ns2xnKdTQommJm4bfEw7cNN8CnaZ5pGsXLozZDkL+YaNKZSm6qL7eEb0dQFHeBQUAgV5Sk0x8y3aOQsSa4xfAlVafN203QiEX1aTqv2k7RymIJBNfh+BDtnOMwRSFe3ck1RDEd6xfpCaZnPlMldyngk+g1J5uHdyZobDbGV3cdJLtIOWiJpk8MpKM/1mAr8C//a+DJh4K57uKYT2DOYvikb3a3wngbbazjJ3EXCd3T6R5QVG+80yHx0aVys4x8+dPENf5DYDJtrOMlUAviSYTH7Sd41BizYmPqso1AEpmCp6ofJLTgMemJtnwakA/ZTuHByaK6O1Bf5oSW9JY68jgCgAlu2LpIcyWfP6+SCpRCu9HBtrspqajQ85gK4Dy2zJIcYzrOvcE+f3o2JLG2pwrrQBOsJ3FQ3NEQ38rly3Eyg0bVSo7VRMrfmRpTzB/CK4K6l6r0VT8UlVchRJ8eqMiVxT7wla2zE3Nn+44egNK5bhQHBMK5W8/Zv78IGzl8CLRxU0nac5tQ2ksmDQqCkwTyL3R5oaTbWcpVbNTC6L5UG6lKsp3myDBBAd6RyTVsNh2lAOV+N+B4wdReeu8pfOKdRozHQQbVSor0VTiLYC813YOj1Woym9rkslAbSsRTSW+CMg3bOfwl/4ouijebDtFMXGPzMsgKm+A4hjbWTx2WtWEym/bDnGgSKohgXx+JYp0OxBv6XSo3j1nUTxiO0mpmd2cOD6P0EpA5tnOYp1ggkBvr0nGT7EdZb/aZPwE5PMrUNp/B5IDzx/xU9shyFtsVKmMyCcBXG87hU+ODslgYC6So83x8wB83nYOAyrFlT9IOFdMK9ZaVd0/bjVKdVqg4MJIc/0i2zH2iy2sP1GAu1C8e6P64di8yp+4tYV3apLJmXnFPQBqbGcJkCmOyJ9qGxqs35Cbm5o/3RW5A0DpLyomel401XAtoLW2o5A32KhSOakBULIXJwq8N7qw4RW2c8Sa4y0Yeie1NKZ1HoYC00Tlk7ZzFA2RUl7UxhF1rq1tabG+F+zspqajVZw7imBfRONUcepe7b9Jli0rl4V+fHNCc/MkRwb/DCDQ72hbEnUr9DabW9fUJJPVA6i6DaU53fcg9AI+2S8dbFSJSofA0atsXnzVNDXNU3WKcssfIo8c7w7s/JjNADPj8fH5UP52CPhU4eCWRp7oucx2iGImLS3hPW7/7wC83HaWAGtwMPhdW8UdGbxBoIFfiZjoYNioEpWWE2q2bHqrjcLS0hIOOfkb+QSHyp1ALrG5sFK4EjcAaLBVv2ioXh5dmEjZjlGsIgM7vy2Cs23nCDzBh2LJxnNMl42kGs5HSWxBQ+WMjSpRiRHgMhEx/t2ODO7+rAoaTdclChoFplVOrLCybVQk1XA+RJbZqF2EwnDw63lNTUW/VZlpsebE2YD8l+0cxULF/ZnJvT5jSxprBfoDU/WI/MJGlaj01NUsrH+9yYI1yUQDVLmvKNEwgXyyrq7O6BT46KKG2bw4HbHoQCh3he0QxWRmS/woHVqYsCzWIfDIkeI63zNRSJYtC2nO/SVKeE0OKh9sVIlKkAjeb6xWS0vYEVwPIGyqJlERmLFj8jhjqxvLsmUhuHojeHE6CvKR2Ysa59tOUSwqBuTaEtxeyn8iy6LNiVf6XSayZeNFALhtGpUEXlgSlSR51dzU/OmPt6972u9KNYM7LwDkZL/rEBUfeTeAP5qoFNnc81EIkiZqFWiHQh4R6HqoboZgO4C9gIyD6lQRZ6pCI4AkAJ1uOWs47+pVABZbzhF40eaGZQDeaDvHC+wB8IgA6xXoA/RfUGefABUQneoKpjqKmQpNADLTdlgorpJly07W5cvzfgwfXXTqEUDVF/wYm8gGNqpEhXtCFf8U0S2A7BZIXoGK4YusOQCOA1BhOeN+FYOoOBfAD/0sMq+pabKEnC8B6meZkVN9BCJrVfAoFBvFlWdFsEdD+X5AqsXFFAVmA1Kn0EaBnApOYysGgwA2QLFeBM8Csk+hIQDVAGYBelwgLkaHieA1NcnkkX3p9L/8rFOTTB7piAZh3+J/qOCX6uKezbNq1xR6MT47tSCaR/gsiJ4HRRJWvou6KJpsODOb7rzXfO3iUNvSMg6ufsP2X0oFegH5pTjuXZO27evs7u4eKORzkeYFx4qGzxg+zs6AnVmFx0e29LwdwK/8GFzdcZcJNGj7pT4PIK2ijzjAP6B4EoI9KrpD3ZAjLqbA0RkQOQmqp2LohtFEy5kpINioEh3cAIC/AHKzq+HWvnR6y6F++Jj58ydUTgg3i4TeAuhbAUwxE/NgxPdGdSDsfgZq/WkIAEAED7oqPw0jd8fG9NrsSD47NzV/+qBUnA2VdwA4EwD3VwyOJwX4LeDekdeqVX3p9N5D/fCcRfFIXnGW68o7RbAEdm9AVIWcwXMAXOdnEccZvByKI/2scSiquE8hX+xLd94/ms9vbF+bBXAtgGtnLWo8Luy6X1TgXJj+3Q01+2xUD8Id2PVflrc8ygj0i73pNX9RVXekH+5tW/sEhhrEX81c0lATzutlUFwA43/v9TJZtuy3Xj9VjaTicwRysZdjjsFOQG5Q4Ja+yglpbW3NFfrBeDxe8XSSO+KTAAAgAElEQVSVsxCqb3UEb1Ngmp9BKdiKolF1HL3PVXx6RB8SeQUUr/Ap0gvonwG0eTWaEw6t92osGrWdELm6Qvu/N5Kps1vXrdsN4C4Ad81rarqkP5S/WIBLYe+dscSceHzKhkxmux+Dz1i8YFqlhqzuFwkACukQ0c9n2zP3qOqoHu0O/55/AeAXcxbFI7m8cwVE3w2+x29TtwJf7ZtZ+/uRXNBtWJnpBfAzAD+raao/1Qk5VwB4g28pD2foPORbo1rT1DTPCeEiv8Y/NN0iIhdm27vu9GrEzStX/xPAO2Kpxqsg7v+o4lSvxi7A4uiieHN2Zcazc3qpmLF4wbRKhD5rqfy/VPHRvlWZm0b7N/5AW+7v7APwoZpk/GrHkZ9AYXKbohMimze+CcDvvRxURD4Ptb6H+fNQvTI8gJ9syHSN6tojk8kMAlgBYEU8Hv/vZ6qc8wH9IoAZXgal4lAUjeqmtjUdADpG8ploKlENGGhUVe7Npru+73sdMuVmlfzHhu+8jtr6jo4dAL46Z1H8xpwr12PoKZ1p4Vy1sxjAn/wYvCrnfEgF1X6MXaAnRfWTvasyv/Xq4gX4d6Pz3uii+qtEnesNXygTsBPQz/XOnH31WJ849HWseRDAG2PJxnNU3GsBGJ8Sp5AzRES8PEZfyAnlvgCIjYvT21ytfF9fuz/TmnvaV6+aGY8vDFfJ9TC5F2QeF8PDm8+losJ1PgU7s4RWuFrxjsPNaBqtvnTmoXg83vJsFb6vEHM3fMS5GB42qrHF8RlQOder8UZBIbhmwMlf/uSKtc94Nehw03rNMfPn/7pqYsVXMfTEmDeQywh/2URD9oni/dn2rreOtUl9oQ0rM729M2tfBYivU3APynV9aZDnLZ1XpY7Bk/oBVPGXgVB+fk868xu/GoDsyjVrjtqncUCuROBewi1ZD7n5UH22PfNDL6fF9aRX3wpHGqD6iFdjFk6nz1pYX+fHyDXJ5EzA/J6pAvlJ78zaN/v97u2WTGZPbzrz9uHvoBki55jc77IYTG+pmygqFxgvLPL7yinPn+VXk7pfJpMZ7GnPfAQqH/ezzn/SRV6uNO3mnYsAa09TnxXo67JtXR/yskl9oa3r1u3Otmc+DkeXAOrr8UDBwkaVCHheVM7sSXdd78fgunx5Ptve+TEovuXH+IcmvqxiObBjyrnWticQ+Ubfqsxr/DohvlAmkxnMtnd+WoC3QrHb73pl7t69lXuTfR0dvrz+kF3ZuTHkhs8A8Kgf4x9KyJElfozrYOAjMLyAm0B+0tPeeZFfq5YeSFW1N931GUB/bqIegApHnfcZqlUUqgfGnQ9gquGyt/S2d527/s71/aYKZtOdP4DIN0zVc938hV6MU5NMVgv0Q16MNQqP5sKyoKc9c4eJYtmVmTZn0IkDSJuoR/axUaVytwuO+4qedKfvf/R6V2UuBXCL33UOcJK0tHg/xV/lo56PWZhLs22dn/HrKerB9LR33aKOezaAnSbrlpF7ncqJr326tXuXn0U2dnQ8BUdeC8DXJ4EH0qGVLD01Mx4fDxFPLnQLpYq/ZCsn/JfJmkN1Vaf140KFjOgVoFHXg5ibahxwIuIAYvp33ulqxbtHs2DSWPW2d30W6s/rMgdSOG+RZcvGvJCTSO5cAEd5EGmkMrlKXTz8vq8xmzo7t+b69ZUQ3GOyLtnBRpXKmYrIedmVa9YYKaaq1VJ1PoDNJuoNq4rk9x7n5YA1yfq5AOJejlmgb2bbu75poS4AoLdtzUo4uhRDq0GTdza6WrFsU2vrPhPFsis7NwpgtMEDxPOpvxXj5O0w+85tVkL97xzJ6p1eymQyg6ruhRjaoshvddHmBu4NDSCair8awFyDJf+VC8tbDre6t19UVfNu6CIYuSmp0yObe04f6yhi8h3u/7NxIJRfuqU186yF2tiSyexx3YrXA7LSRn0yh40qlS/FT3vaOv9gsuRjbW07AXzCZE24rqcXyY7Im70crxAC/LE3nfmM6boHyq7MtIngEts5SojriPtOv991PFBPe9ctqviLwZIni4inW62oGr04zcPFO7MrH9xmsOaL9KUzD6m59/1fb6hOoKnhJkhV32/6Cd2BNnd0bBbol4wUEx3TiuQ1yeSRgJ7hVZwC7XRUjbx+cyh96fReCblvA/CUzRzkLzaqVJ4EW52qnJXGpzeduUUEDxor6LoePxmQt3g73mFtVqf/fTamgb2UnrauHwG43XaOUiCQnw6v6m6e43zeYLXJtcnTIl4NNqux8WUATvdqvMNSXJtd1dVurN4huHnn+wD8f6qr2uJ7jYCrq6urhBpt2G/rTWf+aLDeQY2TcdcA2GGg1JiOM5HcG2D4PXWIXrwpnXnMaM2D6FmRedJVea/tHOQfNqpUlhT45qbWB563UltVFfpdYwUdiXk1VGxJYy2Aeq/GK4gr59t+knOgfD70EfB91bHaK4O4wlbx3rbVGQzt1WdEDuGoV2OFQ67Bi1PZlqvSy83UOrzNHR2bAfjfzCiSdXV1tvektGrX1OozYW4RpX6FBma2yvDsp18YKHXyjMULpo32wwI1euNYRW/NtmVM/HcpWF+686+A/tp2DvJHUeyjSuSx5wZ2DlxjM8Dein23VA9U/xjAeN+LqXebZLv5/KsE3k5hPIybs6s6A7dgwuaOjs2xZMMVKmphJefSINAbNnV2bbWaQfRGVX9Wxn5xMQ+/h8BbjH0J1b3K1ntoB+NUTny3m3vO9/eMH374YSvv4waFqwaPM+gve9szG4yVK8Ck7Xs/ufMI5wt+19kaetmobnrW1dVVYkq1ySf/e8Pqmn11qUChfPiSfCj/BgATbWchb7FRpbKjgpu2rltndauRp1u7d0Wa43eJyjkGynm2jYy4ThPE2IK7A44b/n+mio1UHuGrHQx+AgD3XBwNF9fZjpAbDN0aCrs/hYHZReKqJ42qtLSEIwJftrt5CXsHwu6PDNUq2PDCW0YW3ypnAviyD/dLcEMi3zFUq2Dd3d0DCPDiedsnV7/cAapN1RPguxvb12ZN1RuJjR0dT8VSiR8ocJntLOQtTv2lsuOoE4gpIqK4z1Apz57kiOhCr8Y6HFXcuGnVqh5T9UZqaFVKvdJ2jiL1aM+qzFrbITavXv2cQh8yUkzEkxtG0X07T4WJmRhDbra9YArZEVscnwHAs+nqhyT428a2rn8YqVVCHNEmg+V25XLO9wzWGzF1+r8DwNctzsg8NqpUbp7LpjtX2w4BACohUxtWv8yLvVRnNTa+TIF5XgQqgIYdBH5abbgfvwBPjCOmkDttZ9jPAQwtEuQe7ckoDhq9GKcQIvitqVoULG7O4HHm8jgbDYEYu3EMwc82r179nLF6o5Bd+eA2CALxIIK8w0aVys19QVk9Nr8v/wgAE1nk+MHBMU8PCofzTQBMvbK0shjusG/IZLYDcpPtHMXGgdtqO8N+LpyHjRQSZ4Inw6hjqoF4/qh9Grj3w8kMcYwdZzkN9d9qqFZJUZh7oqpq/1WNQoiLn9rOQN5io0plRQSBeJoKDG1YDWiviVrbnT3jxjyIyEkeRCm02K/M1Rob1fzNtjMUm8HK4HwPHXEfNVJItcqbgdyEN+Mc1v2ZTGbQUC0KGlUjx5ko1gRtVfdicMz8+RMAMTM1G/h7b3tXt6FaY9KT7noAwEbbOcg7bFSp3Jh5elIwecJEFUfCY29UVWNjT1JYpVDeKZp9SkNVk+8HsMd2jqIh2BqkVWTFxZOGSo35OygiApHZXoQ5PP2bmToUTDrHSBVHAjO7ophUTamOwtwMp9sM1fGECv5iOwN5h40qlRUVCcQm1fup6FMm6jiD+TE/zVFIbMxBCtO9saPDyH8XLwytQCorbecoFuoiUN9BNzRg6lgbc6MaSySO9mKcQghCXSbqUPDIsmUhQGYZqQXwOBsFyedqjRVziu4VgLttByDvsFGlsuKEJxh5glkogYxq/7SRcpyQF9MOjZwYVbDCRB0vKS+2CueYmUVQqN7w6PYwHClRjPk7mKtyTU3104q8BGz2CZky+8mNM2Fo+8KcSFFMKQ0clZihSv3T9gbnVY1COI7yfFxC2KhSGZFtw/vvBYea2QvQdd0xfddFRGBoqwJxYWa7EE9pxnaCYuGobrWd4YW0tTUHIOd7HRn7ND1HHVON6pb1HR07DNWigBlUNXWcDWyZEd1gqFZJcR0zr+Io9LFie1e9Z0XmSQCBuiFKo8dGlcqH6vO2IxxINbibib/Q0aeeOh6m9m5UFN0dds2HHrGdoXho8BZOUfTbjlAQV481UUYhm03UoaAKGTnOADypy5fnDdUqKeI608wUMrQquveKNTcdgI0qlQ8J3sWoCNR2hkJMnAhPttYoRK5SjKyE7KVwdXUfUBy/S+tEAvc9LBYqhr6HqnwaUcYcV039vedxNlqOmRvHAhTd+RgAVIszN70YG1UqGwrlBfIo5d3xZp6mAnrEc3uKZiGl/YYXVHrGdo5ioK4UxSyCIHKAMe+HXAhxwGO5vBk5zgAeZ6Omauac7CJQr2oUSgR9tjOQN9ioUtkQiGs7Q7FyKwydFIHd3d3dRdrIBHBKaxCJy+/haKmp6fcarHf5ySxDT+t4nI2JoXNysZ7XijU3HYiNKhEdlrrGGtVivnDZazsAlTY11UDAKebvIY2Rmroh4giPs1ES/o4OSYR7m5cKNqpEdFiOosJQqaJaXfAAPDGSv3TsKwcXQqC+r4JMgWbkOFP1f7XtUqVi5pwsrhTpOdnhjeMSwUaViA5LoKb+6JtqiP0wznYAKnGGnhKootJEHQoqM3/vBTzOxsDIk051tEjPycrzcYlgo0pEhyVirFGtMlTHBzrJdgIqbaKGntqLFPH3kDzA4yzoTE1tVS3K35G6MtF2BvIGG1UiOqyBXGi3oVIT4vF4kd7BdabYTkClzTU2vdydbKYOBZGomPl7r+BxNloKQ+dknWqmjsekSHPTi7BRJaLDU2NPVJ2nKiunG6rlmektdRMBNbMBO5UxM99DVTnaRB0KJtfYwnDK42yUxNDvSCDHmKjjOZVa2xHIG2xUieiwKsaPN/VEFQgNzDJWyyMTBsbPhaEFSKh8CZxdRuoIivPilDwhITFynIHH2ai5hp6oqqDozscAAEfn2o5A3mCjSkSHtam1dR9gZoVGcZ2TTNTxkgpOtp2BSp+ImtrEfp6I8MZLmXJcmDnOFEfPicf5ysQoiBibnn2ikToeEhGBStFdR9BLY6NKRAXSzSaqONA6E3W85EIX2s5ApU9c3WSo1MSaZP1sQ7UoYJx+19RxJrlqnGKoVkkRNXYz4SQRKapeIbKo8URAj7Cdg7xRVAcfEdkkRi5eXEjSRB0viSJlOwOVgapJPQBcE6UEcpqJOhQ8GzKZ7QD+ZaSYCx5noyGGbloJJkSb6l9upJZX8i7PxyWEjSoRFUQBIydGgSZqW04rmhX7Is0LjgUw33YOKn3DU/C3mqkmrzJTh4LJzI1JHmejo47bY6xYSM40VssDKu7ZtjOQd9ioElFBHBibdhhy+0OvNFRrzMQNvQ5cSInM2WimjHs231MtY2LqOENLTTJZbahWCRk09fuB62KpqVpjVZNMVosrZ9nOQd5ho0pEhRHHVKMKhZxrqtaYCd5mOwKVE11jpo7MjKUWNJqpRYGjrqHjDONDyL/aUK2SkV354DYAz5uoJYLFwzOHAs/BwGshmGA7B3mHjSoRFSQv7uOmaolgaXTRqYFfDCHS3BgH0GI7B5UPgaw0VcvVIrphRJ4SdYwdZ4o8j7PRMXVOdhx13m6o1tiIfNJ2BPIWG1UiKky+8kEAg4aqjYOO+5ChWqMm6l5qOwOVlzAGVgJQM9Xk3HlL51WZqUVBMnHHngyAvUaKibxuVmPjy4zUKi1rTRVS4KPS0hI2VW80Yqn6MwA02M5B3gr0QUdEwdGXTu+NphIPAzC0AqD+V21Ly/eGF5AJnFiqcSGAN9vOQeXl8fZ1T0dTiX8CON5AuaMHd0x9F4DrDNQakZpk8kgn1F/rdx3JYU/PqjWP+l0naLq7uwciycRqEZxuoFx1OJz/MICvGKg1Iic0N0/aK3uP87uOm5eBvnTmoZF8RkS7VOVCvzIdUC0W7d+5DMBvzNQbGRFxIsn4lbZzkPfYqBJRwQSaVoiZRlVxjDu4+xMAvm6k3giIiBNdGP8ehIsokQ26AhATjSpU8f+kpeUX2tqaM1GvUI4z+D24znv8rqOOXgvAUDMQLDJ0nJ1uopbCuXh6S933n27t3mWiXqH2YuCzcJ1P+13HEf0zgNeN5DMKZ5WxyRUAVOTL85bOu2X9nev7jRUtUCRV/24o4rZzkPc49ZeICifOvUbrqX42iIs41CTrP64CLjRDVqjqLQbLHR/t3/VBg/UOa86ieAQKI+/MicitJuoEkeuaPM50+viBat8bwpGY19Q0GaofNlFLdOTHWW971yMAnvQhzsHMHnh+yicM1itIpHnBsVD5ju0c5A82qkRUMJV9rQDyBktOFA1dG6RtMmqS8VME8lXbOah89c2acw+AJ0zVU8GXZixeMM1UvcMZzMvnAVQYKLWjYvLzfzNQJ5D6OtY8CODvpuopcEkkFZ9jqt7h9IfdTwKYYqBUvj+c/9NIP6SqCuAeH/IcnMjno4ubTjJa8xBExBENXw+A7ziXKDaqRFSw4SXxVxguuzS6MH6R4ZovaWZL/ChH5I8AxtnOQuVLly/PQ/FrgyVfVpUPXWOw3kFFmusXieB9hsrdFsRpjiap4JcGy40TyC9l2bKQwZovqTYZP0FUP2WkmKD1yRVrnxndR3Gb13EOoxr5/K+CsshaZGH9VwB9le0c5B82qkQ0Igq52XhNwXdjzXGr28DUJJPV4QG5BcBsmzmIAOMNBBR4Y6Q5bnUl7mPmz58g6vwUMPNuuIjeYKJOkIVzod8AMPl+cjKyeePnDdZ7EWlpCbsi1wIw0oyJO/rjbLBf/wLFbi/zFOC0ge1TrrM90ymSajgfIp+xmYH8x0aViEYknHdugbltavarVHVuqWmqP9VwXQDAzHh8vCODfwKw2EZ9ogP1tnd1A+gyWVNUfhhJ1lt5eiEiUjWx8hcATjRUckO2fc19hmoF1saOjqcA3Gm0qMjl0VTDu4zWfIGa/l3fA9Bspppsk6pJfxjtp7dkMnvUEdNPVQHIOyOpxNfM1x0SbY6fJ9BrbdUnc9ioEtGIDF+4WDgx6hFOKHRfdGEiZbLqjMULpoXHyd0AzjRZl+hwVIwvIFIh4vy+JtmwxHBdRJPxL8PgdlAK3DD8DmDZUxg/zgTQ62LJxnMM10UsmfiICD5qqp6K/masW7CFxFLDpvrpaCrxQxEx2ktEUvH/hsr1AKxPESf/sVElopFT+R9LhY+Ag/+NJhNGViGNLqqvr8w7nVAYbY6JCtF3bOxmABsNl53kiN4VaW54m6mC0WT8SwpcZqoegL35Sv2pwXqB1tveuUIhHYbLVqq4v481J4w1jZFUw0UquMpUPQCuK84PxzpIT1vmfgCPeZBnNC6OJOtvM7HY2sx4fHwslbhehm6csH8pE/xFE9GIZdOd9wLIWCpfDcH/RJrjf5i5pKHGjwLzls6riqQavgzXWQVIzI8aRGOly5fnLTztAoAqUb0pmopfM72lbqJfRWTZslAslfgORIy+syiQn29pzTxrsmbQOSrftFA2pIqroqnE72e2xI/ys1A0Fb9UoD+CofefMVTo9s0rV/9zrOOoqirkSi8yjY68tjIf+rufT8Brkg1LwlXyoALn+1WDgomNKhGNiqpa3aJFVM4J5/SxSKrhyzXJ5JFejFlXV1cZTSY+OLB96nqBfg5mtsAgGjXV8A2APG2nunygeqC6O5pqeJfX0//mLIpHIk9s+qsC/+3luAVw83nne4ZrBl52VedtsPfU7i3hAemOpBouisfjnv5NnrF4wbRoKvF7QL4Bg00qAKijnt1kmt7v/hpA1qvxRuFYFfcP0VTibzWL4p7tMR5dVF8fTcX/5IjeByAwWxeROWxUiWhU+latuQ1At+UY4wX6OUcG+6Kp+DWR5vpFo7mQmbWo8bhIquHLO6dU90LwPwB8eVJL5LW+dHqvivsFixGigN4YScb/Hm2OnzfWbStqkskjo8n4l3KuPAzFK7wKWSgVuamvo2O96bpBp6quAp+2GOFogV79TJU8Gkk1XDTWJ/nTW+omxpINn6zMhx4F8BaPMo5Ea3Zlps2rwTKZzKDCylPvA7U4rnTEkomOaHP8vNlNTUePdIATmpsnRVKJc6OpxP1wnQwgr/UjKBWHsO0ARFScVFUjycTXRPAb21kAjAfkA6LygWcqsTuaSrQD8hhUN8GRJwDd5ggGc3nscVQmQ9wjIFIL6ImALA5xyxkqYn3Hzr42smXTBwAssBjjFKj8fGD71CujqcRtAP43lA+tHF587aBExKlJxk9yBI2qeKUjeAMgtvYpzrkiX7JUO/B627tuizUn/qqKV1uMMUegV1cPVH81mmy4TeDenXPDKzZ3dGw+1IdERGpT8ePyLhoBOaNaqt+kopNMhX4RRz2fzh6qnHC9O7DrcwBmeD32SKmgESqN+VBeo6lEN6BrIM4mqG6CutugoX2u6I5wCOPdvDsREjpWoMcDqFcgKZzNRMPYqBLRqPWtyvwukkxcAmi97Sz/JpgA4CxAz4IAGF6401XAEQCi+L8ZXla3gSPyhC5fno8lGy5W0TbYP6iPBnAhgAvzoTyiqcR2QB6H6DYotkPEhWoVIEcAOjWSjEcBTA7G+rr6Ky/eGSxlOXE+FlL3IQCVlqNMheh5CjkvFMojmkzshmA9BM+qix3iSB6qlQJMheCISDJRk1c9YujbYfdgE8Ffezx8mrrfptbWfbHm+OdVJUjbtgiAUwA5Zf+5GOIAonAAuO7w/w21/FuhoOLUXyIaNVV1BXIxbJ/5icpcT7ozDcGNtnO8hCmA1g9P430zVN8K4PWALgJwCoDJduP92458Pny57RBBN9TIS/De4R26QflyKF4hgjcNH2dvUGCJKk4F9AjbEYcN5l39lF+DZ9vXXA/D+ysT+YmNKhGNSU/76lVQ+aXtHERlT/o/DmiP7RjFSCGfOdz0URriVE74IoAHbOcoRgq5si+deci38VVdFeciAK5fNYhMYqNKRGMWcp1LAWy3nYOonGVXPrjNVXkbgAHbWYqJQjr60l2W9oYuPptaW/e5+dDbAOywnaXI/CNUOcH31fJ721ZnBPiF33WITGCjSkRjNrxgysW2cxCVu750V6eoXGY7RxHZqXnnParKJ1Aj0NfRsV5ELrKdo4gMuI6et6m1dZ+JYur0XwK729UQeYKNKhF5ItvedaMAN9jOQVTusqu6viPAH23nKAYq8gFuRzM6PW2dv4aCT6ILobi0b2Vmtaly2ZUPbnPEPRfAoKmaRH5go0pEntm3a+BiqD5iOwdROVNVzWvFO1Rxn+0sQSaQn/S2df7Odo5i1jur9qNQXW47R7Dpn3tXZX5guuqmtjUdAD5nui6Rl9ioEpFntq5btxuOswzl9b7qXl6oUdD0pdN7q9zQGwBZYztLQLVWTNn2Cdship0uX56vnLr9PQD+13aWIFLousp8+J2qdjZg6k1nvlWGsyvuBcCF0UoEG1Ui8lS2rfNhuHgNFLttZzFAFXif64Z515oCZ31Hx45cpftqAI/azhIkCl0X7tdz1t+5vt92llKw/s71/f27Bs4BsMp2lmDRHieEs9d3dFhbdEpVVSonvh1DzVs5uHdav54NgDO7SgQbVSLyXHZVV7uI+3oARhaOsOhLve1dN9kOQXQwW1ozz1Zg4HRwb8Uhik0Qd+mGTKacZn34buu6dburpepV4JNVAIAAz4REXt2zIvOk7SybWlv39e8aeAME7baz+OwfcPrfmslk+F5uCWGjSkS+6Glf8zcRvBml2qyq/KI3nbnCdgyiw3m8fd3Teyv3niGCv9rOYtmjeTe0uLdt7RO2g5Six9radk7avve1KvIb21ks2yyqize2df3DdpD9tq5btzu8T18DoNN2Fl8Itrr50OuyKx/cZjsKeYuNKhH5pqet605X5dUosXdWBbipt2rCBbbeOyIaqadbu3dlKya+DtBrbWexQ9YMhPJLNnd08N01H3V3dw/0tXe9C8CXbGexQrFJoadvSmcesx3lQBsyme39uwbOUMVfbGfx2FOAvIKrd5cmNqpE5Ku+dOf9IcdZAsD6FCgvCHBDNp15p7a25mxnIRoJbW3N9abXfFAEFwPYazuPQb+rlsqWJ1esfcZ2kHKgqppt7/qiiLwLJXaT8jDuHgjnG3vbMxtsBzmYrevW7Z68Y+8bS+ept24JCZZk2zoftp2E/MFGlYh8t3Hl6nUSdlIA/m47y5govpVNZy5QVdd2FKLRUFXtaev6EUQSInjQdh6f7QXkwmx717mPtbXttB2m3PS0df7accMvB9BmO4vPclD9TG86c3Yx3Az591Nv1a8DKOZZQQ/DcQI1xZq8x0aViIzouX/1Jqdy4kIVXG07yyjsA+Td2XTXp9ikUinItnU+XDH5+QYBvgugFGcHdEEkkW3vLNOpzsGwadWqnt6ZtacL9HKU5noFjzriLsqmM98opnODqmo2nfmsqns2IE/bzjMKt1dL1cLsys6NtoOQv9ioEpExm1pb9/W2dX1U1HkTgOds5ymEAr2uYkm2vfNXtrMQeWn9nev7e9q7LhHXPRXQP9vO45GdUPl478zahZwOGAy6fHm+pz3zlRDyJwjwWxT3U7z9+iHyhUnb9758U9uaDtthRqs3veYuZxDzUTyrNedV5Mu96cw5nCVRHtioEpFxPenVt+ZzzvEC/TGAvO08B6Xyi4p+PbUv3VWaKyUSAehZtebRbHvmdVB5BYp3er4L4MZcWE7Opjt/oMuXB/fvSpna2L4229Pe9Q5X0YTinQ6sAvwxJJifbeu8oru7e8B2oLHa1Nm5tTedeW78zNQAAAhJSURBVJWKnKtAr+08h7ARjp7e29b5+WJ6ek1jw0aViKzYvHr1cz3/v737C63zrAM4/nvenOZPR7dVJiibLWnd2MC1rGZuzEaNbIKCjLJNEFFE0JupIApTvHC3IojblWzXioJzzCEM3CjSNpom2R+6G2W1S9KiboPN9U/S5OR9vGgYWxWx7c7OL+nnA7kL7/OD5Pz5vud5z3to5v621luixNP9nuedyiu11n1zk4e/6n6LXC7mJg8/Mz85s6et5bNr3wy6Hj75qrXUx6OUXXOHpr9y4o+HF/o9EP/bwuT04blD0+O1tJ+IiN/Eetl6XuLptsbtLx+a3rfRroustdb5g4d/vXq23hTnvrH5VL9nepsaEY8sDi7unjsws15PcHCROv0eALi8LUzOHImIu7btvW2sqe13a8S90b/nplMl4qGBs+1PBCqXo7VbLj0VEU9dN37bDU1tv11qfDkiruzzaOdbqjV+Udv24YU/z270L4XakOYPzh6IiAM7x8e2ddtyf0R8LSKu6fNY51spEY9FNA+/fHDqT/0eptdOzMyciYgHt4/veijawW9ExLciyrV9HOmZGuUH84cOT/dxBvpIqK5zW95ceuLk1uZ9vV5naMvimV4evxnsjrbd1dLLNQZXNqfbCtY9W7/fGVn+Ua/XOf7BG9/s9RqXav7g1ExEfHHn+NgDK23z9SbqF2rEDe/R8kcj4pFozj768kXcMPz41NTRbXtv7unjcPnN0tMtZtcstU++OrLc8+eSwR4/l1yMZqh7Xa+ff0bqlevjU6O3OX5g6q8R8c3RiYnvra6c+kypcV9EfD4irurjWC9GKb/sbmofPbF/5rU+znFBBlcHPrm86cxAL9doOgPr4RPw/3D0wMx8RDxQJiZ++KHlk58uEfdGlH3R32h9qUb5Va2dny9MTp7o4xx9MXfudfDHY2NjP31tsN5XS/lSRNwZEYPvwfKLEfFYLc1Da+8LLvwAg4v3jHSbTe/yXO8wf/DIG708fudsvak7stzTna8Z3xefr2zU+9Vv//itD0ZEzwMganxnbnL6Zz1fBy5DO8Zv29227X014q6I2BPv3sm1NqI8FyX+UGv81tla+P9c/7nrh1b+ddWdbTQTJeodEfHR6O2b1+UoMV0inlht28cXJmdf6uFaJFEmJjrblk5/qjR1okbsjYixiNjcwyW7EfF8qfV3bSmPzx+afrGHa61L28d3ba3t8N1N1LvX/ibv3omEEv+IWp+ptfx+aWjxyVf2v5hp6zF9JFQvlVCF98QHdu++YnjLpo/VaG6vtX64idhZI3ZExPsjYvi8X68R5Y2IejoiTse5L4g4VqP+pYn6fBlsnz22/7meng2Fy8HoxMRw2z05Vmu5NSJ2lhqjce5xORoRQxdwqFMRsRAlTkTE0ahltrTt7DUrcWRmZmalB6OzjoyNjW3650jsGajl1lrL9VHraJTYEef+10Yu4FBnImKh1vh7RByNUp6tTTvb6Wx54dj+/Rvx9jk9UUop22/fc2MMNHfUiI9EjR0RsTMirov/vuPiTIk4XSNO1iivNFGPRcTfaq0vtG3n+eNTUy/VjRokXBKheqmEKqSwfXzX1oiI7uLg2bXrbIA+KaWUbXtvvjpieGvprg7VTmwubVxV24GmNrFcmtXT7WpZbgaa0yN18FW3muBijU7ccnUsDV8dZWW4HahXlFqurKvNQNOp3TbakwPR6a5GPRmx9PrcRVzawYW7dmxsc2dkeSjirW3EcFFcowpsCF4MIY+1T0deX/uBnlnbHWOHTCJrJ4udMOaSuT0NAAAAqQhVAAAAUhGqAAAApCJUAQAASEWoAgAAkIpQBQAAIBWhCgAAQCpCFQAAgFSEKgAAAKkIVQAAAFIRqgAAAKQiVAEAAEhFqAIAAJCKUAUAACAVoQoAAEAqQhUAAIBUhCoAAACpCFUAAABSEaoAAACkIlQBAABIRagCAACQilAFAAAgFaEKAABAKkIVAACAVIQqAAAAqQhVAAAAUhGqAAAApCJUAQAASEWoAgAAkIpQBQAAIBWhCgAAQCpCFQAAgFSEKgAAAKkIVQAAAFIRqgAAAKQiVAEAAEhFqAIAAJCKUAUAACAVoQoAAEAqQhUAAIBUhCoAAACpCFUAAABSEaoAAACkIlQBAABIRagCAACQilAFAAAgFaEKAABAKkIVAACAVIQqAAAAqQhVAAAAUhGqAAAApCJUAQAASEWoAgAAkIpQBQAAIBWhCgAAQCpCFQAAgFSEKgAAAKkIVQAAAFIRqgAAAKQiVAEAAEhFqAIAAJCKUAUAACAVoQoAAEAqQhUAAIBUhCoAAACpCFUAAABSEaoAAACkIlQBAABIRagCAACQilAFAAAgFaEKAABAKkIVAACAVIQqAAAAqQhVAAAAUhGqAAAApNLp9wA905TZaOsjvV+oHOn9GgAAAJePUmvt9wwAAADwFlt/AQAASEWoAgAAkIpQBQAAIBWhCgAAQCpCFQAAgFSEKgAAAKkIVQAAAFIRqgAAAKQiVAEAAEhFqAIAAJCKUAUAACAVoQoAAEAqQhUAAIBUhCoAAACpCFUAAABSEaoAAACkIlQBAABIRagCAACQilAFAAAgFaEKAABAKkIVAACAVIQqAAAAqQhVAAAAUhGqAAAApCJUAQAASEWoAgAAkIpQBQAAIBWhCgAAQCpCFQAAgFSEKgAAAKkIVQAAAFIRqgAAAKQiVAEAAEhFqAIAAJCKUAUAACAVoQoAAEAqQhUAAIBUhCoAAACpCFUAAABSEaoAAACkIlQBAABIRagCAACQilAFAAAgFaEKAABAKkIVAACAVIQqAAAAqfwbxwQtj3G1AikAAAAASUVORK5CYII=\" height=\"30px\"/>\n        </div>\n    "}}]}}],"defs":[{"type":"model","name":"ReactiveHTML1"},{"type":"model","name":"FlexBox1","properties":[{"name":"align_content","kind":"Any","default":"flex-start"},{"name":"align_items","kind":"Any","default":"flex-start"},{"name":"flex_direction","kind":"Any","default":"row"},{"name":"flex_wrap","kind":"Any","default":"wrap"},{"name":"gap","kind":"Any","default":""},{"name":"justify_content","kind":"Any","default":"flex-start"}]},{"type":"model","name":"FloatPanel1","properties":[{"name":"config","kind":"Any","default":{"type":"map"}},{"name":"contained","kind":"Any","default":true},{"name":"position","kind":"Any","default":"right-top"},{"name":"offsetx","kind":"Any","default":null},{"name":"offsety","kind":"Any","default":null},{"name":"theme","kind":"Any","default":"primary"},{"name":"status","kind":"Any","default":"normalized"}]},{"type":"model","name":"GridStack1","properties":[{"name":"ncols","kind":"Any","default":null},{"name":"nrows","kind":"Any","default":null},{"name":"allow_resize","kind":"Any","default":true},{"name":"allow_drag","kind":"Any","default":true},{"name":"state","kind":"Any","default":[]}]},{"type":"model","name":"drag1","properties":[{"name":"slider_width","kind":"Any","default":5},{"name":"slider_color","kind":"Any","default":"black"},{"name":"start","kind":"Any","default":0},{"name":"end","kind":"Any","default":100},{"name":"value","kind":"Any","default":50}]},{"type":"model","name":"click1","properties":[{"name":"terminal_output","kind":"Any","default":""},{"name":"debug_name","kind":"Any","default":""},{"name":"clears","kind":"Any","default":0}]},{"type":"model","name":"ReactiveESM1","properties":[{"name":"esm_constants","kind":"Any","default":{"type":"map"}}]},{"type":"model","name":"JSComponent1","properties":[{"name":"esm_constants","kind":"Any","default":{"type":"map"}}]},{"type":"model","name":"ReactComponent1","properties":[{"name":"use_shadow_dom","kind":"Any","default":true},{"name":"esm_constants","kind":"Any","default":{"type":"map"}}]},{"type":"model","name":"AnyWidgetComponent1","properties":[{"name":"use_shadow_dom","kind":"Any","default":true},{"name":"esm_constants","kind":"Any","default":{"type":"map"}}]},{"type":"model","name":"FastWrapper1","properties":[{"name":"object","kind":"Any","default":null},{"name":"style","kind":"Any","default":null}]},{"type":"model","name":"NotificationArea1","properties":[{"name":"js_events","kind":"Any","default":{"type":"map"}},{"name":"max_notifications","kind":"Any","default":5},{"name":"notifications","kind":"Any","default":[]},{"name":"position","kind":"Any","default":"bottom-right"},{"name":"_clear","kind":"Any","default":0},{"name":"types","kind":"Any","default":[{"type":"map","entries":[["type","warning"],["background","#ffc107"],["icon",{"type":"map","entries":[["className","fas fa-exclamation-triangle"],["tagName","i"],["color","white"]]}]]},{"type":"map","entries":[["type","info"],["background","#007bff"],["icon",{"type":"map","entries":[["className","fas fa-info-circle"],["tagName","i"],["color","white"]]}]]}]}]},{"type":"model","name":"Notification","properties":[{"name":"background","kind":"Any","default":null},{"name":"duration","kind":"Any","default":3000},{"name":"icon","kind":"Any","default":null},{"name":"message","kind":"Any","default":""},{"name":"notification_type","kind":"Any","default":null},{"name":"_rendered","kind":"Any","default":false},{"name":"_destroyed","kind":"Any","default":false}]},{"type":"model","name":"TemplateActions1","properties":[{"name":"open_modal","kind":"Any","default":0},{"name":"close_modal","kind":"Any","default":0}]},{"type":"model","name":"BootstrapTemplateActions1","properties":[{"name":"open_modal","kind":"Any","default":0},{"name":"close_modal","kind":"Any","default":0}]},{"type":"model","name":"TemplateEditor1","properties":[{"name":"layout","kind":"Any","default":[]}]},{"type":"model","name":"MaterialTemplateActions1","properties":[{"name":"open_modal","kind":"Any","default":0},{"name":"close_modal","kind":"Any","default":0}]},{"type":"model","name":"request_value1","properties":[{"name":"fill","kind":"Any","default":"none"},{"name":"_synced","kind":"Any","default":null},{"name":"_request_sync","kind":"Any","default":0}]},{"type":"model","name":"holoviews.plotting.bokeh.raster.HoverModel","properties":[{"name":"xy","kind":"Any","default":null},{"name":"data","kind":"Any","default":null}]}]}};
  const render_items = [{"docid":"bb9d700d-1655-44d2-b3f8-d91673903591","roots":{"d24b945a-e234-4c5b-8045-ec79d3bc41ab":"a0a51ef5-0434-4bc3-9252-8e431584d241"},"root_ids":["d24b945a-e234-4c5b-8045-ec79d3bc41ab"]}];
  void root.Bokeh.embed.embed_items_notebook(docs_json, render_items);
  }
  if (root.Bokeh !== undefined) {
    embed_document(root);
  } else {
    let attempts = 0;
    const timer = setInterval(function(root) {
      if (root.Bokeh !== undefined) {
        clearInterval(timer);
        embed_document(root);
      } else {
        attempts++;
        if (attempts > 100) {
          clearInterval(timer);
          console.log("Bokeh: ERROR: Unable to run BokehJS code because BokehJS library is missing");
        }
      }
    }, 10, root)
  }
})(window);
</script>
</div>
</div>
<p>As for selling opportunities, stocks trading near their 52-week highs may be overvalued or due for a correction. A good example is GameStop (GME) in 2021. The stock rapidly rose and hit new highs, but that did not mean it was fundamentally strong. In fact, it was highly risky. Many people who bought the stock believing the price would continue to rise eventually lost money. Clearly, GameStop had become overvalued, and the market eventually corrected the price.</p>
<div id="9e31ad2e" class="cell" data-execution_count="3">
<details class="code-fold">
<summary>Show the code</summary>
<div class="code-copy-outer-scaffold"><div class="sourceCode cell-code" id="cb3" style="background: #f1f3f5;"><pre class="sourceCode python code-with-copy"><code class="sourceCode python"><span id="cb3-1">plot_gamestop <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span> (pl.from_pandas(data.reset_index())</span>
<span id="cb3-2">    .pipe(select_ticker, ticker<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span><span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">'GME'</span>)</span>
<span id="cb3-3">    .hvplot.line(x<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span><span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">'Date'</span>, y<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span>[<span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">'Close'</span>],</span>
<span id="cb3-4">                 title<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span><span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">'GameStop stock fluctuations'</span>,</span>
<span id="cb3-5">                 xlabel<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span><span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">' '</span>, ylabel<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span><span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">' '</span>, height<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span><span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">400</span>,</span>
<span id="cb3-6">                 legend_cols<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span><span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">1</span>, legend<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span><span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">'top_left'</span>, legend_opts<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span>{<span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">'title'</span>:<span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">''</span>})</span>
<span id="cb3-7">).opts(hooks<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span>[format_y_axis])</span>
<span id="cb3-8"></span>
<span id="cb3-9">font <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span> <span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">'Harmonia Sans Pro Cyr'</span></span>
<span id="cb3-10"></span>
<span id="cb3-11">bokeh_plot <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span> hv.render(plot_gamestop, backend<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span><span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">'bokeh'</span>)</span>
<span id="cb3-12">bokeh_plot.title.text_font <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span> font</span>
<span id="cb3-13">bokeh_plot.title.text_font_size <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span> <span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">'18pt'</span></span>
<span id="cb3-14">bokeh_plot.title.align <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span> <span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">'left'</span></span>
<span id="cb3-15">bokeh_plot.background_fill_color <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span> color_honeydew</span>
<span id="cb3-16">bokeh_plot.border_fill_color <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span> color_honeydew</span>
<span id="cb3-17">bokeh_plot.outline_line_color <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span> color_honeydew</span>
<span id="cb3-18"></span>
<span id="cb3-19">logo_div <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span> Div(</span>
<span id="cb3-20">    text<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span><span class="ss" style="color: #20794D;
background-color: null;
font-style: inherit;">f'''</span></span>
<span id="cb3-21"><span class="ss" style="color: #20794D;
background-color: null;
font-style: inherit;">        &lt;div style="</span></span>
<span id="cb3-22"><span class="ss" style="color: #20794D;
background-color: null;
font-style: inherit;">            width: </span><span class="sc" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">{</span>bokeh_plot<span class="sc" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">.</span>width <span class="kw" style="color: #003B4F;
background-color: null;
font-weight: bold;
font-style: inherit;">or</span> <span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">700</span><span class="sc" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">}</span><span class="ss" style="color: #20794D;
background-color: null;
font-style: inherit;">px;</span></span>
<span id="cb3-23"><span class="ss" style="color: #20794D;
background-color: null;
font-style: inherit;">            height: </span><span class="sc" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">{</span>LOGO_H <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">+</span> <span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">40</span><span class="sc" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">}</span><span class="ss" style="color: #20794D;
background-color: null;
font-style: inherit;">px;</span></span>
<span id="cb3-24"><span class="ss" style="color: #20794D;
background-color: null;
font-style: inherit;">            position: relative;</span></span>
<span id="cb3-25"><span class="ss" style="color: #20794D;
background-color: null;
font-style: inherit;">            top: -</span><span class="sc" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">{</span>LOGO_H <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">+</span> <span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">40</span><span class="sc" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">}</span><span class="ss" style="color: #20794D;
background-color: null;
font-style: inherit;">px;</span></span>
<span id="cb3-26"><span class="ss" style="color: #20794D;
background-color: null;
font-style: inherit;">            display: flex;</span></span>
<span id="cb3-27"><span class="ss" style="color: #20794D;
background-color: null;
font-style: inherit;">            align-items: center;</span></span>
<span id="cb3-28"><span class="ss" style="color: #20794D;
background-color: null;
font-style: inherit;">            justify-content: flex-end;</span></span>
<span id="cb3-29"><span class="ss" style="color: #20794D;
background-color: null;
font-style: inherit;">            padding-right: 40px;</span></span>
<span id="cb3-30"><span class="ss" style="color: #20794D;
background-color: null;
font-style: inherit;">            background-color: transparent;</span></span>
<span id="cb3-31"><span class="ss" style="color: #20794D;
background-color: null;
font-style: inherit;">            pointer-events: none;</span></span>
<span id="cb3-32"><span class="ss" style="color: #20794D;
background-color: null;
font-style: inherit;">        "&gt;</span></span>
<span id="cb3-33"><span class="ss" style="color: #20794D;
background-color: null;
font-style: inherit;">            &lt;img src="</span><span class="sc" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">{</span>logo_data_uri<span class="sc" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">}</span><span class="ss" style="color: #20794D;
background-color: null;
font-style: inherit;">" height="</span><span class="sc" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">{</span>LOGO_H<span class="sc" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">}</span><span class="ss" style="color: #20794D;
background-color: null;
font-style: inherit;">px"/&gt;</span></span>
<span id="cb3-34"><span class="ss" style="color: #20794D;
background-color: null;
font-style: inherit;">        &lt;/div&gt;</span></span>
<span id="cb3-35"><span class="ss" style="color: #20794D;
background-color: null;
font-style: inherit;">    '''</span></span>
<span id="cb3-36">)</span>
<span id="cb3-37"></span>
<span id="cb3-38">final <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span> column(bokeh_plot, logo_div, spacing<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span><span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">0</span>)</span>
<span id="cb3-39">show(final)</span></code></pre></div></div>
</details>
<div class="cell-output cell-output-display">

  <div id="c054b12b-4d66-4996-b309-8b02e407469c" data-root-id="1890f485-3057-46ff-b983-989859c8b78b" style="display: contents;"></div>
</div>
<div class="cell-output cell-output-display">
<script type="application/javascript">
(function(root) {
  function embed_document(root) {
  const docs_json = {"9d96df8a-5332-47d4-9298-e2895c6ca8f8":{"version":"3.9.1","title":"Bokeh Application","config":{"type":"object","name":"DocumentConfig","id":"5d752888-2d26-459c-810a-c15ea709496f","attributes":{"notifications":{"type":"object","name":"Notifications","id":"dd55c3a8-9161-495c-9863-0feeb58d3f71"}}},"roots":[{"type":"object","name":"Column","id":"1890f485-3057-46ff-b983-989859c8b78b","attributes":{"children":[{"type":"object","name":"Figure","id":"52b85cbc-9fe9-4965-8f72-82f3c39bdc5c","attributes":{"width":700,"height":400,"sizing_mode":"fixed","align":"start","x_range":{"type":"object","name":"Range1d","id":"4d0f3f63-0117-452d-b507-8a632941c386","attributes":{"name":"Date","tags":[[["Date",null]],[]],"start":1609718400000.0,"end":1781049600000.0,"reset_start":1609718400000.0,"reset_end":1781049600000.0}},"y_range":{"type":"object","name":"Range1d","id":"9ea124fb-2963-44fe-bd18-3044e4ff1403","attributes":{"name":"Close","tags":[[["Close",null]],{"type":"map","entries":[["invert_yaxis",false],["autorange",false]]}],"start":-3.944000244140625,"end":95.13400268554688,"reset_start":-3.944000244140625,"reset_end":95.13400268554688}},"x_scale":{"type":"object","name":"LinearScale","id":"36ecf8b4-9b35-4838-a4aa-7f27a2de351e"},"y_scale":{"type":"object","name":"LinearScale","id":"faf9c7e1-e31c-4711-ab19-47b8a7a571e9"},"title":{"type":"object","name":"Title","id":"a14fcddb-06c3-4939-b775-7e9cc8c7c080","attributes":{"text":"GameStop stock fluctuations","text_font":"Harmonia Sans Pro Cyr","text_font_size":"18pt"}},"outline_line_color":"#F0FFF0","renderers":[{"type":"object","name":"GlyphRenderer","id":"4e1ccc80-2f0b-48fb-a255-ad96c0945597","attributes":{"data_source":{"type":"object","name":"ColumnDataSource","id":"fca9c138-246c-4c1f-b3a5-aef67e57d965","attributes":{"selected":{"type":"object","name":"Selection","id":"4392aa7d-c4c1-4525-8736-c10db0fe1f3b","attributes":{"indices":[],"line_indices":[]}},"selection_policy":{"type":"object","name":"UnionRenderers","id":"82fd4bd2-25c5-41bc-8089-79cc4beca646"},"data":{"type":"map","entries":[["Date",{"type":"ndarray","array":{"type":"bytes","data":"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"},"shape":[1365],"dtype":"float64","order":"little"}],["Close",{"type":"ndarray","array":{"type":"bytes","data":"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"},"shape":[1365],"dtype":"float64","order":"little"}]]}}},"view":{"type":"object","name":"CDSView","id":"fe245268-87bf-4f3d-8e38-62de1a89b41e","attributes":{"filter":{"type":"object","name":"AllIndices","id":"3cfa0312-a493-49f6-9346-4d6b6233afd4"}}},"glyph":{"type":"object","name":"Line","id":"f44d9e74-2c57-484d-a53a-4a78878afd42","attributes":{"tags":["apply_ranges"],"x":{"type":"field","field":"Date"},"y":{"type":"field","field":"Close"},"line_color":"#30a2da","line_width":2}},"selection_glyph":{"type":"object","name":"Line","id":"3a35a24b-2209-458f-a69a-55d0d5a3b42f","attributes":{"tags":["apply_ranges"],"x":{"type":"field","field":"Date"},"y":{"type":"field","field":"Close"},"line_color":"#30a2da","line_width":2}},"nonselection_glyph":{"type":"object","name":"Line","id":"17ef4ada-e36d-417e-8457-a0e5eb3b3d0a","attributes":{"tags":["apply_ranges"],"x":{"type":"field","field":"Date"},"y":{"type":"field","field":"Close"},"line_color":"#30a2da","line_alpha":0.1,"line_width":2}},"muted_glyph":{"type":"object","name":"Line","id":"ccde6638-e5dc-448d-bbad-58538071a435","attributes":{"tags":["apply_ranges"],"x":{"type":"field","field":"Date"},"y":{"type":"field","field":"Close"},"line_color":"#30a2da","line_alpha":0.2,"line_width":2}}}}],"toolbar":{"type":"object","name":"Toolbar","id":"9b1ac5f5-6e1f-40df-a210-325e05fe9148","attributes":{"tools":[{"type":"object","name":"WheelZoomTool","id":"61888589-b21d-4236-9980-bdb2da8a1292","attributes":{"tags":["hv_created"],"renderers":"auto","zoom_together":"none"}},{"type":"object","name":"HoverTool","id":"c2408640-c4a8-41ff-bde1-5b8b0293a969","attributes":{"tags":["hv_created"],"renderers":[{"id":"4e1ccc80-2f0b-48fb-a255-ad96c0945597"}],"tooltips":[["Date","@{Date}{%F %T}"],["Close","@{Close}"]],"formatters":{"type":"map","entries":[["@{Date}","datetime"]]},"sort_by":null}},{"type":"object","name":"SaveTool","id":"6f646371-3e6a-4927-8c71-5925bac165ef"},{"type":"object","name":"PanTool","id":"bc6dd8d9-f2a9-485d-8e70-1af999512a12"},{"type":"object","name":"BoxZoomTool","id":"64e9f25a-a80c-477c-93bf-4ae27090109d","attributes":{"overlay":{"type":"object","name":"BoxAnnotation","id":"73a6819f-88a2-4f37-af7a-b861bad0b361","attributes":{"syncable":false,"line_color":"black","line_alpha":1.0,"line_width":2,"line_dash":[4,4],"fill_color":"lightgrey","fill_alpha":0.5,"level":"overlay","visible":false,"left":{"type":"number","value":"nan"},"right":{"type":"number","value":"nan"},"top":{"type":"number","value":"nan"},"bottom":{"type":"number","value":"nan"},"left_units":"canvas","right_units":"canvas","top_units":"canvas","bottom_units":"canvas","handles":{"type":"object","name":"BoxInteractionHandles","id":"a4688295-d8b1-4d82-b896-91f82b928d0b","attributes":{"all":{"type":"object","name":"AreaVisuals","id":"78275956-7d11-48ba-9c8c-35fd7b0cf0bb","attributes":{"fill_color":"white","hover_fill_color":"lightgray"}}}}}}}},{"type":"object","name":"ResetTool","id":"e93cc6bf-7c5a-41d7-8992-cd50af1019d1"}],"active_drag":{"id":"bc6dd8d9-f2a9-485d-8e70-1af999512a12"},"active_scroll":{"id":"61888589-b21d-4236-9980-bdb2da8a1292"}}},"left":[{"type":"object","name":"LinearAxis","id":"1a01fa7f-57e1-411e-a7a0-653e6b2c650b","attributes":{"ticker":{"type":"object","name":"BasicTicker","id":"5a526752-f4b9-4bbe-97e9-27acc8427c12","attributes":{"mantissas":[1,2,5]}},"formatter":{"type":"object","name":"CustomJSTickFormatter","id":"5d2f8d55-ede5-4158-b1b3-83ef176c025c","attributes":{"args":{"type":"map","entries":[["top_tick",95.13400268554688]]},"code":"\n            if (Math.abs(tick - top_tick) < (top_tick * 0.05)) {\n                return '$' + tick.toFixed(0);\n            }\n            return tick.toFixed(0);\n        "}},"axis_label":" ","axis_label_text_font":"Harmonia Sans Pro Cyr","major_label_policy":{"type":"object","name":"AllLabels","id":"75272c96-df79-49ed-8638-f8125832dca9"},"major_label_text_font":"Harmonia Sans Pro Cyr","major_label_text_font_size":"15pt"}}],"below":[{"type":"object","name":"DatetimeAxis","id":"7949c4eb-097c-4b03-88fb-368dfbbb31ab","attributes":{"ticker":{"type":"object","name":"DatetimeTicker","id":"ea4ea652-a3ab-484e-8eca-d9c26200ff65","attributes":{"num_minor_ticks":5,"tickers":[{"type":"object","name":"AdaptiveTicker","id":"d66caaa3-6df5-460c-a51c-954b195d8ee3","attributes":{"num_minor_ticks":0,"mantissas":[1,2,5],"max_interval":500.0}},{"type":"object","name":"AdaptiveTicker","id":"738833b9-2212-41ce-817c-773ec28f14dc","attributes":{"num_minor_ticks":0,"base":60,"mantissas":[1,2,5,10,15,20,30],"min_interval":1000.0,"max_interval":1800000.0}},{"type":"object","name":"AdaptiveTicker","id":"f58a51bc-4f08-4b77-a383-8dc5bea879e7","attributes":{"num_minor_ticks":0,"base":24,"mantissas":[1,2,4,6,8,12],"min_interval":3600000.0,"max_interval":43200000.0}},{"type":"object","name":"DaysTicker","id":"dc354c7d-9ae1-4dbf-ac37-702122f33ae5","attributes":{"days":[1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31]}},{"type":"object","name":"DaysTicker","id":"fda7b463-b314-49dd-876e-aada37cc75b1","attributes":{"days":[1,4,7,10,13,16,19,22,25,28]}},{"type":"object","name":"DaysTicker","id":"30cc1311-f63a-423e-b6f0-fc3cf019c708","attributes":{"days":[1,8,15,22]}},{"type":"object","name":"DaysTicker","id":"6bdeba94-a8c7-461c-90f1-aedaea45aac9","attributes":{"days":[1,15]}},{"type":"object","name":"MonthsTicker","id":"81b7093b-e718-406b-a850-73afaedebd34","attributes":{"months":[0,1,2,3,4,5,6,7,8,9,10,11]}},{"type":"object","name":"MonthsTicker","id":"14505c81-5ce0-44ef-bf5c-e99bd2364810","attributes":{"months":[0,2,4,6,8,10]}},{"type":"object","name":"MonthsTicker","id":"968c5360-536d-42c3-b680-e5601fc844e0","attributes":{"months":[0,4,8]}},{"type":"object","name":"MonthsTicker","id":"fb4c80d7-7f1b-4568-9628-afe1e35ba6fd","attributes":{"months":[0,6]}},{"type":"object","name":"YearsTicker","id":"9e520102-05fd-4770-a62f-32e579410501"}]}},"formatter":{"type":"object","name":"DatetimeTickFormatter","id":"44ede986-a959-48a1-aeb1-37666e70f633","attributes":{"seconds":"%T","minsec":"%T","minutes":"%H:%M","hours":"%H:%M","days":"%b %d","months":"%b %Y","strip_leading_zeros":["microseconds","milliseconds","seconds"],"boundary_scaling":false,"context":{"type":"object","name":"DatetimeTickFormatter","id":"afcbe880-8c42-4561-826c-4118fddf8bec","attributes":{"microseconds":"%T","milliseconds":"%T","seconds":"%b %d, %Y","minsec":"%b %d, %Y","minutes":"%b %d, %Y","hourmin":"%b %d, %Y","hours":"%b %d, %Y","days":"%Y","months":"","years":"","boundary_scaling":false,"hide_repeats":true,"context":{"type":"object","name":"DatetimeTickFormatter","id":"ecf67496-c65b-454c-9c4d-45c472925a6d","attributes":{"microseconds":"%b %d, %Y","milliseconds":"%b %d, %Y","seconds":"","minsec":"","minutes":"","hourmin":"","hours":"","days":"","months":"","years":"","boundary_scaling":false,"hide_repeats":true}},"context_which":"all"}},"context_which":"all"}},"axis_label":" ","axis_label_text_font":"Harmonia Sans Pro Cyr","major_label_policy":{"type":"object","name":"AllLabels","id":"8caffbdf-af99-4dd2-9bda-00264f92c8a8"},"major_label_text_font":"Harmonia Sans Pro Cyr","major_label_text_font_size":"15pt"}}],"center":[{"type":"object","name":"Grid","id":"69907738-d73f-4de1-a634-98af088d98a7","attributes":{"axis":{"id":"7949c4eb-097c-4b03-88fb-368dfbbb31ab"},"grid_line_color":null}},{"type":"object","name":"Grid","id":"d32a98ba-95ea-4e1c-b1e9-26266cad0a41","attributes":{"dimension":1,"axis":{"id":"1a01fa7f-57e1-411e-a7a0-653e6b2c650b"},"grid_line_color":null}}],"background_fill_color":"#F0FFF0","border_fill_color":"#F0FFF0","min_border_top":60,"min_border_bottom":80,"min_border_left":10,"min_border_right":10,"output_backend":"webgl"}},{"type":"object","name":"Div","id":"82a6740a-e008-45be-a657-2683d07b1e28","attributes":{"text":"\n        <div style=\"\n            width: 700px;\n            height: 70px;\n            position: relative;\n            top: -70px;\n            display: flex;\n            align-items: center;\n            justify-content: flex-end;\n            padding-right: 40px;\n            background-color: transparent;\n            pointer-events: none;\n        \">\n            <img src=\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAA6oAAAF3CAYAAACsQ7bGAAAACXBIWXMAAC4jAAAuIwF4pT92AAAAGXRFWHRTb2Z0d2FyZQB3d3cuaW5rc2NhcGUub3Jnm+48GgAAIABJREFUeJzs3Xl8XGW9P/DP98wkabqDtFDazEy6sAYqzUySzqQtAUWpKy4VV0QRFeWqF3+iIi644q6IXkFAxQUriKCgcMFAm0zTZFoshEVL20zSQtks3Ztk5nx/fyT1YqHtJDnnec7MfN6vl3/c180830/JmZzzPec5zyOqCiIiIiIiIqKgcGwHICIiIiIiInohNqpEREREREQUKGxUiYiIiIiIKFDYqBIREREREVGgsFElIiIiIiKiQGGjSkRERERERIHCRpWIiIiIiIgChY0qERERERERBQobVSIiIiIiIgoUNqpEREREREQUKGxUiYiIiIiIKFDYqBIREREREVGgsFElIiIiIiKiQGGjSkRERERERIHCRpWIiIiIiIgChY0qERERERERBQobVSIiIiIiIgoUNqpEREREREQUKGxUiYiIiIiIKFDYqBIREREREVGgsFElIiIiIiKiQGGjSkRERERERIHCRpWIiIiIiIgChY0qERERERERBQobVSIiIiIiIgoUNqpEREREREQUKGxUiYiIiIiIKFDYqBIREREREVGgsFElIiIiIiKiQGGjSkRERERERIHCRpWIiIiIiIgChY0qERERERERBQobVSIiIiIiIgoUNqpEREREREQUKGxUiYiIiIiIKFDYqBIREREREVGgsFElIiIiIiKiQGGjSkRERERERIHCRpWIiIiIiIgChY0qERERERERBQobVSIiIiIiIgoUNqpEREREREQUKGxUiYiIiIiIKFDYqBIREREREVGgsFElIiIiIiKiQGGjSkRERERERIHCRpWIiIiIiIgChY0qERERERERBQobVSIiIiIiIgqUsO0ARERERERENCSaSjwBYIbPZR7Ltned6HONMeETVSIiIiIiIgoUNqpEREREREQUKGxUiYiIiIiIKFDYqBIREREREVGgsFElIiIiIiKiQGGjSkRERERERIHCRpWIiIiIiIgChY0qERERERERBQobVSIiIiIiIgoUNqpEREREREQUKGxUiYiIiIiIKFDYqBIREREREVGgsFElIiIiIiKiQGGjSkRERERERIHCRpWIiIiIiIgChY0qERERERERBQobVSIiIiIiIgoUNqpEREREREQUKGxUiYiIiIiIKFDYqBIREREREVGgsFElIiIiIiKiQGGjSkRERERERIHCRpWIiIiIiIgChY0qERERERERBQobVSIiIiIiIgoUNqpEREREREQUKGxUiYiIiIiIKFDYqBIREREREVGgsFElIiIiIiKiQGGjSkRERERERIHCRpWIiIiIiIgChY0qERERERERBQobVSIiIiIiIgoUNqpEREREREQUKGxUiYiIiIiIKFDYqBIREREREVGgsFElIiIiIiKiQGGjSkRERERERIHCRpWIiIiIiIgChY0qERERERERBQobVSIiIiIiIgoUNqpEREREREQUKGxUiYiIiIiIKFDYqBIREREREVGgsFElIiIiIiKiQGGjSkRERERERIHCRpWIiIiIiIgChY0qERERERERBQobVSIiIiIiIgoUNqpEREREREQUKGxUiYiIiIiIKFDYqBIREREREVGgsFElIiIiIiKiQGGjSkRERERERIHCRpWIiIiIiIgChY0qERERERERBUrYdgDyj4jIzOaGeY7qaY7rHqcisyByxP/9hO4VRR9Ee1T0gUnb+h/q7u4esJeYiIiovJzQ3Dxpjw6c5qie4joaE8UMiFMJAHBdhchTIuhTkcdUc2t629Y+YTkyEZERoqq2MxS9urq6yj1TKmfkpGKa5HUqQipwdSoAqMiAuLJbHQw4rrvLDblb+46d+5QuX573I4uISDS5oMWF804RLIXimII/rNgNwT0AbnG14ua+dHqvHxmJiIjK2YzFC6ZVuKF3ieKNAJIY2YODf6jon9TFL/vSmYd8ikhEFkVTiScAzPC5zGPZ9q4Tfa4xJmxUR0CWLQtF+zbOV8eph+oCFXm5QKMAjgEgIxgqD+ApAJsBfUSAbhV5sEIH1j3evu7pUWUTcSLJ+DsBvRyQeaMZ4wDPA/h+ZT70vfUdHTs8GI+IiKiszVkUjwzm5fMieDeAyrGPKCtdxeV96c77xz4WEQUFG9UhbFQPY2hKTv9rBPpaQF4N4GU+l3wcKu3iuG15t/LXhTzVrE3GT8iLc4NAm3zI8yTUvTCbXvNnH8YmIiIqeSLi1CTrPy6QrwCo9np8FfmNuuGL+9Lpf3k9NhGZx0Z1CBvVg4gtrD9RndB5AC4E9IjDfsAPjszJruzceKgf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\" height=\"30px\"/>\n        </div>\n    "}}]}}],"defs":[{"type":"model","name":"ReactiveHTML1"},{"type":"model","name":"FlexBox1","properties":[{"name":"align_content","kind":"Any","default":"flex-start"},{"name":"align_items","kind":"Any","default":"flex-start"},{"name":"flex_direction","kind":"Any","default":"row"},{"name":"flex_wrap","kind":"Any","default":"wrap"},{"name":"gap","kind":"Any","default":""},{"name":"justify_content","kind":"Any","default":"flex-start"}]},{"type":"model","name":"FloatPanel1","properties":[{"name":"config","kind":"Any","default":{"type":"map"}},{"name":"contained","kind":"Any","default":true},{"name":"position","kind":"Any","default":"right-top"},{"name":"offsetx","kind":"Any","default":null},{"name":"offsety","kind":"Any","default":null},{"name":"theme","kind":"Any","default":"primary"},{"name":"status","kind":"Any","default":"normalized"}]},{"type":"model","name":"GridStack1","properties":[{"name":"ncols","kind":"Any","default":null},{"name":"nrows","kind":"Any","default":null},{"name":"allow_resize","kind":"Any","default":true},{"name":"allow_drag","kind":"Any","default":true},{"name":"state","kind":"Any","default":[]}]},{"type":"model","name":"drag1","properties":[{"name":"slider_width","kind":"Any","default":5},{"name":"slider_color","kind":"Any","default":"black"},{"name":"start","kind":"Any","default":0},{"name":"end","kind":"Any","default":100},{"name":"value","kind":"Any","default":50}]},{"type":"model","name":"click1","properties":[{"name":"terminal_output","kind":"Any","default":""},{"name":"debug_name","kind":"Any","default":""},{"name":"clears","kind":"Any","default":0}]},{"type":"model","name":"ReactiveESM1","properties":[{"name":"esm_constants","kind":"Any","default":{"type":"map"}}]},{"type":"model","name":"JSComponent1","properties":[{"name":"esm_constants","kind":"Any","default":{"type":"map"}}]},{"type":"model","name":"ReactComponent1","properties":[{"name":"use_shadow_dom","kind":"Any","default":true},{"name":"esm_constants","kind":"Any","default":{"type":"map"}}]},{"type":"model","name":"AnyWidgetComponent1","properties":[{"name":"use_shadow_dom","kind":"Any","default":true},{"name":"esm_constants","kind":"Any","default":{"type":"map"}}]},{"type":"model","name":"FastWrapper1","properties":[{"name":"object","kind":"Any","default":null},{"name":"style","kind":"Any","default":null}]},{"type":"model","name":"NotificationArea1","properties":[{"name":"js_events","kind":"Any","default":{"type":"map"}},{"name":"max_notifications","kind":"Any","default":5},{"name":"notifications","kind":"Any","default":[]},{"name":"position","kind":"Any","default":"bottom-right"},{"name":"_clear","kind":"Any","default":0},{"name":"types","kind":"Any","default":[{"type":"map","entries":[["type","warning"],["background","#ffc107"],["icon",{"type":"map","entries":[["className","fas fa-exclamation-triangle"],["tagName","i"],["color","white"]]}]]},{"type":"map","entries":[["type","info"],["background","#007bff"],["icon",{"type":"map","entries":[["className","fas fa-info-circle"],["tagName","i"],["color","white"]]}]]}]}]},{"type":"model","name":"Notification","properties":[{"name":"background","kind":"Any","default":null},{"name":"duration","kind":"Any","default":3000},{"name":"icon","kind":"Any","default":null},{"name":"message","kind":"Any","default":""},{"name":"notification_type","kind":"Any","default":null},{"name":"_rendered","kind":"Any","default":false},{"name":"_destroyed","kind":"Any","default":false}]},{"type":"model","name":"TemplateActions1","properties":[{"name":"open_modal","kind":"Any","default":0},{"name":"close_modal","kind":"Any","default":0}]},{"type":"model","name":"BootstrapTemplateActions1","properties":[{"name":"open_modal","kind":"Any","default":0},{"name":"close_modal","kind":"Any","default":0}]},{"type":"model","name":"TemplateEditor1","properties":[{"name":"layout","kind":"Any","default":[]}]},{"type":"model","name":"MaterialTemplateActions1","properties":[{"name":"open_modal","kind":"Any","default":0},{"name":"close_modal","kind":"Any","default":0}]},{"type":"model","name":"request_value1","properties":[{"name":"fill","kind":"Any","default":"none"},{"name":"_synced","kind":"Any","default":null},{"name":"_request_sync","kind":"Any","default":0}]},{"type":"model","name":"holoviews.plotting.bokeh.raster.HoverModel","properties":[{"name":"xy","kind":"Any","default":null},{"name":"data","kind":"Any","default":null}]}]}};
  const render_items = [{"docid":"9d96df8a-5332-47d4-9298-e2895c6ca8f8","roots":{"1890f485-3057-46ff-b983-989859c8b78b":"c054b12b-4d66-4996-b309-8b02e407469c"},"root_ids":["1890f485-3057-46ff-b983-989859c8b78b"]}];
  void root.Bokeh.embed.embed_items_notebook(docs_json, render_items);
  }
  if (root.Bokeh !== undefined) {
    embed_document(root);
  } else {
    let attempts = 0;
    const timer = setInterval(function(root) {
      if (root.Bokeh !== undefined) {
        clearInterval(timer);
        embed_document(root);
      } else {
        attempts++;
        if (attempts > 100) {
          clearInterval(timer);
          console.log("Bokeh: ERROR: Unable to run BokehJS code because BokehJS library is missing");
        }
      }
    }, 10, root)
  }
})(window);
</script>
</div>
</div>
</section>
<section id="practical-analysis-of-52-week-highlow" class="level2">
<h2 data-anchor-id="practical-analysis-of-52-week-highlow">Practical analysis of 52-week high/low</h2>
<p>I downloaded data for a stock that is currently popular: NVIDIA. Using data from Yahoo Finance covering January 1, 2022, to June 11, 2026, I plotted NVIDIA’s 52-week high and low against its closing price to visualize the trend. Below is the chart showing that trend.</p>
<div id="51056a29" class="cell" data-execution_count="4">
<details class="code-fold">
<summary>Show the code</summary>
<div class="code-copy-outer-scaffold"><div class="sourceCode cell-code" id="cb4" style="background: #f1f3f5;"><pre class="sourceCode python code-with-copy"><code class="sourceCode python"><span id="cb4-1">plot <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span> (df</span>
<span id="cb4-2">    .pipe(select_ticker, <span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">'NVDA'</span>)</span>
<span id="cb4-3">    .hvplot.line(x<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span><span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">'Date'</span>, y<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span>[<span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">'52-week High'</span>, <span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">'Close'</span>, <span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">'52-week Low'</span>],</span>
<span id="cb4-4">                 title<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span><span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">'NVIDIA stock 52-week high/low'</span>,</span>
<span id="cb4-5">                 xlabel<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span><span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">' '</span>, ylabel<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span><span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">' '</span>, height<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span><span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">400</span>,</span>
<span id="cb4-6">                 color<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span>[<span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">'#ff7f0e'</span>, <span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">'#1f77b4'</span>, <span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">'#d62728'</span>],</span>
<span id="cb4-7">                 legend_cols<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span><span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">1</span>, legend<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span><span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">'top_left'</span>, legend_opts<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span>{<span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">'title'</span>:<span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">''</span>})</span>
<span id="cb4-8">).opts(hooks<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span>[format_y_axis])</span>
<span id="cb4-9"></span>
<span id="cb4-10"><span class="co" style="color: #5E5E5E;
background-color: null;
font-style: inherit;"># Render to Bokeh and fix title font (hv.render can drop theme title settings)</span></span>
<span id="cb4-11"><span class="co" style="color: #5E5E5E;
background-color: null;
font-style: inherit;"># Render to Bokeh and fix title font (hv.render can drop theme title settings)</span></span>
<span id="cb4-12">bokeh_plot <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span> hv.render(plot, backend<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span><span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">'bokeh'</span>)</span>
<span id="cb4-13">bokeh_plot.title.text_font <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span> font</span>
<span id="cb4-14">bokeh_plot.title.text_font_size <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span> <span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">'18pt'</span></span>
<span id="cb4-15">bokeh_plot.title.align <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span> <span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">'left'</span></span>
<span id="cb4-16"></span>
<span id="cb4-17"><span class="co" style="color: #5E5E5E;
background-color: null;
font-style: inherit;"># Explicitly re-apply background colors after hv.render()</span></span>
<span id="cb4-18">bokeh_plot.background_fill_color <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span> color_honeydew</span>
<span id="cb4-19">bokeh_plot.border_fill_color <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span> color_honeydew</span>
<span id="cb4-20">bokeh_plot.outline_line_color <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span> color_honeydew</span>
<span id="cb4-21">bokeh_plot.legend.background_fill_color <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span> color_honeydew</span>
<span id="cb4-22">bokeh_plot.legend.border_line_color <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span> color_honeydew</span>
<span id="cb4-23"></span>
<span id="cb4-24"><span class="co" style="color: #5E5E5E;
background-color: null;
font-style: inherit;"># Logo div sized to fill the bottom margin, right-aligned</span></span>
<span id="cb4-25">logo_div <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span> Div(</span>
<span id="cb4-26">    text<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span><span class="ss" style="color: #20794D;
background-color: null;
font-style: inherit;">f'''</span></span>
<span id="cb4-27"><span class="ss" style="color: #20794D;
background-color: null;
font-style: inherit;">        &lt;div style="</span></span>
<span id="cb4-28"><span class="ss" style="color: #20794D;
background-color: null;
font-style: inherit;">            width: </span><span class="sc" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">{</span>bokeh_plot<span class="sc" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">.</span>width <span class="kw" style="color: #003B4F;
background-color: null;
font-weight: bold;
font-style: inherit;">or</span> <span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">700</span><span class="sc" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">}</span><span class="ss" style="color: #20794D;
background-color: null;
font-style: inherit;">px;</span></span>
<span id="cb4-29"><span class="ss" style="color: #20794D;
background-color: null;
font-style: inherit;">            height: </span><span class="sc" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">{</span>LOGO_H <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">+</span> <span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">40</span><span class="sc" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">}</span><span class="ss" style="color: #20794D;
background-color: null;
font-style: inherit;">px;</span></span>
<span id="cb4-30"><span class="ss" style="color: #20794D;
background-color: null;
font-style: inherit;">            position: relative;</span></span>
<span id="cb4-31"><span class="ss" style="color: #20794D;
background-color: null;
font-style: inherit;">            top: -</span><span class="sc" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">{</span>LOGO_H <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">+</span> <span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">40</span><span class="sc" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">}</span><span class="ss" style="color: #20794D;
background-color: null;
font-style: inherit;">px;</span></span>
<span id="cb4-32"><span class="ss" style="color: #20794D;
background-color: null;
font-style: inherit;">            display: flex;</span></span>
<span id="cb4-33"><span class="ss" style="color: #20794D;
background-color: null;
font-style: inherit;">            align-items: center;</span></span>
<span id="cb4-34"><span class="ss" style="color: #20794D;
background-color: null;
font-style: inherit;">            justify-content: flex-end;</span></span>
<span id="cb4-35"><span class="ss" style="color: #20794D;
background-color: null;
font-style: inherit;">            padding-right: 40px;</span></span>
<span id="cb4-36"><span class="ss" style="color: #20794D;
background-color: null;
font-style: inherit;">            background-color: transparent;</span></span>
<span id="cb4-37"><span class="ss" style="color: #20794D;
background-color: null;
font-style: inherit;">            pointer-events: none;</span></span>
<span id="cb4-38"><span class="ss" style="color: #20794D;
background-color: null;
font-style: inherit;">        "&gt;</span></span>
<span id="cb4-39"><span class="ss" style="color: #20794D;
background-color: null;
font-style: inherit;">            &lt;img src="</span><span class="sc" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">{</span>logo_data_uri<span class="sc" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">}</span><span class="ss" style="color: #20794D;
background-color: null;
font-style: inherit;">" height="</span><span class="sc" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">{</span>LOGO_H<span class="sc" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">}</span><span class="ss" style="color: #20794D;
background-color: null;
font-style: inherit;">px"/&gt;</span></span>
<span id="cb4-40"><span class="ss" style="color: #20794D;
background-color: null;
font-style: inherit;">        &lt;/div&gt;</span></span>
<span id="cb4-41"><span class="ss" style="color: #20794D;
background-color: null;
font-style: inherit;">    '''</span></span>
<span id="cb4-42">)</span>
<span id="cb4-43"></span>
<span id="cb4-44">final <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span> column(bokeh_plot, logo_div, spacing<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span><span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">0</span>)</span>
<span id="cb4-45">show(final)</span></code></pre></div></div>
</details>
<div class="cell-output cell-output-display">

  <div id="b0a100ec-433f-4a2f-a0a2-cd6ccea889b7" data-root-id="a5c8afcb-a3ab-46bb-8e0c-e2d0ad8b705b" style="display: contents;"></div>
</div>
<div class="cell-output cell-output-display">
<script type="application/javascript">
(function(root) {
  function embed_document(root) {
  const docs_json = {"298b33ef-2137-4b09-a163-33fdbf9b4592":{"version":"3.9.1","title":"Bokeh Application","config":{"type":"object","name":"DocumentConfig","id":"37e8ad9a-fc38-4ca5-9e62-6e633f56b1cb","attributes":{"notifications":{"type":"object","name":"Notifications","id":"a92b8cbe-5eb7-414f-8a6d-11ce6af58d5f"}}},"roots":[{"type":"object","name":"Column","id":"a5c8afcb-a3ab-46bb-8e0c-e2d0ad8b705b","attributes":{"children":[{"type":"object","name":"Figure","id":"e96340a4-92cf-4f1e-a5a6-fc94302c74d5","attributes":{"width":700,"height":400,"sizing_mode":"fixed","align":"start","x_range":{"type":"object","name":"Range1d","id":"eb1591eb-5f7f-4d4f-89c5-19f0577ebd0d","attributes":{"name":"Date","tags":[[["Date",null]],[]],"start":1641168000000.0,"end":1781049600000.0,"reset_start":1641168000000.0,"reset_end":1781049600000.0}},"y_range":{"type":"object","name":"Range1d","id":"a58921e6-0f44-424b-bd1d-65ffc07a88fb","attributes":{"name":"52-week High","tags":[[["value",null]],{"type":"map","entries":[["invert_yaxis",false],["autorange",false]]}],"start":-11.761568863533512,"end":258.8124691885256,"reset_start":-11.761568863533512,"reset_end":258.8124691885256}},"x_scale":{"type":"object","name":"LinearScale","id":"94a0b001-3b0f-4811-9ca3-56a7d43fe6af"},"y_scale":{"type":"object","name":"LinearScale","id":"a03316f1-040d-4665-a7bb-08eb68eb158d"},"title":{"type":"object","name":"Title","id":"1daaee6a-668a-472d-8355-9c85141465eb","attributes":{"text":"NVIDIA stock 52-week high/low","text_font":"Harmonia Sans Pro Cyr","text_font_size":"18pt"}},"outline_line_color":"#F0FFF0","renderers":[{"type":"object","name":"GlyphRenderer","id":"743ff51b-2489-4dcf-a7cf-5a4b5779475e","attributes":{"name":"52-week High","data_source":{"type":"object","name":"ColumnDataSource","id":"f04d82df-4522-4ecd-a7f7-db7f875425dc","attributes":{"selected":{"type":"object","name":"Selection","id":"70b2d41f-dbf8-4a3c-b7f2-47f4312f40a1","attributes":{"indices":[],"line_indices":[]}},"selection_policy":{"type":"object","name":"UnionRenderers","id":"a00f602a-bc07-4b66-8270-68f6b8d3d5ed"},"data":{"type":"map","entries":[["Date",{"type":"ndarray","array":{"type":"bytes","data":"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"},"shape":[1113],"dtype":"float64","order":"little"}],["52-week High",{"type":"ndarray","array":{"type":"bytes","data":"H4sIAAEAAAAA/+3UbVDTBQAG8BUKinIgIE4dl55eB2osuPM02NwTSLB43eaacIh7H2NoBAIqeLshIxQRTp0mNN/gziJ1tPI4xAiFA8qKeBEy2WB0JaC8zECgrluflnd0NjroQvx/+n1/7nkeskvl/Te120AmJHIgekDsgPgB4geIH3juf4DbcmNDE5uOx8eGLeQuGuFznsMtU5+WLqfhFZ9xptmbBipVc4KdF4BDi0cm+xsC0FTw8VW2efZUvHxnMMmJhpmaE6Ov01posOUC9hUDyZuO6dqf7+bh0kyHZesZH89125CUGtQdWsew6YE9410rPguCVYpP51HXwe2YbQPFKwvD04KxvueT37YUB8Or+5FzQkswSNR7Dg2//n8Gv14VGrsoBO7awYXhlvmn/PzSbPOSUFgd/dr03ZHlTBDO7xwMvF/qyf5MvKhGtKkmOCveBt1zwj/IMwwp6e48KcJQ8Gh/U+X5p6q23+yf2BUOq0qFV0fll+EIC3QuztJHgC2/XlpOifzLDS3Kh5L4KDzLkkamq64iClPd1NSZ1nEuGnfXrP98gMdCxxpxDTeBhcSBjNWrc1noiYm+31DOAj9tmbbMjg2K/eWki+f+vQsN+is9JRzUbWy16yrcMW2FvicT1b1cWH2rLTUnUfwOxqijk+2v8rB/LUXfHrmTcI7nsMie+qAqLxa1zsdOXTgRC78FLkqRLg660SWWytY4dNc6cT588HeH9E8Cs1fuAv+Dthq/wnhkMoYM13i7n+m77Pe5Y+W7UXib71LvxweLJdP1nuTjqyjSXlYFH6SP2ksFdgLUa94r6SsiJHKYWz3wjjQGpWgEsEoikS7kDwswcpxR728vnHXvuo+Q4kOFyHdNp3FOC5EacETt/enMvdqrNv3gLsKL4lFh2OIfKSIQEjkQPZg7OxjqPHy2LUSEGwfLDsQXiWC8s9ZxvPkf7Nv8UjZZDOMUk01OE8m5YkRfYpZZ8sT4OVZ2mDv2VFPg8BvpagmsVnzLoVz/QoKtBxtSNbW2XZa/SlPcLIGKeVmaQZaicXPIjlyxFBHa4zWt+6QwJzO435hs61Gti+OOSjFVhnLyD5WDDPPVPjia3RxlmK4xMtKWIpEM/V4D1c1ZMtw8vdTj+3u21axbXloqSMDv8shqg+K/szGzqicnTo7Hbg6ivYcSCYkciB7Mgx0YlT/lZroqMFPVEtWpLF8FIs4UnGXdUiDlNvm18mEFelc93CdOSYKv6okxI2/PnPNPbyOE78giAAA="},"shape":[1113],"dtype":"float64","order":"little"}],["A_52_hyphen_minus_week_High",{"type":"ndarray","array":{"type":"bytes","data":"H4sIAAEAAAAA/+3UbVDTBQAG8BUKinIgIE4dl55eB2osuPM02NwTSLB43eaacIh7H2NoBAIqeLshIxQRTp0mNN/gziJ1tPI4xAiFA8qKeBEy2WB0JaC8zECgrluflnd0NjroQvx/+n1/7nkeskvl/Te120AmJHIgekDsgPgB4geIH3juf4DbcmNDE5uOx8eGLeQuGuFznsMtU5+WLqfhFZ9xptmbBipVc4KdF4BDi0cm+xsC0FTw8VW2efZUvHxnMMmJhpmaE6Ov01posOUC9hUDyZuO6dqf7+bh0kyHZesZH89125CUGtQdWsew6YE9410rPguCVYpP51HXwe2YbQPFKwvD04KxvueT37YUB8Or+5FzQkswSNR7Dg2//n8Gv14VGrsoBO7awYXhlvmn/PzSbPOSUFgd/dr03ZHlTBDO7xwMvF/qyf5MvKhGtKkmOCveBt1zwj/IMwwp6e48KcJQ8Gh/U+X5p6q23+yf2BUOq0qFV0fll+EIC3QuztJHgC2/XlpOifzLDS3Kh5L4KDzLkkamq64iClPd1NSZ1nEuGnfXrP98gMdCxxpxDTeBhcSBjNWrc1noiYm+31DOAj9tmbbMjg2K/eWki+f+vQsN+is9JRzUbWy16yrcMW2FvicT1b1cWH2rLTUnUfwOxqijk+2v8rB/LUXfHrmTcI7nsMie+qAqLxa1zsdOXTgRC78FLkqRLg660SWWytY4dNc6cT588HeH9E8Cs1fuAv+Dthq/wnhkMoYM13i7n+m77Pe5Y+W7UXib71LvxweLJdP1nuTjqyjSXlYFH6SP2ksFdgLUa94r6SsiJHKYWz3wjjQGpWgEsEoikS7kDwswcpxR728vnHXvuo+Q4kOFyHdNp3FOC5EacETt/enMvdqrNv3gLsKL4lFh2OIfKSIQEjkQPZg7OxjqPHy2LUSEGwfLDsQXiWC8s9ZxvPkf7Nv8UjZZDOMUk01OE8m5YkRfYpZZ8sT4OVZ2mDv2VFPg8BvpagmsVnzLoVz/QoKtBxtSNbW2XZa/SlPcLIGKeVmaQZaicXPIjlyxFBHa4zWt+6QwJzO435hs61Gti+OOSjFVhnLyD5WDDPPVPjia3RxlmK4xMtKWIpEM/V4D1c1ZMtw8vdTj+3u21axbXloqSMDv8shqg+K/szGzqicnTo7Hbg6ivYcSCYkciB7Mgx0YlT/lZroqMFPVEtWpLF8FIs4UnGXdUiDlNvm18mEFelc93CdOSYKv6okxI2/PnPNPbyOE78giAAA="},"shape":[1113],"dtype":"float64","order":"little"}],["Variable",["52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High","52-week High"]]]}}},"view":{"type":"object","name":"CDSView","id":"800d0cbb-8389-4879-806a-9f7978cedb0b","attributes":{"filter":{"type":"object","name":"AllIndices","id":"db031bb1-bde3-4c6a-b3c3-6e219c08cdcd"}}},"glyph":{"type":"object","name":"Line","id":"b098116e-5443-4487-bb18-d49236fd7aa1","attributes":{"tags":["apply_ranges"],"x":{"type":"field","field":"Date"},"y":{"type":"field","field":"52-week High"},"line_color":"#ff7f0e","line_width":2}},"selection_glyph":{"type":"object","name":"Line","id":"0e76f05b-6470-41ef-b8b7-7a61a8681939","attributes":{"tags":["apply_ranges"],"x":{"type":"field","field":"Date"},"y":{"type":"field","field":"52-week High"},"line_color":"#ff7f0e","line_width":2}},"nonselection_glyph":{"type":"object","name":"Line","id":"2969854f-5932-4243-9366-be840cc94dc5","attributes":{"tags":["apply_ranges"],"x":{"type":"field","field":"Date"},"y":{"type":"field","field":"52-week High"},"line_color":"#ff7f0e","line_alpha":0.1,"line_width":2}},"muted_glyph":{"type":"object","name":"Line","id":"acdd9047-5e00-45a7-8d16-3b79f94a24b8","attributes":{"tags":["apply_ranges"],"x":{"type":"field","field":"Date"},"y":{"type":"field","field":"52-week High"},"line_color":"#ff7f0e","line_alpha":0.2,"line_width":2}}}},{"type":"object","name":"GlyphRenderer","id":"5f24e57c-81e3-4065-88aa-73518b65b3c2","attributes":{"name":"Close","data_source":{"type":"object","name":"ColumnDataSource","id":"061adac7-f643-4cf5-836f-4695306783cd","attributes":{"selected":{"type":"object","name":"Selection","id":"d55250d5-5315-4155-931f-d314f0644125","attributes":{"indices":[],"line_indices":[]}},"selection_policy":{"type":"object","name":"UnionRenderers","id":"8c764164-a9e9-4ef4-b4aa-b23d10141468"},"data":{"type":"map","entries":[["Date",{"type":"ndarray","array":{"type":"bytes","data":"H4sIAAEAAAAA/yXLd1zIXx+G8UOUPbK3rJCdzHAkO2RFREJIRmYKOZLMIpE9s2UlMlLHiJC9kpXZQCQyIs/zu75/vV/X+dxHCBl//5W3nRDCqt7r/9Sr56DKuY7SpdobOqjsWzp7HArnM6hji77jXmek4bl979lZ/EaxxCGV3cdtKKqHpdGL0lClt0tn3y8IxcmXRr9/lEE7NPjA/vhcVBVuoZxf8yN9pMInuuxEFL4xqF+WyOTe1Q317KGf6WcHUdr9RbG/3xfuxXcZ7v6Qxa5Ix6/svFajePTaaLPkbHpyo2/8u+eHqs1dlNtqf6dvV86hbSaj2ByHWpj/4D5uLOr1w3/Sfw+jHCN+sb82AHWTPUaP2vKbjs9EZdU5l31IKIof74yu//wPHdz0L/vshaicH6CMq5dHf6n2j3byQhFzEbVFOTHnv/uS8ahPj8xHVz+OMsAk/3+KjMGGC7ebsHufhcrBvgC7yDAUFdON7plSkD7awpR92cWofB+jTGlgRpe2KER7z0DxPB61XcXC3PdPRP3ErQjdKQrlHtOi7Is6o/Y6ZPSuXcVos++oJncvzv7+RhRtPxo98U0J+o5NSfY2S1FtTkaZr3Ep3DC7NLu8BNRjqpizuzYZ9e+xZehR0SivFC7LvpEL6pAjRl/aU46u/xNVcK/y7L9tQTHss2FWm4rsnFaginmOslazSvRAy8r0GR8UNRJRB1Svwj3Dy3Dh2arsUotVY9fHFXXkcaPf7q9O98xFdbRPDfbldqCY+9XoiPSatLmtBXvvYFTPU1B2sa5Fz2xYm06eh0LeRr3Hog73ojNR23rWpXedR1moVD32U0ajvh9ldMEIS3piHqo7jvXZtwpHseW70Tc/NqCtOzVkvyEEVd4blGNbWdHrGjeicxegcLuH+kqdxtwbeaMeMaUJfUmjbFCmKftV7qi/RRuuyNecXdZAlEP2ojj/0+jMzy3oQXbW/DuzFlWNVJSL27akTzWzoasuQuH/EHWqZSvufXxR+01rTb+9hLJX+Tbsj01AXe6c0d0j29IRBdqxNx+Ccs4BFC9yjS6Z3Z6e1dWWffJ6VDID5V7bDvRj6450h0AU4UmoC1l14j5lPurtMyVd8CpKz0qd2d/1RN0q1ugJJ+3om2Zd2FsPQ7kxAsW/PKOb5djTYT26ss/dhMrtE8qrnbrRP1t1p0cuQ3H5KeoGTXpwX6VQa++edL3rKFdW7cX7kAsolp3uTWcWcWA3aATKs0dR1Mzfh+7/C0V0777sq25D5f8FZZpdP7pSO0d6wUoU716g7tW8P/dji1C/8h1Ad7+J8nCNgezLTEc957JhyRKD2c0ahfJpJIrOBZ0wqe8Q9h12ogrPRlm421C6XQdnescqFKavUXu2HMb9bqDhhDvD2d2q5cKu5SzUG68afSN2BN2s9Ej+hY1B+eckitGFXOnQfyh+9R/FfuRuVJdzUDbs6UYPl6PpC2tQWL5DvbL1GO5fl6GuvXAsvew+ys913dkPnoP67HXD/mXHs4seh7LaGRSLik6go/J70JUHo16wD9W7Xyh7O0yk53XxpF+vQ9EjDfXhdpO4lwlCbR8wmT74CGWpBlPYz56L+ulNo4vHT6WnV/Bin+SBsmMMit0lptEPC06n2w9FveMgKtO/KCf1m0Fv7TaTNtmIwuMD6lsdZqH7ktnsbjxB2byRN7v1fqj/3DG6ScIcOrSyD/tfk1C6xqGIL+1L5xSaS7sMR33hMCpLMY970ABUsT3n03W2oFieifqz9OM+OBR14PIF9MdnKAc0VexPL0Rd7YHR/W4spKOq+bOv7IVSXUTxvuwiukKxAHr+SNSvj6HqYbKY+5HBhl23B7I7lIW6lP0SdrPDUO8LWkoXT0E5o8Uy9k8CUHd8bLTXreX0w5or2LefgXJnPAqziitxm1sQO5MoVB6mwexuD0UlHFfR43ahSPyGunn31dzXb0SdsDqE3VqbNex+L0Htmmx0yN1QOqf2Wv65zEZ5MQFF/SrraGfzMDpuLOo60aiWF17P/ctwVBYDN9BL9qD49AP1gF4buZ/egjo9dBPd7z3Kk202s6+yArV6bnTkgy10Bcut7Of7oHxzA0XP6tto33Lb6ZTxqLueRXWo2A7upV1R2TntpPfvR1EiF/WMPru4P9mOusj6cNorHeWj9rvZ2waj3pli2KbhXnbb5qEscBvFRIt99OaK++l8nqjHnUeVWPIA9xajUY1xPkhfO4SiaR7qtY6HuP/ehdpqUwQd8hHlj46H2Y8IQX3xjdHfko/Qzo2Pso9bgLLuPRQr6hyjY6ocp2tNQb1Eo/pkHsl9oDuqAJcTdMYRFI75otifHIiqyl6jHbaepCM/o6xod4q931rUb94bXe5FNO3b7DT7FH+U3R6iiLA8Qz+vfpbuMg31/kuoSpQ/x33mBFR7XGPoopEophU4z/6REyrbA0ZP3hFL3/+Ksm3XOHYFMlC0eqXpzdYX2OULRDk+CcXNhhfpPItL9NiZqK9dQdW00mXu6zxRXRkdTzc6iWKN2RX2P5xRjYgwOjj8Kv3tO8phPRLY602o634yjGl1nV2tZSiXPkWR2fgGLvZOZJ9xDZVj1ZvsTk1Blep+i+5zGsWJIrfZVxyByu+oYblfd9jN7X2X3autqLt9MXpO6j36edv7/OuyEuWBFyhKNn9Ay/oP6b2+qIveRDWtxiPuj6ehKuTxmJ5yDsWD4kns245CtT3S6DsHntCt/qDc0jeZff6dqMdnG+bZPmM3dhXK669QNGv5nHazekFfnY+60R1Ua2q95P5zJqoGk1LoVbEovpd6xX7YGFT6pNFZEa/pIf9Qnu//hn3t3aiX5hh99tNbuoZ8x37xGpQf3qLo3/o97d8klU5TqPvcR3Wibhr2mprO7tgFFOXLZrCbOw7Vq9NGmx/7QM/J/5H9i0Eo7PehPvDL6KdfPtGySyb7vetQFktDMb3dZzq8+Re6cADqKY9QPaifxb3dXFSe07/Sdy+jaF0hm/0WD1T5Y4y2PvGN3ljwO/t/Q1C4H0R9/Y/Rf7JzaLduP9hf3YCy8QcUoR1+0pdb/qIbLkG96gmq71a/uQ/3M/x6NZfd0Mp/2J2fhKp2nNGDTv2lzxbK41/N4SgCD6P+8M/oaj/+0f49hc9/+7TNKPtmooiS+eh3rfPTvZejKt/UhPd5C1EdnlOALnMDhU+1gv+pX0xFZX/R6FlnTOmnRc3Ydx6JuphJIf51/I063KEwu8LbUU7NQvGwSxHatH1RelIQ6rsvUbVuUYz71gBUt+YWp1veQrGpZgn2/6ajco83OiymJP2nRCn2o91QJJxA3di0NO36F/XlfubsG+5CufobipxuZWjLjmXpoNWov75GNdSmHPfYJag++5WnB99Fca52BfY1Z6MKTDA6Oq4iXc28EvtFY1Gkn0Ldt3BlfDegCrvee1Ae/4GiQq+qdI/O1egjoajLvEfl06Y695fLUZXyr0HPfoDiWb2a7Dv7oNp3w+ikixZ0x3K12O8ej6LIWdRTi9Wmd5rUoU2dUE3aj/LebxRt+tSlPezr0bfDULdMR7WpvSV3EYyq+eL69PrHKP42aMB+9DxUCbeM/hXfkHataMU+fiIKq/OoV5dsRF80bUxbOqMKOoQy+y8KZ8cm9PLuTekvG1EP/ojqXMdm3C1CUA1Y2pw+nYyieuMW7BctQJV+1+jK16xpVaUl+/eTUTho1MfNbeg3hVvRPVxQHTmCwndga/4d6tWGLr0V9ezPqJ51bsvdbi2qGSva0U+eo+jUrD373f6oijw0un2iLb2zegf2ZtNQTL6E+l65jnSB4p1oD1eUNgUk75udUCb26Uy32IHqr70d72PWo1ob3IX+nYJilLU971ZJqF1ud6UvWnRjV38miuArqLMrdsflo3uw+xKF0smsJ7sYZ5SfHHvRA8NRn/6OqnqP3twDNqE6GeJAV3mLYmGrPuzfL0Xl8NTo+ff60m/q9GPf0xvF0Wuoy1Z1xEPu/dmVPo3Su8gAds9dUJYYNJCeuRf1k5+oOvUexH3PVlSP1g6mbVNR7GrrxN5sJarJL4ze9nAIXaD+UPYTfVHcSURtU8OZHl9+GJ04AVWLcyg3FB/OPc8VZdMhLvS6A6h/56Ia1XcE9ys7UP1YP5IekYHikq0r+/qrUAW/MjouaRRd18qN/Yr5KLJuo3aqNZpeWmkM/ckT1cBYlGdKjUXHYe7sTkWgrvIP1cL+47inhqOquHk87fcJxdtOE9j3XIPq6FujU5560N2aTGQfoVCY30ftXdeTPlB1El1iKqqZF1Aml5nMXY5DOW3EFPrxUdS2+aey3zUIZaF9htu/eLEr2GUau4nrUN1JNTrfy+n0+OYz+HdzEQrrR6g31J9JX68xi246HdW6yyhzy8/m7uaBcs0ob/pnJOoRBefw3uAgqmE7fWidjaJeN192KzagysowutbrufTSlvPYZwaiGPTE8EMtP/45zkJ16irKqpUXsPOfhPLEGEVXOoXar9BC9m+Hoex12Oi5u/3pVzkouvdcxD5iMyrzTKO7vAugD7RezL7kchSznqFObhJIF6u3hJ42B9Xj6yg7VFvKPXwqygfjltHtzqDeXnQ5+4IjUXoeM3rLvhV0/t8oJjisZH9zGyrrLKPHpgXR19sFs28WhCLsJerc5qtwzdzV7H7eRDmyZgi7y9NRfvdYQw+PQa1LhLKv54Zy5Qmjzx9cS9f+i2JZv3XsM3eiGvTN6MUfwugPHdaz778aRfRr1FVtNtB9G22kT/ihqnQX5YLam7i/m4Wy/OTN9Lw41K9Kb2HffSzKw6eMfnF4K20vtrE/OAB1yT2oZv0wem/mdrpY5x3sp4eiSHqHukObnfTUprvoBwtRtXuAcke9cO6mPihbe+2mt15Enb/cHvYTxqO8dcbof8f20u4m+9jfGIy62X5UYb+Nvpq1n25sf4B9aBiKX2moR7Y/SK9ucYj+HoBq+GMUlvMi+Dd0xmE6Nh517YpH2C2biPJzjNE1o47SgabH2H8cirr/IVTRf41O+3ac7ts9kn3URhSVP6Je0PEEfdwmii6/FNW8ZBQ9Fpzkn8/sU/TLBNT2VaJ5L6VRdY4+Te8rfIZdcRfU04+gShJn6cI/UU3tdY79wy0o2n9GvaNzDLZecZ7d1ucoTZrFsvPwR7nJJ44Wiajdq2v2N7xQNr9k9OizF+iEYhfZN3FFHXoc1S+TS3TDXFSr+1xmn7MdhctX1Bfs43Fo8BV2sSko61hfZbd8Mcpz8xJoi9uoAy2usf84A+WAK0YvOn+dTi95g32/0aijolBVNkuke+ehOu54k32FcBTzv6N+3f0WXbbTbdonBNXLNyi7trrD/dBSlM8W3KXt7qHeV+ce++LeKGdcM3q3vk8XKfOAvZc76ofRhpPyPeLfvYEo2+xFse0napPej2kbuyR601pUIhXluLZPuCeuQPnXP5ke8xB1guVT9k18Ua5NNDr+0jPaqvxz9iETUOecReVS/AUdVOAlne2E0vkAirhc1HX6ptBOXV/R59ajsshAucT2NfdPwSirB76hA5JQpzd8y77ffJQnbxs6VHrPLtITdYVYVPNLpdJHzNLossNQ+kagSMlD3bV/Ou3dI4N+tgmV3af/+z/5L8DhyCIAAA=="},"shape":[1113],"dtype":"float64","order":"little"}],["Close",{"type":"ndarray","array":{"type":"bytes","data":"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"},"shape":[1113],"dtype":"float64","order":"little"}],["Variable",["Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close","Close"]]]}}},"view":{"type":"object","name":"CDSView","id":"04546c15-10df-4981-864e-5f61e1e38320","attributes":{"filter":{"type":"object","name":"AllIndices","id":"bf6ab240-b6e1-4e38-b352-f9b465e48ccb"}}},"glyph":{"type":"object","name":"Line","id":"bb00a712-e9e9-46d2-bd78-789dba3a82ee","attributes":{"tags":["apply_ranges"],"x":{"type":"field","field":"Date"},"y":{"type":"field","field":"Close"},"line_color":"#1f77b4","line_width":2}},"selection_glyph":{"type":"object","name":"Line","id":"3e121526-41d2-43a8-a5e4-8ee7792d8a9f","attributes":{"tags":["apply_ranges"],"x":{"type":"field","field":"Date"},"y":{"type":"field","field":"Close"},"line_color":"#1f77b4","line_width":2}},"nonselection_glyph":{"type":"object","name":"Line","id":"b7e11596-4d6a-486e-9680-766d603c7c99","attributes":{"tags":["apply_ranges"],"x":{"type":"field","field":"Date"},"y":{"type":"field","field":"Close"},"line_color":"#1f77b4","line_alpha":0.1,"line_width":2}},"muted_glyph":{"type":"object","name":"Line","id":"f595aca1-6b78-4101-990a-0c4097e053cf","attributes":{"tags":["apply_ranges"],"x":{"type":"field","field":"Date"},"y":{"type":"field","field":"Close"},"line_color":"#1f77b4","line_alpha":0.2,"line_width":2}}}},{"type":"object","name":"GlyphRenderer","id":"71286987-80ec-403f-8ba6-9c131e863261","attributes":{"name":"52-week Low","data_source":{"type":"object","name":"ColumnDataSource","id":"8d213316-7c72-4432-a407-d0f50fa6c711","attributes":{"selected":{"type":"object","name":"Selection","id":"0fab28e4-7931-459a-9504-a349bafac2e6","attributes":{"indices":[],"line_indices":[]}},"selection_policy":{"type":"object","name":"UnionRenderers","id":"cf263a77-c839-46fb-a89a-a452ab5020c4"},"data":{"type":"map","entries":[["Date",{"type":"ndarray","array":{"type":"bytes","data":"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"},"shape":[1113],"dtype":"float64","order":"little"}],["52-week Low",{"type":"ndarray","array":{"type":"bytes","data":"H4sIAAEAAAAA/+3UfTDUCRzHcZVrDW7uJEpynEmsh7V2ycNu24fdtdnYkDxdt1EpPdeSVEhFRUeRHJVcpdy5OnnIDpYuqyTrIZXqRHVyJynVaeoQN/cHZjI7UldzTb+/Xv9/5vt9734qTHl2Zib8t1HmhzswUZsxaRdEDOjsbnt+pdsOjxJTPSte2kHk6htL3Wf7xmYFbkrR+dsG+icMF8Qr2OBHk5JLiVRr9KVwOsLqLT8ZFx27nH0y2RKfmntIBj2lT+hw9S6N01tPxzXFS+fHKtPR/MAri5dGA3ln8S4+c/RSVfTKxJ0WcD59t+XuReqg5+plRReiqDCo76uOVzb/aMx+qNo7uYSCAfM7CtS3iCkouqLtapU4eveuiWDF2FPwuFQ4npdhBk657gqXfFNU5S4tZioR/lc7WIu3dazeaIzRemLJt6Xa+sZY3ckwnSol40/6Uz4/igxmxXL9ThP5Pji3ddOyKiOoBU+LVws2Qo1ewHJt4XArMh8vY1w3xGhVujFXcUPZdMhcw83Ttg950k3zVEKiAQiJHYg7IP6A6ADRAaIDH28HGvP71Dm+01HeutFGr3s66j4733DWzBA/pG5cRzpsiBa3PIaWeMjfc3xZW9WM4BaqMvEJm4ya+CSV5b5kSG35ayfcenNpUmPJznkmsNeYpW8RNNyujO9UbuWb4FN3gqo3a/MYU7yprKZSzhhrCm7r1DZp3aXgcvKhQrf2IRtJW+5/+TUVvYzCM8dzhjt/37G8k5VUnFtSFDOnwgI9t3NEnTG0Qbd/VaEkaqNBnspq1VynBDoO+nuyzf0sP5iPotZzvTED79s4QZ1P+1xrDPjTE7N+z5vWYB9aHKQ90XbQoyXcHQwPW2gcHNuqKhvZlTwr9/3GdnhfLiGlRv9mYofRejPk3niVRDsMmDapgdE7joFQb4om2Vy+IdHGm1NPMdDP3kFXfzWyfWd/lRhOZiJAukLh3gUmGC/7ZmUKZ4JaOd63oHRky6/ekZzmOeBwLsmKm/H2Fuam7RSIHXCR3ivoZrGRsM7MNILLxrpmwV+aSYTEDsQd/PsHleTbBeEBHCSdEXtZBXIRdqA6VLeeixBmsUQY6Ijslkj9uJD/n+JkmXJgiiMy/Xe1r8xyhFL781VdZY7gx95ouHZnyLTadKc1PY5oaqFvnnGE98EVtuqG06bOxhTqfUP13NlIlpFPJ8mcUBV565f1uXy0kVkKUcV87L/2rMDJfc4waUu/UOxScIZ9QFh69V5nVM0+br9/pgta1Otig9pdUMZNiExmCAaVappuqJsjwOsmyE7U0i4I0Ni1wKaxci6kHEmwz27X96aOTp1iZrQ7siW5nauaCd91h7XXf96THj0Pr8upfaHqyfOAPL0SjtanSj3wgpd09WH6fEJiB+IOiD8gOkB0gOjAKDow2cGirjvJC4+OFi5ULXp3b1gda7d08kZHg55oWqgPjFgGCjUlPljTXGYn65Hvls/Zr+KyvoE81VKUtJpIC6BRTpqmKx1yUYtuiQFJiHGvpogeT1gIpUo9FU9dv7fWPc/7edj3fpDnkX5KkOQPP0RoXCmxsfFHwGKjDi+PIYNFvGDLA/4YyX8AOauxe8giAAA="},"shape":[1113],"dtype":"float64","order":"little"}],["A_52_hyphen_minus_week_Low",{"type":"ndarray","array":{"type":"bytes","data":"H4sIAAEAAAAA/+3UfTDUCRzHcZVrDW7uJEpynEmsh7V2ycNu24fdtdnYkDxdt1EpPdeSVEhFRUeRHJVcpdy5OnnIDpYuqyTrIZXqRHVyJynVaeoQN/cHZjI7UldzTb+/Xv9/5vt9734qTHl2Zib8t1HmhzswUZsxaRdEDOjsbnt+pdsOjxJTPSte2kHk6htL3Wf7xmYFbkrR+dsG+icMF8Qr2OBHk5JLiVRr9KVwOsLqLT8ZFx27nH0y2RKfmntIBj2lT+hw9S6N01tPxzXFS+fHKtPR/MAri5dGA3ln8S4+c/RSVfTKxJ0WcD59t+XuReqg5+plRReiqDCo76uOVzb/aMx+qNo7uYSCAfM7CtS3iCkouqLtapU4eveuiWDF2FPwuFQ4npdhBk657gqXfFNU5S4tZioR/lc7WIu3dazeaIzRemLJt6Xa+sZY3ckwnSol40/6Uz4/igxmxXL9ThP5Pji3ddOyKiOoBU+LVws2Qo1ewHJt4XArMh8vY1w3xGhVujFXcUPZdMhcw83Ttg950k3zVEKiAQiJHYg7IP6A6ADRAaIDH28HGvP71Dm+01HeutFGr3s66j4733DWzBA/pG5cRzpsiBa3PIaWeMjfc3xZW9WM4BaqMvEJm4ya+CSV5b5kSG35ayfcenNpUmPJznkmsNeYpW8RNNyujO9UbuWb4FN3gqo3a/MYU7yprKZSzhhrCm7r1DZp3aXgcvKhQrf2IRtJW+5/+TUVvYzCM8dzhjt/37G8k5VUnFtSFDOnwgI9t3NEnTG0Qbd/VaEkaqNBnspq1VynBDoO+nuyzf0sP5iPotZzvTED79s4QZ1P+1xrDPjTE7N+z5vWYB9aHKQ90XbQoyXcHQwPW2gcHNuqKhvZlTwr9/3GdnhfLiGlRv9mYofRejPk3niVRDsMmDapgdE7joFQb4om2Vy+IdHGm1NPMdDP3kFXfzWyfWd/lRhOZiJAukLh3gUmGC/7ZmUKZ4JaOd63oHRky6/ekZzmOeBwLsmKm/H2Fuam7RSIHXCR3ivoZrGRsM7MNILLxrpmwV+aSYTEDsQd/PsHleTbBeEBHCSdEXtZBXIRdqA6VLeeixBmsUQY6Ijslkj9uJD/n+JkmXJgiiMy/Xe1r8xyhFL781VdZY7gx95ouHZnyLTadKc1PY5oaqFvnnGE98EVtuqG06bOxhTqfUP13NlIlpFPJ8mcUBV565f1uXy0kVkKUcV87L/2rMDJfc4waUu/UOxScIZ9QFh69V5nVM0+br9/pgta1Otig9pdUMZNiExmCAaVappuqJsjwOsmyE7U0i4I0Ni1wKaxci6kHEmwz27X96aOTp1iZrQ7siW5nauaCd91h7XXf96THj0Pr8upfaHqyfOAPL0SjtanSj3wgpd09WH6fEJiB+IOiD8gOkB0gOjAKDow2cGirjvJC4+OFi5ULXp3b1gda7d08kZHg55oWqgPjFgGCjUlPljTXGYn65Hvls/Zr+KyvoE81VKUtJpIC6BRTpqmKx1yUYtuiQFJiHGvpogeT1gIpUo9FU9dv7fWPc/7edj3fpDnkX5KkOQPP0RoXCmxsfFHwGKjDi+PIYNFvGDLA/4YyX8AOauxe8giAAA="},"shape":[1113],"dtype":"float64","order":"little"}],["Variable",["52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low","52-week Low"]]]}}},"view":{"type":"object","name":"CDSView","id":"9e142954-8cc8-473d-894d-ae153e5aa014","attributes":{"filter":{"type":"object","name":"AllIndices","id":"cf151ec2-5473-4e15-be3c-d828af1cb08d"}}},"glyph":{"type":"object","name":"Line","id":"6b71273c-11df-46a7-aa7d-d9a64e137f29","attributes":{"tags":["apply_ranges"],"x":{"type":"field","field":"Date"},"y":{"type":"field","field":"52-week Low"},"line_color":"#d62728","line_width":2}},"selection_glyph":{"type":"object","name":"Line","id":"85cdd211-d58b-411a-a5d8-4a5257a2e6f3","attributes":{"tags":["apply_ranges"],"x":{"type":"field","field":"Date"},"y":{"type":"field","field":"52-week Low"},"line_color":"#d62728","line_width":2}},"nonselection_glyph":{"type":"object","name":"Line","id":"d4ff7e37-4462-4f5b-9f59-3b3fa27ce92f","attributes":{"tags":["apply_ranges"],"x":{"type":"field","field":"Date"},"y":{"type":"field","field":"52-week Low"},"line_color":"#d62728","line_alpha":0.1,"line_width":2}},"muted_glyph":{"type":"object","name":"Line","id":"fb590b0a-13d4-4f2e-af93-1f0c8c9459d8","attributes":{"tags":["apply_ranges"],"x":{"type":"field","field":"Date"},"y":{"type":"field","field":"52-week Low"},"line_color":"#d62728","line_alpha":0.2,"line_width":2}}}}],"toolbar":{"type":"object","name":"Toolbar","id":"6b0dea34-d614-48ab-b8c1-b49876cd959c","attributes":{"tools":[{"type":"object","name":"WheelZoomTool","id":"ba9468db-b013-4041-9c56-16ebeb56d5a6","attributes":{"tags":["hv_created"],"renderers":"auto","zoom_together":"none"}},{"type":"object","name":"HoverTool","id":"db962475-96ff-426c-b33f-5d780d1e5de2","attributes":{"tags":["hv_created"],"renderers":[{"id":"743ff51b-2489-4dcf-a7cf-5a4b5779475e"}],"tooltips":[["Variable","@{Variable}"],["Date","@{Date}{%F %T}"],["value","@{A_52_hyphen_minus_week_High}"]],"formatters":{"type":"map","entries":[["@{Date}","datetime"]]},"sort_by":null}},{"type":"object","name":"HoverTool","id":"243fbebf-52ce-40c2-98d1-66af6f161ea9","attributes":{"tags":["hv_created"],"renderers":[{"id":"5f24e57c-81e3-4065-88aa-73518b65b3c2"}],"tooltips":[["Variable","@{Variable}"],["Date","@{Date}{%F %T}"],["value","@{Close}"]],"formatters":{"type":"map","entries":[["@{Date}","datetime"]]},"sort_by":null}},{"type":"object","name":"HoverTool","id":"9f6841db-4e3d-4cab-a900-57d0252972fc","attributes":{"tags":["hv_created"],"renderers":[{"id":"71286987-80ec-403f-8ba6-9c131e863261"}],"tooltips":[["Variable","@{Variable}"],["Date","@{Date}{%F %T}"],["value","@{A_52_hyphen_minus_week_Low}"]],"formatters":{"type":"map","entries":[["@{Date}","datetime"]]},"sort_by":null}},{"type":"object","name":"SaveTool","id":"031e64ee-9a4a-4d27-be6e-5fa320e3adac"},{"type":"object","name":"PanTool","id":"c1769ea5-565e-42b3-a159-4eb9d434c53f"},{"type":"object","name":"BoxZoomTool","id":"435134e8-cb67-450f-97b7-0b39e27c7e87","attributes":{"overlay":{"type":"object","name":"BoxAnnotation","id":"405d017b-c355-427f-ae2f-b6d9ba4878b5","attributes":{"syncable":false,"line_color":"black","line_alpha":1.0,"line_width":2,"line_dash":[4,4],"fill_color":"lightgrey","fill_alpha":0.5,"level":"overlay","visible":false,"left":{"type":"number","value":"nan"},"right":{"type":"number","value":"nan"},"top":{"type":"number","value":"nan"},"bottom":{"type":"number","value":"nan"},"left_units":"canvas","right_units":"canvas","top_units":"canvas","bottom_units":"canvas","handles":{"type":"object","name":"BoxInteractionHandles","id":"58efbebc-0976-4175-a8ab-698f5163a2bb","attributes":{"all":{"type":"object","name":"AreaVisuals","id":"f3f0697a-c0be-45d8-b6bd-d6ef89540338","attributes":{"fill_color":"white","hover_fill_color":"lightgray"}}}}}}}},{"type":"object","name":"ResetTool","id":"64e87def-2435-4982-a3a7-8bbd8f97741e"}],"active_drag":{"id":"c1769ea5-565e-42b3-a159-4eb9d434c53f"},"active_scroll":{"id":"ba9468db-b013-4041-9c56-16ebeb56d5a6"}}},"left":[{"type":"object","name":"LinearAxis","id":"cbb1a39b-10e3-4a0c-96b2-132d272fecb3","attributes":{"ticker":{"type":"object","name":"BasicTicker","id":"f1e75181-868b-4550-bd10-e82bb661a50b","attributes":{"mantissas":[1,2,5]}},"formatter":{"type":"object","name":"CustomJSTickFormatter","id":"eb45af05-bf95-461e-b9ab-bce0622f975b","attributes":{"args":{"type":"map","entries":[["top_tick",258.8124691885256]]},"code":"\n            if (Math.abs(tick - top_tick) < (top_tick * 0.05)) {\n                return '$' + tick.toFixed(0);\n            }\n            return tick.toFixed(0);\n        "}},"axis_label":" ","axis_label_text_font":"Harmonia Sans Pro Cyr","major_label_policy":{"type":"object","name":"AllLabels","id":"93c2dc35-31b3-418e-a836-5af2f0636c18"},"major_label_text_font":"Harmonia Sans Pro Cyr","major_label_text_font_size":"15pt"}}],"below":[{"type":"object","name":"DatetimeAxis","id":"0d7639be-5761-444f-a8fa-fe2be45c2904","attributes":{"ticker":{"type":"object","name":"DatetimeTicker","id":"2a95afb2-9684-4b02-be8c-93be9bf14cb5","attributes":{"num_minor_ticks":5,"tickers":[{"type":"object","name":"AdaptiveTicker","id":"5ec6e28b-ed3d-44e3-9390-f4cf69f3519e","attributes":{"num_minor_ticks":0,"mantissas":[1,2,5],"max_interval":500.0}},{"type":"object","name":"AdaptiveTicker","id":"8683a224-1870-40be-9237-35e2e83e28b0","attributes":{"num_minor_ticks":0,"base":60,"mantissas":[1,2,5,10,15,20,30],"min_interval":1000.0,"max_interval":1800000.0}},{"type":"object","name":"AdaptiveTicker","id":"8c2c276d-69a3-487d-b047-b9320a7b3e8a","attributes":{"num_minor_ticks":0,"base":24,"mantissas":[1,2,4,6,8,12],"min_interval":3600000.0,"max_interval":43200000.0}},{"type":"object","name":"DaysTicker","id":"d9bc0d1a-50ef-4945-9179-83f0f3537c35","attributes":{"days":[1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31]}},{"type":"object","name":"DaysTicker","id":"a43c03ce-88d7-4fb6-98a7-b11d68ae218f","attributes":{"days":[1,4,7,10,13,16,19,22,25,28]}},{"type":"object","name":"DaysTicker","id":"8f1f0ef2-11ee-4bbb-a051-a13ae20285f7","attributes":{"days":[1,8,15,22]}},{"type":"object","name":"DaysTicker","id":"5256ef2d-c97b-4df5-9dec-f9d0a2d0fdf4","attributes":{"days":[1,15]}},{"type":"object","name":"MonthsTicker","id":"dc70d262-2a1b-4852-b0d0-c884099f9e1e","attributes":{"months":[0,1,2,3,4,5,6,7,8,9,10,11]}},{"type":"object","name":"MonthsTicker","id":"d620d00f-db89-44d6-bce7-40b73b3844ad","attributes":{"months":[0,2,4,6,8,10]}},{"type":"object","name":"MonthsTicker","id":"b0168b71-b250-4976-82cb-32ef34334b16","attributes":{"months":[0,4,8]}},{"type":"object","name":"MonthsTicker","id":"e1aa1c10-1afe-4784-be63-530245d44044","attributes":{"months":[0,6]}},{"type":"object","name":"YearsTicker","id":"ac6a5a2d-3bca-4f15-b30e-e171acd68577"}]}},"formatter":{"type":"object","name":"DatetimeTickFormatter","id":"9a4a7c65-aeb3-44cb-9abd-1fd58765505f","attributes":{"seconds":"%T","minsec":"%T","minutes":"%H:%M","hours":"%H:%M","days":"%b %d","months":"%b %Y","strip_leading_zeros":["microseconds","milliseconds","seconds"],"boundary_scaling":false,"context":{"type":"object","name":"DatetimeTickFormatter","id":"bc5c679e-b940-4951-bb0b-099f2b8d6b77","attributes":{"microseconds":"%T","milliseconds":"%T","seconds":"%b %d, %Y","minsec":"%b %d, %Y","minutes":"%b %d, %Y","hourmin":"%b %d, %Y","hours":"%b %d, %Y","days":"%Y","months":"","years":"","boundary_scaling":false,"hide_repeats":true,"context":{"type":"object","name":"DatetimeTickFormatter","id":"8b28e627-83e0-4498-97e0-091d966585fb","attributes":{"microseconds":"%b %d, %Y","milliseconds":"%b %d, %Y","seconds":"","minsec":"","minutes":"","hourmin":"","hours":"","days":"","months":"","years":"","boundary_scaling":false,"hide_repeats":true}},"context_which":"all"}},"context_which":"all"}},"axis_label":" ","axis_label_text_font":"Harmonia Sans Pro Cyr","major_label_policy":{"type":"object","name":"AllLabels","id":"496c8115-2519-4b71-a71b-29138c187edc"},"major_label_text_font":"Harmonia Sans Pro Cyr","major_label_text_font_size":"15pt"}}],"center":[{"type":"object","name":"Grid","id":"027b368b-076e-4802-b104-9c176acb5947","attributes":{"axis":{"id":"0d7639be-5761-444f-a8fa-fe2be45c2904"},"grid_line_color":null}},{"type":"object","name":"Grid","id":"71221c4d-439f-44f4-a6b8-0ab67600177e","attributes":{"dimension":1,"axis":{"id":"cbb1a39b-10e3-4a0c-96b2-132d272fecb3"},"grid_line_color":null}},{"type":"object","name":"Legend","id":"d0f90781-d00d-41f1-b6b1-572fedfffd23","attributes":{"location":"top_left","ncols":1,"title":"","border_line_color":"#F0FFF0","background_fill_color":"#F0FFF0","click_policy":"mute","label_text_font_size":"13pt","items":[{"type":"object","name":"LegendItem","id":"6282742c-52cc-4341-8b95-f8fefc8913b5","attributes":{"label":{"type":"value","value":"52-week High"},"renderers":[{"id":"743ff51b-2489-4dcf-a7cf-5a4b5779475e"}]}},{"type":"object","name":"LegendItem","id":"487f0736-ed83-4d2c-bb69-ace508e70ae2","attributes":{"label":{"type":"value","value":"Close"},"renderers":[{"id":"5f24e57c-81e3-4065-88aa-73518b65b3c2"}]}},{"type":"object","name":"LegendItem","id":"8b56214b-7962-46e8-a176-40ff5bc5cf8c","attributes":{"label":{"type":"value","value":"52-week Low"},"renderers":[{"id":"71286987-80ec-403f-8ba6-9c131e863261"}]}}]}}],"background_fill_color":"#F0FFF0","border_fill_color":"#F0FFF0","min_border_top":60,"min_border_bottom":80,"min_border_left":10,"min_border_right":10,"output_backend":"webgl"}},{"type":"object","name":"Div","id":"1805b7a7-0c3f-44c5-b34a-9b7300ef3057","attributes":{"text":"\n        <div style=\"\n            width: 700px;\n            height: 70px;\n            position: relative;\n            top: -70px;\n            display: flex;\n            align-items: center;\n            justify-content: flex-end;\n            padding-right: 40px;\n            background-color: transparent;\n            pointer-events: none;\n        \">\n            <img src=\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAA6oAAAF3CAYAAACsQ7bGAAAACXBIWXMAAC4jAAAuIwF4pT92AAAAGXRFWHRTb2Z0d2FyZQB3d3cuaW5rc2NhcGUub3Jnm+48GgAAIABJREFUeJzs3Xl8XGW9P/DP98wkabqDtFDazEy6sAYqzUySzqQtAUWpKy4VV0QRFeWqF3+iIi644q6IXkFAxQUriKCgcMFAm0zTZFoshEVL20zSQtks3Ztk5nx/fyT1YqHtJDnnec7MfN6vl3/c180830/JmZzzPec5zyOqCiIiIiIiIqKgcGwHICIiIiIiInohNqpEREREREQUKGxUiYiIiIiIKFDYqBIREREREVGgsFElIiIiIiKiQGGjSkRERERERIHCRpWIiIiIiIgChY0qERERERERBQobVSIiIiIiIgoUNqpEREREREQUKGxUiYiIiIiIKFDYqBIREREREVGgsFElIiIiIiKiQGGjSkRERERERIHCRpWIiIiIiIgChY0qERERERERBQobVSIiIiIiIgoUNqpEREREREQUKGxUiYiIiIiIKFDYqBIREREREVGgsFElIiIiIiKiQGGjSkRERERERIHCRpWIiIiIiIgChY0qERERERERBQobVSIiIiIiIgoUNqpEREREREQUKGxUiYiIiIiIKFDYqBIREREREVGgsFElIiIiIiKiQGGjSkRERERERIHCRpWIiIiIiIgChY0qERERERERBQobVSIiIiIiIgoUNqpEREREREQUKGxUiYiIiIiIKFDYqBIREREREVGgsFElIiIiIiKiQGGjSkRERERERIHCRpWIiIiIiIgChY0qERERERERBQobVSIiIiIiIgoUNqpEREREREQUKGxUiYiIiIiIKFDYqBIREREREVGgsFElIiIiIiKiQGGjSkRERERERIHCRpWIiIiIiIgChY0qERERERERBQobVSIiIiIiIgqUsO0ARERERERENCSaSjwBYIbPZR7Ltned6HONMeETVSIiIiIiIgoUNqpEREREREQUKGxUiYiIiIiIKFDYqBIREREREVGgsFElIiIiIiKiQGGjSkRERERERIHCRpWIiIiIiIgChY0qERERERERBQobVSIiIiIiIgoUNqpEREREREQUKGxUiYiIiIiIKFDYqBIREREREVGgsFElIiIiIiKiQGGjSkRERERERIHCRpWIiIiIiIgChY0qERERERERBQobVSIiIiIiIgoUNqpEREREREQUKGxUiYiIiIiIKFDYqBIREREREVGgsFElIiIiIiKiQGGjSkRERERERIHCRpWIiIiIiIgChY0qERERERERBQobVSIiIiIiIgoUNqpEREREREQUKGxUiYiIiIiIKFDYqBIREREREVGgsFElIiIiIiKiQGGjSkRERERERIHCRpWIiIiIiIgChY0qERERERERBQobVSIiIiIiIgoUNqpEREREREQUKGxUiYiIiIiIKFDYqBIREREREVGgsFElIiIiIiKiQGGjSkRERERERIHCRpWIiIiIiIgChY0qERERERERBQobVSIiIiIiIgoUNqpEREREREQUKGxUiYiIiIiIKFDYqBIREREREVGgsFElIiIiIiKiQGGjSkRERERERIHCRpWIiIiIiIgChY0qERERERERBQobVSIiIiIiIgoUNqpEREREREQUKGxUiYiIiIiIKFDYqBIREREREVGgsFElIiIiIiKiQGGjSkRERERERIHCRpWIiIiIiIgChY0qERERERERBUrYdgDyj4jIzOaGeY7qaY7rHqcisyByxP/9hO4VRR9Ee1T0gUnb+h/q7u4esJeYiIiovJzQ3Dxpjw6c5qie4joaE8UMiFMJAHBdhchTIuhTkcdUc2t629Y+YTkyEZERoqq2MxS9urq6yj1TKmfkpGKa5HUqQipwdSoAqMiAuLJbHQw4rrvLDblb+46d+5QuX573I4uISDS5oMWF804RLIXimII/rNgNwT0AbnG14ua+dHqvHxmJiIjK2YzFC6ZVuKF3ieKNAJIY2YODf6jon9TFL/vSmYd8ikhEFkVTiScAzPC5zGPZ9q4Tfa4xJmxUR0CWLQtF+zbOV8eph+oCFXm5QKMAjgEgIxgqD+ApAJsBfUSAbhV5sEIH1j3evu7pUWUTcSLJ+DsBvRyQeaMZ4wDPA/h+ZT70vfUdHTs8GI+IiKiszVkUjwzm5fMieDeAyrGPKCtdxeV96c77xz4WEQUFG9UhbFQPY2hKTv9rBPpaQF4N4GU+l3wcKu3iuG15t/LXhTzVrE3GT8iLc4NAm3zI8yTUvTCbXvNnH8YmIiIqeSLi1CTrPy6QrwCo9np8FfmNuuGL+9Lpf3k9NhGZx0Z1CBvVg4gtrD9RndB5AC4E9IjDfsAPjszJruzceKgf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\" height=\"30px\"/>\n        </div>\n    "}}]}}],"defs":[{"type":"model","name":"ReactiveHTML1"},{"type":"model","name":"FlexBox1","properties":[{"name":"align_content","kind":"Any","default":"flex-start"},{"name":"align_items","kind":"Any","default":"flex-start"},{"name":"flex_direction","kind":"Any","default":"row"},{"name":"flex_wrap","kind":"Any","default":"wrap"},{"name":"gap","kind":"Any","default":""},{"name":"justify_content","kind":"Any","default":"flex-start"}]},{"type":"model","name":"FloatPanel1","properties":[{"name":"config","kind":"Any","default":{"type":"map"}},{"name":"contained","kind":"Any","default":true},{"name":"position","kind":"Any","default":"right-top"},{"name":"offsetx","kind":"Any","default":null},{"name":"offsety","kind":"Any","default":null},{"name":"theme","kind":"Any","default":"primary"},{"name":"status","kind":"Any","default":"normalized"}]},{"type":"model","name":"GridStack1","properties":[{"name":"ncols","kind":"Any","default":null},{"name":"nrows","kind":"Any","default":null},{"name":"allow_resize","kind":"Any","default":true},{"name":"allow_drag","kind":"Any","default":true},{"name":"state","kind":"Any","default":[]}]},{"type":"model","name":"drag1","properties":[{"name":"slider_width","kind":"Any","default":5},{"name":"slider_color","kind":"Any","default":"black"},{"name":"start","kind":"Any","default":0},{"name":"end","kind":"Any","default":100},{"name":"value","kind":"Any","default":50}]},{"type":"model","name":"click1","properties":[{"name":"terminal_output","kind":"Any","default":""},{"name":"debug_name","kind":"Any","default":""},{"name":"clears","kind":"Any","default":0}]},{"type":"model","name":"ReactiveESM1","properties":[{"name":"esm_constants","kind":"Any","default":{"type":"map"}}]},{"type":"model","name":"JSComponent1","properties":[{"name":"esm_constants","kind":"Any","default":{"type":"map"}}]},{"type":"model","name":"ReactComponent1","properties":[{"name":"use_shadow_dom","kind":"Any","default":true},{"name":"esm_constants","kind":"Any","default":{"type":"map"}}]},{"type":"model","name":"AnyWidgetComponent1","properties":[{"name":"use_shadow_dom","kind":"Any","default":true},{"name":"esm_constants","kind":"Any","default":{"type":"map"}}]},{"type":"model","name":"FastWrapper1","properties":[{"name":"object","kind":"Any","default":null},{"name":"style","kind":"Any","default":null}]},{"type":"model","name":"NotificationArea1","properties":[{"name":"js_events","kind":"Any","default":{"type":"map"}},{"name":"max_notifications","kind":"Any","default":5},{"name":"notifications","kind":"Any","default":[]},{"name":"position","kind":"Any","default":"bottom-right"},{"name":"_clear","kind":"Any","default":0},{"name":"types","kind":"Any","default":[{"type":"map","entries":[["type","warning"],["background","#ffc107"],["icon",{"type":"map","entries":[["className","fas fa-exclamation-triangle"],["tagName","i"],["color","white"]]}]]},{"type":"map","entries":[["type","info"],["background","#007bff"],["icon",{"type":"map","entries":[["className","fas fa-info-circle"],["tagName","i"],["color","white"]]}]]}]}]},{"type":"model","name":"Notification","properties":[{"name":"background","kind":"Any","default":null},{"name":"duration","kind":"Any","default":3000},{"name":"icon","kind":"Any","default":null},{"name":"message","kind":"Any","default":""},{"name":"notification_type","kind":"Any","default":null},{"name":"_rendered","kind":"Any","default":false},{"name":"_destroyed","kind":"Any","default":false}]},{"type":"model","name":"TemplateActions1","properties":[{"name":"open_modal","kind":"Any","default":0},{"name":"close_modal","kind":"Any","default":0}]},{"type":"model","name":"BootstrapTemplateActions1","properties":[{"name":"open_modal","kind":"Any","default":0},{"name":"close_modal","kind":"Any","default":0}]},{"type":"model","name":"TemplateEditor1","properties":[{"name":"layout","kind":"Any","default":[]}]},{"type":"model","name":"MaterialTemplateActions1","properties":[{"name":"open_modal","kind":"Any","default":0},{"name":"close_modal","kind":"Any","default":0}]},{"type":"model","name":"request_value1","properties":[{"name":"fill","kind":"Any","default":"none"},{"name":"_synced","kind":"Any","default":null},{"name":"_request_sync","kind":"Any","default":0}]},{"type":"model","name":"holoviews.plotting.bokeh.raster.HoverModel","properties":[{"name":"xy","kind":"Any","default":null},{"name":"data","kind":"Any","default":null}]}]}};
  const render_items = [{"docid":"298b33ef-2137-4b09-a163-33fdbf9b4592","roots":{"a5c8afcb-a3ab-46bb-8e0c-e2d0ad8b705b":"b0a100ec-433f-4a2f-a0a2-cd6ccea889b7"},"root_ids":["a5c8afcb-a3ab-46bb-8e0c-e2d0ad8b705b"]}];
  void root.Bokeh.embed.embed_items_notebook(docs_json, render_items);
  }
  if (root.Bokeh !== undefined) {
    embed_document(root);
  } else {
    let attempts = 0;
    const timer = setInterval(function(root) {
      if (root.Bokeh !== undefined) {
        clearInterval(timer);
        embed_document(root);
      } else {
        attempts++;
        if (attempts > 100) {
          clearInterval(timer);
          console.log("Bokeh: ERROR: Unable to run BokehJS code because BokehJS library is missing");
        }
      }
    }, 10, root)
  }
})(window);
</script>
</div>
</div>
<p>The chart above is a good reminder that in investing, it’s sometimes beneficial to go against conventional wisdom. In their paper <em>The 52-Week High and Momentum Investing</em>, George and Hwang argued that investors often treat the 52-week high price as a psychological anchor. As a result, when a stock’s current price gets close to its 52-week high, investors hesitate to bid it higher, even when fundamentals suggest the price should continue rising. This behavior reflects underreaction because prices do not fully adjust to new positive information.</p>
<p>Because of this underreaction, stocks trading near their 52-week highs tend to continue rising afterward. This predictable pattern is known as the 52-week high effect. Put another way, prices near the 52-week high can signal momentum because investors are slow to push the stock toward its perceived true value.</p>
<p>This behavior is evident in the NVIDIA stock. Every time the closing price reaches the 52-week high, it may fall slightly, but it eventually climbs to an even higher 52-week high. What is especially surprising is that the 52-week high on January 5, 2024 is roughly the same as the 52-week low on January 2, 2025. Imagine being the investor on January 5, 2024 who believed the stock price couldn’t go any higher and chose to invest elsewhere. Oh, I can’t imagine the pain of losing such an opportunity!</p>
<p>However, it’s not always the case that a stock hitting its 52-week high will continue to rise. It’s important to pay attention to trading volume as well. When a stock approaches its 52-week high with high trading volume, it usually signals strong momentum. It’s like adding gasoline to a fire.</p>
<p>This momentum is often driven by genuine industry demand. Artificial intelligence (AI) is currently one of the most influential technologies in the world, and NVIDIA produces the chips that power much of this innovation. Unlike GameStop in 2021, whose rise was largely fueled by speculation and hype, NVIDIA’s growth is supported by strong demand for its products and the broader expansion of the AI industry.</p>
<p>Still, following the 52-week high is not a holy grail strategy. Instead, you should treat it as one tool in your broader investment toolbox.</p>


</section>

 ]]></description>
  <category>Finance</category>
  <guid>https://www.conterval.com/blog/52-week-high-and-low/</guid>
  <pubDate>Tue, 09 Jun 2026 05:00:00 GMT</pubDate>
</item>
<item>
  <title>Slicing and dicing pandas &amp; polars dataframes</title>
  <dc:creator>Joram Mutenge</dc:creator>
  <link>https://www.conterval.com/blog/select-subsets-of-rows-and-columns-pandas-polars/</link>
  <description><![CDATA[ 




<p>A few years ago, I read an article on pandas’ <code>loc</code> method by Matt Harrison, published on the now-defunct Ponder website. I loved reading it because it showed, in depth, the many ways to use <code>loc</code>. I want to revisit the article and perform in Polars the operations that Matt performed in pandas. Matt also created a chart at the end of the article using pandas’ built-in charting library, which relies on Matplotlib. I’ll recreate two versions of the same chart: one using HvPlot and the other using Glyphx, a new charting library I’m slowly falling in love with.</p>
<section id="the-dataset" class="level2">
<h2 data-anchor-id="the-dataset">The dataset</h2>
<p>The dataset we’ll be analyzing contains crime data from neighborhoods in Los Angeles. I’ll read the dataset with pandas and store it in a variable called <em>df</em>. The Polars dataframe will be stored in a variable called <em>data</em>.</p>
<div id="d33fe132" class="cell" data-execution_count="1">
<div class="code-copy-outer-scaffold"><div class="sourceCode cell-code" id="cb1" style="background: #f1f3f5;"><pre class="sourceCode python code-with-copy"><code class="sourceCode python"><span id="cb1-1"><span class="im" style="color: #00769E;
background-color: null;
font-style: inherit;">import</span> pandas <span class="im" style="color: #00769E;
background-color: null;
font-style: inherit;">as</span> pd</span>
<span id="cb1-2"></span>
<span id="cb1-3">url <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span> <span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"https://data.lacity.org/api/views/2nrs-mtv8/rows.csv?accessType=DOWNLOAD"</span></span>
<span id="cb1-4">df <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span> pd.read_csv(url)</span>
<span id="cb1-5">df.head()</span></code></pre></div></div>
<div class="cell-output cell-output-display" data-execution_count="1">
<div>


<table class="dataframe caption-top table table-sm table-striped small" data-border="1">
<thead>
<tr class="header">
<th data-quarto-table-cell-role="th"></th>
<th data-quarto-table-cell-role="th">DR_NO</th>
<th data-quarto-table-cell-role="th">Date Rptd</th>
<th data-quarto-table-cell-role="th">DATE OCC</th>
<th data-quarto-table-cell-role="th">TIME OCC</th>
<th data-quarto-table-cell-role="th">AREA</th>
<th data-quarto-table-cell-role="th">AREA NAME</th>
<th data-quarto-table-cell-role="th">Rpt Dist No</th>
<th data-quarto-table-cell-role="th">Part 1-2</th>
<th data-quarto-table-cell-role="th">Crm Cd</th>
<th data-quarto-table-cell-role="th">Crm Cd Desc</th>
<th data-quarto-table-cell-role="th">...</th>
<th data-quarto-table-cell-role="th">Status</th>
<th data-quarto-table-cell-role="th">Status Desc</th>
<th data-quarto-table-cell-role="th">Crm Cd 1</th>
<th data-quarto-table-cell-role="th">Crm Cd 2</th>
<th data-quarto-table-cell-role="th">Crm Cd 3</th>
<th data-quarto-table-cell-role="th">Crm Cd 4</th>
<th data-quarto-table-cell-role="th">LOCATION</th>
<th data-quarto-table-cell-role="th">Cross Street</th>
<th data-quarto-table-cell-role="th">LAT</th>
<th data-quarto-table-cell-role="th">LON</th>
</tr>
</thead>
<tbody>
<tr class="odd">
<th data-quarto-table-cell-role="th">0</th>
<td>211507896</td>
<td>04/11/2021 12:00:00 AM</td>
<td>11/07/2020 12:00:00 AM</td>
<td>845</td>
<td>15</td>
<td>N Hollywood</td>
<td>1502</td>
<td>2</td>
<td>354</td>
<td>THEFT OF IDENTITY</td>
<td>...</td>
<td>IC</td>
<td>Invest Cont</td>
<td>354.0</td>
<td>NaN</td>
<td>NaN</td>
<td>NaN</td>
<td>7800&nbsp;&nbsp;&nbsp;&nbsp;BEEMAN&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; AV</td>
<td>NaN</td>
<td>34.2124</td>
<td>-118.4092</td>
</tr>
<tr class="even">
<th data-quarto-table-cell-role="th">1</th>
<td>201516622</td>
<td>10/21/2020 12:00:00 AM</td>
<td>10/18/2020 12:00:00 AM</td>
<td>1845</td>
<td>15</td>
<td>N Hollywood</td>
<td>1521</td>
<td>1</td>
<td>230</td>
<td>ASSAULT WITH DEADLY WEAPON, AGGRAVATED ASSAULT</td>
<td>...</td>
<td>IC</td>
<td>Invest Cont</td>
<td>230.0</td>
<td>NaN</td>
<td>NaN</td>
<td>NaN</td>
<td>ATOLL&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;AV</td>
<td>N&nbsp;&nbsp;GAULT</td>
<td>34.1993</td>
<td>-118.4203</td>
</tr>
<tr class="odd">
<th data-quarto-table-cell-role="th">2</th>
<td>240913563</td>
<td>12/10/2024 12:00:00 AM</td>
<td>10/30/2020 12:00:00 AM</td>
<td>1240</td>
<td>9</td>
<td>Van Nuys</td>
<td>933</td>
<td>2</td>
<td>354</td>
<td>THEFT OF IDENTITY</td>
<td>...</td>
<td>IC</td>
<td>Invest Cont</td>
<td>354.0</td>
<td>NaN</td>
<td>NaN</td>
<td>NaN</td>
<td>14600&nbsp;&nbsp;&nbsp;&nbsp;SYLVAN&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ST</td>
<td>NaN</td>
<td>34.1847</td>
<td>-118.4509</td>
</tr>
<tr class="even">
<th data-quarto-table-cell-role="th">3</th>
<td>210704711</td>
<td>12/24/2020 12:00:00 AM</td>
<td>12/24/2020 12:00:00 AM</td>
<td>1310</td>
<td>7</td>
<td>Wilshire</td>
<td>782</td>
<td>1</td>
<td>331</td>
<td>THEFT FROM MOTOR VEHICLE - GRAND ($950.01 AND ...</td>
<td>...</td>
<td>IC</td>
<td>Invest Cont</td>
<td>331.0</td>
<td>NaN</td>
<td>NaN</td>
<td>NaN</td>
<td>6000&nbsp;&nbsp;&nbsp;&nbsp;COMEY&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;AV</td>
<td>NaN</td>
<td>34.0339</td>
<td>-118.3747</td>
</tr>
<tr class="odd">
<th data-quarto-table-cell-role="th">4</th>
<td>201418201</td>
<td>10/03/2020 12:00:00 AM</td>
<td>09/29/2020 12:00:00 AM</td>
<td>1830</td>
<td>14</td>
<td>Pacific</td>
<td>1454</td>
<td>1</td>
<td>420</td>
<td>THEFT FROM MOTOR VEHICLE - PETTY ($950 &amp; UNDER)</td>
<td>...</td>
<td>IC</td>
<td>Invest Cont</td>
<td>420.0</td>
<td>NaN</td>
<td>NaN</td>
<td>NaN</td>
<td>4700&nbsp;&nbsp;&nbsp;&nbsp;LA VILLA MARINA</td>
<td>NaN</td>
<td>33.9813</td>
<td>-118.4350</td>
</tr>
</tbody>
</table>

<p>5 rows × 28 columns</p>
</div>
</div>
</div>
<p>I’ll read the dataset again with Polars.</p>
<div id="47398bd6" class="cell" data-execution_count="2">
<div class="code-copy-outer-scaffold"><div class="sourceCode cell-code" id="cb2" style="background: #f1f3f5;"><pre class="sourceCode python code-with-copy"><code class="sourceCode python"><span id="cb2-1"><span class="im" style="color: #00769E;
background-color: null;
font-style: inherit;">import</span> polars <span class="im" style="color: #00769E;
background-color: null;
font-style: inherit;">as</span> pl</span>
<span id="cb2-2"></span>
<span id="cb2-3">data <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span> pl.read_csv(url)</span>
<span id="cb2-4">data.head()</span></code></pre></div></div>
<div class="cell-output cell-output-display" data-execution_count="2">
<div><style>
.dataframe > thead > tr,
.dataframe > tbody > tr {
  text-align: right;
  white-space: pre-wrap;
}
</style>
<small>shape: (5, 28)</small>
<table class="dataframe caption-top table table-sm table-striped small" data-border="1">
<thead>
<tr class="header">
<th data-quarto-table-cell-role="th">DR_NO</th>
<th data-quarto-table-cell-role="th">Date Rptd</th>
<th data-quarto-table-cell-role="th">DATE OCC</th>
<th data-quarto-table-cell-role="th">TIME OCC</th>
<th data-quarto-table-cell-role="th">AREA</th>
<th data-quarto-table-cell-role="th">AREA NAME</th>
<th data-quarto-table-cell-role="th">Rpt Dist No</th>
<th data-quarto-table-cell-role="th">Part 1-2</th>
<th data-quarto-table-cell-role="th">Crm Cd</th>
<th data-quarto-table-cell-role="th">Crm Cd Desc</th>
<th data-quarto-table-cell-role="th">Mocodes</th>
<th data-quarto-table-cell-role="th">Vict Age</th>
<th data-quarto-table-cell-role="th">Vict Sex</th>
<th data-quarto-table-cell-role="th">Vict Descent</th>
<th data-quarto-table-cell-role="th">Premis Cd</th>
<th data-quarto-table-cell-role="th">Premis Desc</th>
<th data-quarto-table-cell-role="th">Weapon Used Cd</th>
<th data-quarto-table-cell-role="th">Weapon Desc</th>
<th data-quarto-table-cell-role="th">Status</th>
<th data-quarto-table-cell-role="th">Status Desc</th>
<th data-quarto-table-cell-role="th">Crm Cd 1</th>
<th data-quarto-table-cell-role="th">Crm Cd 2</th>
<th data-quarto-table-cell-role="th">Crm Cd 3</th>
<th data-quarto-table-cell-role="th">Crm Cd 4</th>
<th data-quarto-table-cell-role="th">LOCATION</th>
<th data-quarto-table-cell-role="th">Cross Street</th>
<th data-quarto-table-cell-role="th">LAT</th>
<th data-quarto-table-cell-role="th">LON</th>
</tr>
<tr class="even">
<td>i64</td>
<td>str</td>
<td>str</td>
<td>i64</td>
<td>i64</td>
<td>str</td>
<td>i64</td>
<td>i64</td>
<td>i64</td>
<td>str</td>
<td>str</td>
<td>i64</td>
<td>str</td>
<td>str</td>
<td>i64</td>
<td>str</td>
<td>i64</td>
<td>str</td>
<td>str</td>
<td>str</td>
<td>i64</td>
<td>i64</td>
<td>str</td>
<td>str</td>
<td>str</td>
<td>str</td>
<td>f64</td>
<td>f64</td>
</tr>
</thead>
<tbody>
<tr class="odd">
<td>211507896</td>
<td>"04/11/2021 12:00:00 AM"</td>
<td>"11/07/2020 12:00:00 AM"</td>
<td>845</td>
<td>15</td>
<td>"N Hollywood"</td>
<td>1502</td>
<td>2</td>
<td>354</td>
<td>"THEFT OF IDENTITY"</td>
<td>"0377"</td>
<td>31</td>
<td>"M"</td>
<td>"H"</td>
<td>501</td>
<td>"SINGLE FAMILY DWELLING"</td>
<td>null</td>
<td>null</td>
<td>"IC"</td>
<td>"Invest Cont"</td>
<td>354</td>
<td>null</td>
<td>null</td>
<td>null</td>
<td>"7800&nbsp;&nbsp;&nbsp;&nbsp;BEEMAN&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;…</td>
<td>null</td>
<td>34.2124</td>
<td>-118.4092</td>
</tr>
<tr class="even">
<td>201516622</td>
<td>"10/21/2020 12:00:00 AM"</td>
<td>"10/18/2020 12:00:00 AM"</td>
<td>1845</td>
<td>15</td>
<td>"N Hollywood"</td>
<td>1521</td>
<td>1</td>
<td>230</td>
<td>"ASSAULT WITH DEADLY WEAPON, AG…</td>
<td>"0416 0334 2004 1822 1414 0305 …</td>
<td>32</td>
<td>"M"</td>
<td>"H"</td>
<td>102</td>
<td>"SIDEWALK"</td>
<td>200</td>
<td>"KNIFE WITH BLADE 6INCHES OR LE…</td>
<td>"IC"</td>
<td>"Invest Cont"</td>
<td>230</td>
<td>null</td>
<td>null</td>
<td>null</td>
<td>"ATOLL&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;A…</td>
<td>"N&nbsp;&nbsp;GAULT"</td>
<td>34.1993</td>
<td>-118.4203</td>
</tr>
<tr class="odd">
<td>240913563</td>
<td>"12/10/2024 12:00:00 AM"</td>
<td>"10/30/2020 12:00:00 AM"</td>
<td>1240</td>
<td>9</td>
<td>"Van Nuys"</td>
<td>933</td>
<td>2</td>
<td>354</td>
<td>"THEFT OF IDENTITY"</td>
<td>"0377"</td>
<td>30</td>
<td>"M"</td>
<td>"W"</td>
<td>501</td>
<td>"SINGLE FAMILY DWELLING"</td>
<td>null</td>
<td>null</td>
<td>"IC"</td>
<td>"Invest Cont"</td>
<td>354</td>
<td>null</td>
<td>null</td>
<td>null</td>
<td>"14600&nbsp;&nbsp;&nbsp;&nbsp;SYLVAN&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;…</td>
<td>null</td>
<td>34.1847</td>
<td>-118.4509</td>
</tr>
<tr class="even">
<td>210704711</td>
<td>"12/24/2020 12:00:00 AM"</td>
<td>"12/24/2020 12:00:00 AM"</td>
<td>1310</td>
<td>7</td>
<td>"Wilshire"</td>
<td>782</td>
<td>1</td>
<td>331</td>
<td>"THEFT FROM MOTOR VEHICLE - GRA…</td>
<td>"0344"</td>
<td>47</td>
<td>"F"</td>
<td>"A"</td>
<td>101</td>
<td>"STREET"</td>
<td>null</td>
<td>null</td>
<td>"IC"</td>
<td>"Invest Cont"</td>
<td>331</td>
<td>null</td>
<td>null</td>
<td>null</td>
<td>"6000&nbsp;&nbsp;&nbsp;&nbsp;COMEY&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;…</td>
<td>null</td>
<td>34.0339</td>
<td>-118.3747</td>
</tr>
<tr class="odd">
<td>201418201</td>
<td>"10/03/2020 12:00:00 AM"</td>
<td>"09/29/2020 12:00:00 AM"</td>
<td>1830</td>
<td>14</td>
<td>"Pacific"</td>
<td>1454</td>
<td>1</td>
<td>420</td>
<td>"THEFT FROM MOTOR VEHICLE - PET…</td>
<td>"1300 0344 1606 2032"</td>
<td>63</td>
<td>"M"</td>
<td>"H"</td>
<td>103</td>
<td>"ALLEY"</td>
<td>null</td>
<td>null</td>
<td>"IC"</td>
<td>"Invest Cont"</td>
<td>420</td>
<td>null</td>
<td>null</td>
<td>null</td>
<td>"4700&nbsp;&nbsp;&nbsp;&nbsp;LA VILLA MARINA"</td>
<td>null</td>
<td>33.9813</td>
<td>-118.435</td>
</tr>
</tbody>
</table>
</div>
</div>
</div>
</section>
<section id="selecting-a-row" class="level2">
<h2 data-anchor-id="selecting-a-row">Selecting a row</h2>
<p>The <code>loc</code> method in pandas can be used to select specific rows and columns. I’ll select the fifth row in the dataframe.</p>
<div id="c8576675" class="cell" data-execution_count="3">
<div class="code-copy-outer-scaffold"><div class="sourceCode cell-code" id="cb3" style="background: #f1f3f5;"><pre class="sourceCode python code-with-copy"><code class="sourceCode python"><span id="cb3-1">df.loc[<span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">5</span>]</span></code></pre></div></div>
<div class="cell-output cell-output-display" data-execution_count="3">
<pre><code>DR_NO                                                240412063
Date Rptd                               12/11/2024 12:00:00 AM
DATE OCC                                11/11/2020 12:00:00 AM
TIME OCC                                                  1210
AREA                                                         4
AREA NAME                                           Hollenbeck
Rpt Dist No                                                429
Part 1-2                                                     2
Crm Cd                                                     354
Crm Cd Desc                                  THEFT OF IDENTITY
Mocodes                                                   0100
Vict Age                                                    35
Vict Sex                                                     M
Vict Descent                                                 B
Premis Cd                                                502.0
Premis Desc       MULTI-UNIT DWELLING (APARTMENT, DUPLEX, ETC)
Weapon Used Cd                                             NaN
Weapon Desc                                                NaN
Status                                                      IC
Status Desc                                        Invest Cont
Crm Cd 1                                                 354.0
Crm Cd 2                                                   NaN
Crm Cd 3                                                   NaN
Crm Cd 4                                                   NaN
LOCATION               5300    CRONUS                       ST
Cross Street                                               NaN
LAT                                                     34.083
LON                                                  -118.1678
Name: 5, dtype: object</code></pre>
</div>
</div>
<p>Let’s do the same with Polars. I’ll show two ways to select a specific row.</p>
<p><strong>Version 1</strong></p>
<div id="3f7cebc3" class="cell" data-execution_count="4">
<div class="code-copy-outer-scaffold"><div class="sourceCode cell-code" id="cb5" style="background: #f1f3f5;"><pre class="sourceCode python code-with-copy"><code class="sourceCode python"><span id="cb5-1">(data</span>
<span id="cb5-2"> .<span class="bu" style="color: null;
background-color: null;
font-style: inherit;">slice</span>(<span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">5</span>, <span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">1</span>)</span>
<span id="cb5-3"> )</span></code></pre></div></div>
<div class="cell-output cell-output-display" data-execution_count="4">
<div><style>
.dataframe > thead > tr,
.dataframe > tbody > tr {
  text-align: right;
  white-space: pre-wrap;
}
</style>
<small>shape: (1, 28)</small>
<table class="dataframe caption-top table table-sm table-striped small" data-border="1">
<thead>
<tr class="header">
<th data-quarto-table-cell-role="th">DR_NO</th>
<th data-quarto-table-cell-role="th">Date Rptd</th>
<th data-quarto-table-cell-role="th">DATE OCC</th>
<th data-quarto-table-cell-role="th">TIME OCC</th>
<th data-quarto-table-cell-role="th">AREA</th>
<th data-quarto-table-cell-role="th">AREA NAME</th>
<th data-quarto-table-cell-role="th">Rpt Dist No</th>
<th data-quarto-table-cell-role="th">Part 1-2</th>
<th data-quarto-table-cell-role="th">Crm Cd</th>
<th data-quarto-table-cell-role="th">Crm Cd Desc</th>
<th data-quarto-table-cell-role="th">Mocodes</th>
<th data-quarto-table-cell-role="th">Vict Age</th>
<th data-quarto-table-cell-role="th">Vict Sex</th>
<th data-quarto-table-cell-role="th">Vict Descent</th>
<th data-quarto-table-cell-role="th">Premis Cd</th>
<th data-quarto-table-cell-role="th">Premis Desc</th>
<th data-quarto-table-cell-role="th">Weapon Used Cd</th>
<th data-quarto-table-cell-role="th">Weapon Desc</th>
<th data-quarto-table-cell-role="th">Status</th>
<th data-quarto-table-cell-role="th">Status Desc</th>
<th data-quarto-table-cell-role="th">Crm Cd 1</th>
<th data-quarto-table-cell-role="th">Crm Cd 2</th>
<th data-quarto-table-cell-role="th">Crm Cd 3</th>
<th data-quarto-table-cell-role="th">Crm Cd 4</th>
<th data-quarto-table-cell-role="th">LOCATION</th>
<th data-quarto-table-cell-role="th">Cross Street</th>
<th data-quarto-table-cell-role="th">LAT</th>
<th data-quarto-table-cell-role="th">LON</th>
</tr>
<tr class="even">
<td>i64</td>
<td>str</td>
<td>str</td>
<td>i64</td>
<td>i64</td>
<td>str</td>
<td>i64</td>
<td>i64</td>
<td>i64</td>
<td>str</td>
<td>str</td>
<td>i64</td>
<td>str</td>
<td>str</td>
<td>i64</td>
<td>str</td>
<td>i64</td>
<td>str</td>
<td>str</td>
<td>str</td>
<td>i64</td>
<td>i64</td>
<td>str</td>
<td>str</td>
<td>str</td>
<td>str</td>
<td>f64</td>
<td>f64</td>
</tr>
</thead>
<tbody>
<tr class="odd">
<td>240412063</td>
<td>"12/11/2024 12:00:00 AM"</td>
<td>"11/11/2020 12:00:00 AM"</td>
<td>1210</td>
<td>4</td>
<td>"Hollenbeck"</td>
<td>429</td>
<td>2</td>
<td>354</td>
<td>"THEFT OF IDENTITY"</td>
<td>"0100"</td>
<td>35</td>
<td>"M"</td>
<td>"B"</td>
<td>502</td>
<td>"MULTI-UNIT DWELLING (APARTMENT…</td>
<td>null</td>
<td>null</td>
<td>"IC"</td>
<td>"Invest Cont"</td>
<td>354</td>
<td>null</td>
<td>null</td>
<td>null</td>
<td>"5300&nbsp;&nbsp;&nbsp;&nbsp;CRONUS&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;…</td>
<td>null</td>
<td>34.083</td>
<td>-118.1678</td>
</tr>
</tbody>
</table>
</div>
</div>
</div>
<p><strong>Version 2</strong></p>
<div id="245f62f6" class="cell" data-execution_count="5">
<div class="code-copy-outer-scaffold"><div class="sourceCode cell-code" id="cb6" style="background: #f1f3f5;"><pre class="sourceCode python code-with-copy"><code class="sourceCode python"><span id="cb6-1">(data</span>
<span id="cb6-2"> .gather(<span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">5</span>)</span>
<span id="cb6-3"> )</span></code></pre></div></div>
<div class="cell-output cell-output-display" data-execution_count="5">
<div><style>
.dataframe > thead > tr,
.dataframe > tbody > tr {
  text-align: right;
  white-space: pre-wrap;
}
</style>
<small>shape: (1, 28)</small>
<table class="dataframe caption-top table table-sm table-striped small" data-border="1">
<thead>
<tr class="header">
<th data-quarto-table-cell-role="th">DR_NO</th>
<th data-quarto-table-cell-role="th">Date Rptd</th>
<th data-quarto-table-cell-role="th">DATE OCC</th>
<th data-quarto-table-cell-role="th">TIME OCC</th>
<th data-quarto-table-cell-role="th">AREA</th>
<th data-quarto-table-cell-role="th">AREA NAME</th>
<th data-quarto-table-cell-role="th">Rpt Dist No</th>
<th data-quarto-table-cell-role="th">Part 1-2</th>
<th data-quarto-table-cell-role="th">Crm Cd</th>
<th data-quarto-table-cell-role="th">Crm Cd Desc</th>
<th data-quarto-table-cell-role="th">Mocodes</th>
<th data-quarto-table-cell-role="th">Vict Age</th>
<th data-quarto-table-cell-role="th">Vict Sex</th>
<th data-quarto-table-cell-role="th">Vict Descent</th>
<th data-quarto-table-cell-role="th">Premis Cd</th>
<th data-quarto-table-cell-role="th">Premis Desc</th>
<th data-quarto-table-cell-role="th">Weapon Used Cd</th>
<th data-quarto-table-cell-role="th">Weapon Desc</th>
<th data-quarto-table-cell-role="th">Status</th>
<th data-quarto-table-cell-role="th">Status Desc</th>
<th data-quarto-table-cell-role="th">Crm Cd 1</th>
<th data-quarto-table-cell-role="th">Crm Cd 2</th>
<th data-quarto-table-cell-role="th">Crm Cd 3</th>
<th data-quarto-table-cell-role="th">Crm Cd 4</th>
<th data-quarto-table-cell-role="th">LOCATION</th>
<th data-quarto-table-cell-role="th">Cross Street</th>
<th data-quarto-table-cell-role="th">LAT</th>
<th data-quarto-table-cell-role="th">LON</th>
</tr>
<tr class="even">
<td>i64</td>
<td>str</td>
<td>str</td>
<td>i64</td>
<td>i64</td>
<td>str</td>
<td>i64</td>
<td>i64</td>
<td>i64</td>
<td>str</td>
<td>str</td>
<td>i64</td>
<td>str</td>
<td>str</td>
<td>i64</td>
<td>str</td>
<td>i64</td>
<td>str</td>
<td>str</td>
<td>str</td>
<td>i64</td>
<td>i64</td>
<td>str</td>
<td>str</td>
<td>str</td>
<td>str</td>
<td>f64</td>
<td>f64</td>
</tr>
</thead>
<tbody>
<tr class="odd">
<td>240412063</td>
<td>"12/11/2024 12:00:00 AM"</td>
<td>"11/11/2020 12:00:00 AM"</td>
<td>1210</td>
<td>4</td>
<td>"Hollenbeck"</td>
<td>429</td>
<td>2</td>
<td>354</td>
<td>"THEFT OF IDENTITY"</td>
<td>"0100"</td>
<td>35</td>
<td>"M"</td>
<td>"B"</td>
<td>502</td>
<td>"MULTI-UNIT DWELLING (APARTMENT…</td>
<td>null</td>
<td>null</td>
<td>"IC"</td>
<td>"Invest Cont"</td>
<td>354</td>
<td>null</td>
<td>null</td>
<td>null</td>
<td>"5300&nbsp;&nbsp;&nbsp;&nbsp;CRONUS&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;…</td>
<td>null</td>
<td>34.083</td>
<td>-118.1678</td>
</tr>
</tbody>
</table>
</div>
</div>
</div>
<p>Personally, I prefer version 2, but you can use whichever one you like.</p>
<div class="callout callout-style-default callout-note callout-titled">
<div class="callout-header d-flex align-content-center">
<div class="callout-icon-container">
<i class="callout-icon"></i>
</div>
<div class="callout-title-container flex-fill">
Note
</div>
</div>
<div class="callout-body-container callout-body">
<p>You’ve probably noticed that the selected row is displayed differently by the two libraries. Polars displays it horizontally, while pandas displays it vertically.</p>
</div>
</div>
<p>If we wanted Polars to produce output closer to the pandas output, we could use <code>to_dict</code> to produce a list and then retrieve the first item in that list, which happens to be the dictionary we want.</p>
<div id="4b22a7cf" class="cell" data-execution_count="6">
<div class="code-copy-outer-scaffold"><div class="sourceCode cell-code" id="cb7" style="background: #f1f3f5;"><pre class="sourceCode python code-with-copy"><code class="sourceCode python"><span id="cb7-1">(data</span>
<span id="cb7-2"> .gather(<span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">5</span>)</span>
<span id="cb7-3"> .to_dicts()[<span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">0</span>]</span>
<span id="cb7-4"> )</span></code></pre></div></div>
<div class="cell-output cell-output-display" data-execution_count="6">
<pre><code>{'DR_NO': 240412063,
 'Date Rptd': '12/11/2024 12:00:00 AM',
 'DATE OCC': '11/11/2020 12:00:00 AM',
 'TIME OCC': 1210,
 'AREA': 4,
 'AREA NAME': 'Hollenbeck',
 'Rpt Dist No': 429,
 'Part 1-2': 2,
 'Crm Cd': 354,
 'Crm Cd Desc': 'THEFT OF IDENTITY',
 'Mocodes': '0100',
 'Vict Age': 35,
 'Vict Sex': 'M',
 'Vict Descent': 'B',
 'Premis Cd': 502,
 'Premis Desc': 'MULTI-UNIT DWELLING (APARTMENT, DUPLEX, ETC)',
 'Weapon Used Cd': None,
 'Weapon Desc': None,
 'Status': 'IC',
 'Status Desc': 'Invest Cont',
 'Crm Cd 1': 354,
 'Crm Cd 2': None,
 'Crm Cd 3': None,
 'Crm Cd 4': None,
 'LOCATION': '5300    CRONUS                       ST',
 'Cross Street': None,
 'LAT': 34.083,
 'LON': -118.1678}</code></pre>
</div>
</div>
<p>Although this is a dictionary, it is displayed vertically and therefore looks closer to the pandas output.</p>
</section>
<section id="selecting-columns" class="level2">
<h2 data-anchor-id="selecting-columns">Selecting columns</h2>
<p>Now let’s use <code>loc</code> to select a single column in <em>df</em>. The <code>:</code> means “return all the rows in the dataframe.”</p>
<div id="4815cf9b" class="cell" data-execution_count="7">
<div class="code-copy-outer-scaffold"><div class="sourceCode cell-code" id="cb9" style="background: #f1f3f5;"><pre class="sourceCode python code-with-copy"><code class="sourceCode python"><span id="cb9-1">df.loc[:, <span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">'Crm Cd 1'</span>]</span></code></pre></div></div>
<div class="cell-output cell-output-display" data-execution_count="7">
<pre><code>0          354.0
1          230.0
2          354.0
3          331.0
4          420.0
           ...  
1004889    510.0
1004890    745.0
1004891    341.0
1004892    230.0
1004893    510.0
Name: Crm Cd 1, Length: 1004894, dtype: float64</code></pre>
</div>
</div>
<p>In Polars, we can display a single column by using the <code>select</code> method.</p>
<div id="aaa98125" class="cell" data-execution_count="8">
<div class="code-copy-outer-scaffold"><div class="sourceCode cell-code" id="cb11" style="background: #f1f3f5;"><pre class="sourceCode python code-with-copy"><code class="sourceCode python"><span id="cb11-1">data.select(<span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">'Crm Cd 1'</span>)</span></code></pre></div></div>
<div class="cell-output cell-output-display" data-execution_count="8">
<div><style>
.dataframe > thead > tr,
.dataframe > tbody > tr {
  text-align: right;
  white-space: pre-wrap;
}
</style>
<small>shape: (1_004_894, 1)</small>
<table class="dataframe caption-top table table-sm table-striped small" data-border="1">
<thead>
<tr class="header">
<th data-quarto-table-cell-role="th">Crm Cd 1</th>
</tr>
<tr class="even">
<td>i64</td>
</tr>
</thead>
<tbody>
<tr class="odd">
<td>354</td>
</tr>
<tr class="even">
<td>230</td>
</tr>
<tr class="odd">
<td>354</td>
</tr>
<tr class="even">
<td>331</td>
</tr>
<tr class="odd">
<td>420</td>
</tr>
<tr class="even">
<td>…</td>
</tr>
<tr class="odd">
<td>510</td>
</tr>
<tr class="even">
<td>745</td>
</tr>
<tr class="odd">
<td>341</td>
</tr>
<tr class="even">
<td>230</td>
</tr>
<tr class="odd">
<td>510</td>
</tr>
</tbody>
</table>
</div>
</div>
</div>
<p>The first thing to note between these two outputs is that when a single column is selected in pandas, the output is a series, unlike in Polars, where the output is always a dataframe regardless of how many columns you select. Another difference is that the pandas output shows an index. Polars dataframes, on the other hand, do not have an index unless you create one.</p>
<p>If we really want the Polars output to be a series as well, we can do it with <code>to_series</code>.</p>
<div id="bde5efd5" class="cell" data-execution_count="9">
<div class="code-copy-outer-scaffold"><div class="sourceCode cell-code" id="cb12" style="background: #f1f3f5;"><pre class="sourceCode python code-with-copy"><code class="sourceCode python"><span id="cb12-1">(data</span>
<span id="cb12-2"> .select(<span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">'Crm Cd 1'</span>)</span>
<span id="cb12-3"> .to_series()</span>
<span id="cb12-4"> )</span></code></pre></div></div>
<div class="cell-output cell-output-display" data-execution_count="9">
<div><style>
.dataframe > thead > tr,
.dataframe > tbody > tr {
  text-align: right;
  white-space: pre-wrap;
}
</style>
<small>shape: (1_004_894,)</small>
<table class="dataframe caption-top table table-sm table-striped small" data-border="1">
<thead>
<tr class="header">
<th data-quarto-table-cell-role="th">Crm Cd 1</th>
</tr>
<tr class="even">
<td>i64</td>
</tr>
</thead>
<tbody>
<tr class="odd">
<td>354</td>
</tr>
<tr class="even">
<td>230</td>
</tr>
<tr class="odd">
<td>354</td>
</tr>
<tr class="even">
<td>331</td>
</tr>
<tr class="odd">
<td>420</td>
</tr>
<tr class="even">
<td>…</td>
</tr>
<tr class="odd">
<td>510</td>
</tr>
<tr class="even">
<td>745</td>
</tr>
<tr class="odd">
<td>341</td>
</tr>
<tr class="even">
<td>230</td>
</tr>
<tr class="odd">
<td>510</td>
</tr>
</tbody>
</table>
</div>
</div>
</div>
<p>The two Polars outputs look the same, but they are different types. The way I distinguish between them is by looking at their shape at the top. The dataframe shows both the number of rows and columns: (1004894, 1), while the series only shows the number of rows: (1004894,).</p>
<p>Here’s how we can select two columns and all the rows in the pandas dataframe.</p>
<div id="0e982e3c" class="cell" data-execution_count="10">
<div class="code-copy-outer-scaffold"><div class="sourceCode cell-code" id="cb13" style="background: #f1f3f5;"><pre class="sourceCode python code-with-copy"><code class="sourceCode python"><span id="cb13-1">df.loc[:, [<span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">'AREA'</span>, <span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">'TIME OCC'</span>]]</span></code></pre></div></div>
<div class="cell-output cell-output-display" data-execution_count="10">
<div>


<table class="dataframe caption-top table table-sm table-striped small" data-border="1">
<thead>
<tr class="header">
<th data-quarto-table-cell-role="th"></th>
<th data-quarto-table-cell-role="th">AREA</th>
<th data-quarto-table-cell-role="th">TIME OCC</th>
</tr>
</thead>
<tbody>
<tr class="odd">
<th data-quarto-table-cell-role="th">0</th>
<td>15</td>
<td>845</td>
</tr>
<tr class="even">
<th data-quarto-table-cell-role="th">1</th>
<td>15</td>
<td>1845</td>
</tr>
<tr class="odd">
<th data-quarto-table-cell-role="th">2</th>
<td>9</td>
<td>1240</td>
</tr>
<tr class="even">
<th data-quarto-table-cell-role="th">3</th>
<td>7</td>
<td>1310</td>
</tr>
<tr class="odd">
<th data-quarto-table-cell-role="th">4</th>
<td>14</td>
<td>1830</td>
</tr>
<tr class="even">
<th data-quarto-table-cell-role="th">...</th>
<td>...</td>
<td>...</td>
</tr>
<tr class="odd">
<th data-quarto-table-cell-role="th">1004889</th>
<td>7</td>
<td>1400</td>
</tr>
<tr class="even">
<th data-quarto-table-cell-role="th">1004890</th>
<td>1</td>
<td>100</td>
</tr>
<tr class="odd">
<th data-quarto-table-cell-role="th">1004891</th>
<td>4</td>
<td>2330</td>
</tr>
<tr class="even">
<th data-quarto-table-cell-role="th">1004892</th>
<td>3</td>
<td>1500</td>
</tr>
<tr class="odd">
<th data-quarto-table-cell-role="th">1004893</th>
<td>9</td>
<td>2300</td>
</tr>
</tbody>
</table>

<p>1004894 rows × 2 columns</p>
</div>
</div>
</div>
<p>And here’s how to do it the Polars way.</p>
<div id="26395288" class="cell" data-execution_count="11">
<div class="code-copy-outer-scaffold"><div class="sourceCode cell-code" id="cb14" style="background: #f1f3f5;"><pre class="sourceCode python code-with-copy"><code class="sourceCode python"><span id="cb14-1">(data</span>
<span id="cb14-2"> .select(<span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">'AREA'</span>,<span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">'TIME OCC'</span>)</span>
<span id="cb14-3"> )</span></code></pre></div></div>
<div class="cell-output cell-output-display" data-execution_count="11">
<div><style>
.dataframe > thead > tr,
.dataframe > tbody > tr {
  text-align: right;
  white-space: pre-wrap;
}
</style>
<small>shape: (1_004_894, 2)</small>
<table class="dataframe caption-top table table-sm table-striped small" data-border="1">
<thead>
<tr class="header">
<th data-quarto-table-cell-role="th">AREA</th>
<th data-quarto-table-cell-role="th">TIME OCC</th>
</tr>
<tr class="even">
<td>i64</td>
<td>i64</td>
</tr>
</thead>
<tbody>
<tr class="odd">
<td>15</td>
<td>845</td>
</tr>
<tr class="even">
<td>15</td>
<td>1845</td>
</tr>
<tr class="odd">
<td>9</td>
<td>1240</td>
</tr>
<tr class="even">
<td>7</td>
<td>1310</td>
</tr>
<tr class="odd">
<td>14</td>
<td>1830</td>
</tr>
<tr class="even">
<td>…</td>
<td>…</td>
</tr>
<tr class="odd">
<td>7</td>
<td>1400</td>
</tr>
<tr class="even">
<td>1</td>
<td>100</td>
</tr>
<tr class="odd">
<td>4</td>
<td>2330</td>
</tr>
<tr class="even">
<td>3</td>
<td>1500</td>
</tr>
<tr class="odd">
<td>9</td>
<td>2300</td>
</tr>
</tbody>
</table>
</div>
</div>
</div>
</section>
<section id="combine-with-list-of-rows-and-column-labels" class="level2">
<h2 data-anchor-id="combine-with-list-of-rows-and-column-labels">Combine with list of rows and column labels</h2>
<p>We can use a list to select the rows we want to return in both pandas and Polars dataframes.</p>
<div id="8a90a28b" class="cell" data-execution_count="12">
<div class="code-copy-outer-scaffold"><div class="sourceCode cell-code" id="cb15" style="background: #f1f3f5;"><pre class="sourceCode python code-with-copy"><code class="sourceCode python"><span id="cb15-1">df.loc[[<span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">0</span>,<span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">1</span>,<span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">2</span>], [<span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">'AREA'</span>, <span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">'TIME OCC'</span>]]</span></code></pre></div></div>
<div class="cell-output cell-output-display" data-execution_count="12">
<div>


<table class="dataframe caption-top table table-sm table-striped small" data-border="1">
<thead>
<tr class="header">
<th data-quarto-table-cell-role="th"></th>
<th data-quarto-table-cell-role="th">AREA</th>
<th data-quarto-table-cell-role="th">TIME OCC</th>
</tr>
</thead>
<tbody>
<tr class="odd">
<th data-quarto-table-cell-role="th">0</th>
<td>15</td>
<td>845</td>
</tr>
<tr class="even">
<th data-quarto-table-cell-role="th">1</th>
<td>15</td>
<td>1845</td>
</tr>
<tr class="odd">
<th data-quarto-table-cell-role="th">2</th>
<td>9</td>
<td>1240</td>
</tr>
</tbody>
</table>

</div>
</div>
</div>
<p>In a Polars dataframe, it is not necessary to use a list to select columns.</p>
<div id="c51f15f7" class="cell" data-execution_count="13">
<div class="code-copy-outer-scaffold"><div class="sourceCode cell-code" id="cb16" style="background: #f1f3f5;"><pre class="sourceCode python code-with-copy"><code class="sourceCode python"><span id="cb16-1">(data</span>
<span id="cb16-2"> .gather([<span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">0</span>,<span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">1</span>,<span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">2</span>])</span>
<span id="cb16-3"> .select(<span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">'AREA'</span>, <span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">'TIME OCC'</span>)</span>
<span id="cb16-4"> )</span></code></pre></div></div>
<div class="cell-output cell-output-display" data-execution_count="13">
<div><style>
.dataframe > thead > tr,
.dataframe > tbody > tr {
  text-align: right;
  white-space: pre-wrap;
}
</style>
<small>shape: (3, 2)</small>
<table class="dataframe caption-top table table-sm table-striped small" data-border="1">
<thead>
<tr class="header">
<th data-quarto-table-cell-role="th">AREA</th>
<th data-quarto-table-cell-role="th">TIME OCC</th>
</tr>
<tr class="even">
<td>i64</td>
<td>i64</td>
</tr>
</thead>
<tbody>
<tr class="odd">
<td>15</td>
<td>845</td>
</tr>
<tr class="even">
<td>15</td>
<td>1845</td>
</tr>
<tr class="odd">
<td>9</td>
<td>1240</td>
</tr>
</tbody>
</table>
</div>
</div>
</div>
</section>
<section id="selecting-rows-and-columns-over-a-range" class="level2">
<h2 data-anchor-id="selecting-rows-and-columns-over-a-range">Selecting rows and columns over a range</h2>
<p>Instead of listing the rows or columns we want to select, we can select them over a range. Let’s get the rows from 0 to 2 and the columns from <em>TIME OCC</em> to <em>Part 1-2</em> in both dataframes.</p>
<div id="a0a9603f" class="cell" data-execution_count="14">
<div class="code-copy-outer-scaffold"><div class="sourceCode cell-code" id="cb17" style="background: #f1f3f5;"><pre class="sourceCode python code-with-copy"><code class="sourceCode python"><span id="cb17-1">df.loc[<span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">0</span>:<span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">2</span>, <span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">'TIME OCC'</span>:<span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">'Part 1-2'</span>]</span></code></pre></div></div>
<div class="cell-output cell-output-display" data-execution_count="14">
<div>


<table class="dataframe caption-top table table-sm table-striped small" data-border="1">
<thead>
<tr class="header">
<th data-quarto-table-cell-role="th"></th>
<th data-quarto-table-cell-role="th">TIME OCC</th>
<th data-quarto-table-cell-role="th">AREA</th>
<th data-quarto-table-cell-role="th">AREA NAME</th>
<th data-quarto-table-cell-role="th">Rpt Dist No</th>
<th data-quarto-table-cell-role="th">Part 1-2</th>
</tr>
</thead>
<tbody>
<tr class="odd">
<th data-quarto-table-cell-role="th">0</th>
<td>845</td>
<td>15</td>
<td>N Hollywood</td>
<td>1502</td>
<td>2</td>
</tr>
<tr class="even">
<th data-quarto-table-cell-role="th">1</th>
<td>1845</td>
<td>15</td>
<td>N Hollywood</td>
<td>1521</td>
<td>1</td>
</tr>
<tr class="odd">
<th data-quarto-table-cell-role="th">2</th>
<td>1240</td>
<td>9</td>
<td>Van Nuys</td>
<td>933</td>
<td>2</td>
</tr>
</tbody>
</table>

</div>
</div>
</div>
<div class="callout callout-style-default callout-note callout-titled">
<div class="callout-header d-flex align-content-center">
<div class="callout-icon-container">
<i class="callout-icon"></i>
</div>
<div class="callout-title-container flex-fill">
Note
</div>
</div>
<div class="callout-body-container callout-body">
<p>In pandas, range selection using <code>loc</code> is inclusive. Thus, selecting rows from 0 to 2 includes the row at index position 2.</p>
</div>
</div>
<p>It turns out that in Polars, there is no direct way to select columns over a range by their names. However, we can achieve the same result as in the pandas example using two workarounds. Both require selecting columns by their index positions.</p>
<p>I’ll begin with the one that uses a list comprehension.</p>
<div id="3184b555" class="cell" data-execution_count="15">
<div class="code-copy-outer-scaffold"><div class="sourceCode cell-code" id="cb18" style="background: #f1f3f5;"><pre class="sourceCode python code-with-copy"><code class="sourceCode python"><span id="cb18-1">cols <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span> data.columns</span>
<span id="cb18-2">data.<span class="bu" style="color: null;
background-color: null;
font-style: inherit;">slice</span>(<span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">0</span>, <span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">3</span>).select(cols[cols.index(<span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"TIME OCC"</span>) : cols.index(<span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"Part 1-2"</span>) <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">+</span> <span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">1</span>])</span></code></pre></div></div>
<div class="cell-output cell-output-display" data-execution_count="15">
<div><style>
.dataframe > thead > tr,
.dataframe > tbody > tr {
  text-align: right;
  white-space: pre-wrap;
}
</style>
<small>shape: (3, 5)</small>
<table class="dataframe caption-top table table-sm table-striped small" data-border="1">
<thead>
<tr class="header">
<th data-quarto-table-cell-role="th">TIME OCC</th>
<th data-quarto-table-cell-role="th">AREA</th>
<th data-quarto-table-cell-role="th">AREA NAME</th>
<th data-quarto-table-cell-role="th">Rpt Dist No</th>
<th data-quarto-table-cell-role="th">Part 1-2</th>
</tr>
<tr class="even">
<td>i64</td>
<td>i64</td>
<td>str</td>
<td>i64</td>
<td>i64</td>
</tr>
</thead>
<tbody>
<tr class="odd">
<td>845</td>
<td>15</td>
<td>"N Hollywood"</td>
<td>1502</td>
<td>2</td>
</tr>
<tr class="even">
<td>1845</td>
<td>15</td>
<td>"N Hollywood"</td>
<td>1521</td>
<td>1</td>
</tr>
<tr class="odd">
<td>1240</td>
<td>9</td>
<td>"Van Nuys"</td>
<td>933</td>
<td>2</td>
</tr>
</tbody>
</table>
</div>
</div>
</div>
<div class="callout callout-style-default callout-note callout-titled">
<div class="callout-header d-flex align-content-center">
<div class="callout-icon-container">
<i class="callout-icon"></i>
</div>
<div class="callout-title-container flex-fill">
Note
</div>
</div>
<div class="callout-body-container callout-body">
<p>We added 1 because, in Polars, index selection is not inclusive. Without it, we would miss the <em>Part 1-2</em> column in the resulting dataframe.</p>
</div>
</div>
<p>I would argue that the above method is not idiomatic. List comprehensions are not native to Polars; remember that the library is written in Rust. Here’s the idiomatic approach.</p>
<div id="e66971f2" class="cell" data-execution_count="16">
<div class="code-copy-outer-scaffold"><div class="sourceCode cell-code" id="cb19" style="background: #f1f3f5;"><pre class="sourceCode python code-with-copy"><code class="sourceCode python"><span id="cb19-1">(data</span>
<span id="cb19-2"> .select(pl.nth(<span class="bu" style="color: null;
background-color: null;
font-style: inherit;">range</span>(data.get_column_index(<span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">'TIME OCC'</span>), data.get_column_index(<span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">'Part 1-2'</span>) <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">+</span> <span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">1</span>)))</span>
<span id="cb19-3"> )</span></code></pre></div></div>
<div class="cell-output cell-output-display" data-execution_count="16">
<div><style>
.dataframe > thead > tr,
.dataframe > tbody > tr {
  text-align: right;
  white-space: pre-wrap;
}
</style>
<small>shape: (1_004_894, 5)</small>
<table class="dataframe caption-top table table-sm table-striped small" data-border="1">
<thead>
<tr class="header">
<th data-quarto-table-cell-role="th">TIME OCC</th>
<th data-quarto-table-cell-role="th">AREA</th>
<th data-quarto-table-cell-role="th">AREA NAME</th>
<th data-quarto-table-cell-role="th">Rpt Dist No</th>
<th data-quarto-table-cell-role="th">Part 1-2</th>
</tr>
<tr class="even">
<td>i64</td>
<td>i64</td>
<td>str</td>
<td>i64</td>
<td>i64</td>
</tr>
</thead>
<tbody>
<tr class="odd">
<td>845</td>
<td>15</td>
<td>"N Hollywood"</td>
<td>1502</td>
<td>2</td>
</tr>
<tr class="even">
<td>1845</td>
<td>15</td>
<td>"N Hollywood"</td>
<td>1521</td>
<td>1</td>
</tr>
<tr class="odd">
<td>1240</td>
<td>9</td>
<td>"Van Nuys"</td>
<td>933</td>
<td>2</td>
</tr>
<tr class="even">
<td>1310</td>
<td>7</td>
<td>"Wilshire"</td>
<td>782</td>
<td>1</td>
</tr>
<tr class="odd">
<td>1830</td>
<td>14</td>
<td>"Pacific"</td>
<td>1454</td>
<td>1</td>
</tr>
<tr class="even">
<td>…</td>
<td>…</td>
<td>…</td>
<td>…</td>
<td>…</td>
</tr>
<tr class="odd">
<td>1400</td>
<td>7</td>
<td>"Wilshire"</td>
<td>788</td>
<td>1</td>
</tr>
<tr class="even">
<td>100</td>
<td>1</td>
<td>"Central"</td>
<td>101</td>
<td>2</td>
</tr>
<tr class="odd">
<td>2330</td>
<td>4</td>
<td>"Hollenbeck"</td>
<td>421</td>
<td>1</td>
</tr>
<tr class="even">
<td>1500</td>
<td>3</td>
<td>"Southwest"</td>
<td>358</td>
<td>1</td>
</tr>
<tr class="odd">
<td>2300</td>
<td>9</td>
<td>"Van Nuys"</td>
<td>914</td>
<td>1</td>
</tr>
</tbody>
</table>
</div>
</div>
</div>
<p>Because <code>loc</code> accepts list comprehensions, we can add logic to customize our row or column selection. The example below pulls out every third row and selects only the columns that contain <em>‘Crm’</em> in their names.</p>
<div id="42bb707c" class="cell" data-execution_count="17">
<div class="code-copy-outer-scaffold"><div class="sourceCode cell-code" id="cb20" style="background: #f1f3f5;"><pre class="sourceCode python code-with-copy"><code class="sourceCode python"><span id="cb20-1">df.loc[[<span class="va" style="color: #111111;
background-color: null;
font-style: inherit;">True</span> <span class="cf" style="color: #003B4F;
background-color: null;
font-weight: bold;
font-style: inherit;">if</span> i<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">%</span><span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">3</span> <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">==</span> <span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">2</span> <span class="cf" style="color: #003B4F;
background-color: null;
font-weight: bold;
font-style: inherit;">else</span> <span class="va" style="color: #111111;
background-color: null;
font-style: inherit;">False</span> <span class="cf" style="color: #003B4F;
background-color: null;
font-weight: bold;
font-style: inherit;">for</span> i <span class="kw" style="color: #003B4F;
background-color: null;
font-weight: bold;
font-style: inherit;">in</span> <span class="bu" style="color: null;
background-color: null;
font-style: inherit;">range</span>(<span class="bu" style="color: null;
background-color: null;
font-style: inherit;">len</span>(df))],</span>
<span id="cb20-2">       [<span class="va" style="color: #111111;
background-color: null;
font-style: inherit;">True</span> <span class="cf" style="color: #003B4F;
background-color: null;
font-weight: bold;
font-style: inherit;">if</span> <span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">'Crm'</span> <span class="kw" style="color: #003B4F;
background-color: null;
font-weight: bold;
font-style: inherit;">in</span> col <span class="cf" style="color: #003B4F;
background-color: null;
font-weight: bold;
font-style: inherit;">else</span> <span class="va" style="color: #111111;
background-color: null;
font-style: inherit;">False</span> <span class="cf" style="color: #003B4F;
background-color: null;
font-weight: bold;
font-style: inherit;">for</span> col <span class="kw" style="color: #003B4F;
background-color: null;
font-weight: bold;
font-style: inherit;">in</span> df.columns]] </span></code></pre></div></div>
<div class="cell-output cell-output-display" data-execution_count="17">
<div>


<table class="dataframe caption-top table table-sm table-striped small" data-border="1">
<thead>
<tr class="header">
<th data-quarto-table-cell-role="th"></th>
<th data-quarto-table-cell-role="th">Crm Cd</th>
<th data-quarto-table-cell-role="th">Crm Cd Desc</th>
<th data-quarto-table-cell-role="th">Crm Cd 1</th>
<th data-quarto-table-cell-role="th">Crm Cd 2</th>
<th data-quarto-table-cell-role="th">Crm Cd 3</th>
<th data-quarto-table-cell-role="th">Crm Cd 4</th>
</tr>
</thead>
<tbody>
<tr class="odd">
<th data-quarto-table-cell-role="th">2</th>
<td>354</td>
<td>THEFT OF IDENTITY</td>
<td>354.0</td>
<td>NaN</td>
<td>NaN</td>
<td>NaN</td>
</tr>
<tr class="even">
<th data-quarto-table-cell-role="th">5</th>
<td>354</td>
<td>THEFT OF IDENTITY</td>
<td>354.0</td>
<td>NaN</td>
<td>NaN</td>
<td>NaN</td>
</tr>
<tr class="odd">
<th data-quarto-table-cell-role="th">8</th>
<td>354</td>
<td>THEFT OF IDENTITY</td>
<td>354.0</td>
<td>NaN</td>
<td>NaN</td>
<td>NaN</td>
</tr>
<tr class="even">
<th data-quarto-table-cell-role="th">11</th>
<td>354</td>
<td>THEFT OF IDENTITY</td>
<td>354.0</td>
<td>NaN</td>
<td>NaN</td>
<td>NaN</td>
</tr>
<tr class="odd">
<th data-quarto-table-cell-role="th">14</th>
<td>330</td>
<td>BURGLARY FROM VEHICLE</td>
<td>330.0</td>
<td>NaN</td>
<td>NaN</td>
<td>NaN</td>
</tr>
<tr class="even">
<th data-quarto-table-cell-role="th">...</th>
<td>...</td>
<td>...</td>
<td>...</td>
<td>...</td>
<td>...</td>
<td>...</td>
</tr>
<tr class="odd">
<th data-quarto-table-cell-role="th">1004879</th>
<td>354</td>
<td>THEFT OF IDENTITY</td>
<td>354.0</td>
<td>NaN</td>
<td>NaN</td>
<td>NaN</td>
</tr>
<tr class="even">
<th data-quarto-table-cell-role="th">1004882</th>
<td>230</td>
<td>ASSAULT WITH DEADLY WEAPON, AGGRAVATED ASSAULT</td>
<td>230.0</td>
<td>NaN</td>
<td>NaN</td>
<td>NaN</td>
</tr>
<tr class="odd">
<th data-quarto-table-cell-role="th">1004885</th>
<td>440</td>
<td>THEFT PLAIN - PETTY ($950 &amp; UNDER)</td>
<td>440.0</td>
<td>NaN</td>
<td>NaN</td>
<td>NaN</td>
</tr>
<tr class="even">
<th data-quarto-table-cell-role="th">1004888</th>
<td>341</td>
<td>THEFT-GRAND ($950.01 &amp; OVER)EXCPT,GUNS,FOWL,LI...</td>
<td>341.0</td>
<td>NaN</td>
<td>NaN</td>
<td>NaN</td>
</tr>
<tr class="odd">
<th data-quarto-table-cell-role="th">1004891</th>
<td>341</td>
<td>THEFT-GRAND ($950.01 &amp; OVER)EXCPT,GUNS,FOWL,LI...</td>
<td>341.0</td>
<td>NaN</td>
<td>NaN</td>
<td>NaN</td>
</tr>
</tbody>
</table>

<p>334964 rows × 6 columns</p>
</div>
</div>
</div>
<p>We can achieve similar results in Polars by creating an index or by using <code>gather_every</code>. The example below creates an index on the dataframe and performs a modulo calculation on the generated index numbers to get the desired rows. Then we use a regex pattern to select the columns that contain the string <em>‘Crm’</em>.</p>
<div id="a4593c66" class="cell" data-execution_count="18">
<div class="code-copy-outer-scaffold"><div class="sourceCode cell-code" id="cb21" style="background: #f1f3f5;"><pre class="sourceCode python code-with-copy"><code class="sourceCode python"><span id="cb21-1">(data</span>
<span id="cb21-2"> .with_row_index()</span>
<span id="cb21-3"> .<span class="bu" style="color: null;
background-color: null;
font-style: inherit;">filter</span>(pl.col(<span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">'index'</span>) <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">%</span> <span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">3</span> <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">==</span> <span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">2</span>)</span>
<span id="cb21-4"> .select(pl.col(<span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">'^.*Crm.*$'</span>))</span>
<span id="cb21-5">)</span></code></pre></div></div>
<div class="cell-output cell-output-display" data-execution_count="18">
<div><style>
.dataframe > thead > tr,
.dataframe > tbody > tr {
  text-align: right;
  white-space: pre-wrap;
}
</style>
<small>shape: (334_964, 6)</small>
<table class="dataframe caption-top table table-sm table-striped small" data-border="1">
<thead>
<tr class="header">
<th data-quarto-table-cell-role="th">Crm Cd</th>
<th data-quarto-table-cell-role="th">Crm Cd Desc</th>
<th data-quarto-table-cell-role="th">Crm Cd 1</th>
<th data-quarto-table-cell-role="th">Crm Cd 2</th>
<th data-quarto-table-cell-role="th">Crm Cd 3</th>
<th data-quarto-table-cell-role="th">Crm Cd 4</th>
</tr>
<tr class="even">
<td>i64</td>
<td>str</td>
<td>i64</td>
<td>i64</td>
<td>str</td>
<td>str</td>
</tr>
</thead>
<tbody>
<tr class="odd">
<td>354</td>
<td>"THEFT OF IDENTITY"</td>
<td>354</td>
<td>null</td>
<td>null</td>
<td>null</td>
</tr>
<tr class="even">
<td>354</td>
<td>"THEFT OF IDENTITY"</td>
<td>354</td>
<td>null</td>
<td>null</td>
<td>null</td>
</tr>
<tr class="odd">
<td>354</td>
<td>"THEFT OF IDENTITY"</td>
<td>354</td>
<td>null</td>
<td>null</td>
<td>null</td>
</tr>
<tr class="even">
<td>354</td>
<td>"THEFT OF IDENTITY"</td>
<td>354</td>
<td>null</td>
<td>null</td>
<td>null</td>
</tr>
<tr class="odd">
<td>330</td>
<td>"BURGLARY FROM VEHICLE"</td>
<td>330</td>
<td>null</td>
<td>null</td>
<td>null</td>
</tr>
<tr class="even">
<td>…</td>
<td>…</td>
<td>…</td>
<td>…</td>
<td>…</td>
<td>…</td>
</tr>
<tr class="odd">
<td>354</td>
<td>"THEFT OF IDENTITY"</td>
<td>354</td>
<td>null</td>
<td>null</td>
<td>null</td>
</tr>
<tr class="even">
<td>230</td>
<td>"ASSAULT WITH DEADLY WEAPON, AG…</td>
<td>230</td>
<td>null</td>
<td>null</td>
<td>null</td>
</tr>
<tr class="odd">
<td>440</td>
<td>"THEFT PLAIN - PETTY ($950 &amp; UN…</td>
<td>440</td>
<td>null</td>
<td>null</td>
<td>null</td>
</tr>
<tr class="even">
<td>341</td>
<td>"THEFT-GRAND ($950.01 &amp; OVER)EX…</td>
<td>341</td>
<td>null</td>
<td>null</td>
<td>null</td>
</tr>
<tr class="odd">
<td>341</td>
<td>"THEFT-GRAND ($950.01 &amp; OVER)EX…</td>
<td>341</td>
<td>null</td>
<td>null</td>
<td>null</td>
</tr>
</tbody>
</table>
</div>
</div>
</div>
<p>An even more idiomatic way to write the above code is by using <code>gather_every</code>.</p>
<div id="647bdf6e" class="cell" data-execution_count="19">
<div class="code-copy-outer-scaffold"><div class="sourceCode cell-code" id="annotated-cell-19" data-llms-code-original="(data
 .gather_every(3, offset=2) # <1>
 .select(pl.col('^.*Crm.*$'))
)" style="background: #f1f3f5;"><pre class="sourceCode python code-annotation-code code-with-copy code-annotated"><code class="sourceCode python"><span id="annotated-cell-19-1">(data</span>
<a class="code-annotation-anchor" data-target-cell="annotated-cell-19" data-target-annotation="1" onclick="event.preventDefault();">1</a><span id="annotated-cell-19-2" class="code-annotation-target"> .gather_every(<span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">3</span>, offset<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span><span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">2</span>)</span>
<span id="annotated-cell-19-3"> .select(pl.col(<span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">'^.*Crm.*$'</span>))</span>
<span id="annotated-cell-19-4">)</span><div class="code-annotation-gutter-bg"></div><div class="code-annotation-gutter"></div></code></pre></div></div>
<div class="cell-annotation">
<dl class="code-annotation-container-grid">
<dt data-target-cell="annotated-cell-19" data-target-annotation="1">1</dt>
<dd>
<span data-code-cell="annotated-cell-19" data-code-lines="2" data-code-annotation="1">Remember that the condition <code>% 3 == 2</code> keeps rows where the index has a remainder of 2 when divided by 3, i.e., indices 2, 5, 8, 11, and so on. Therefore, the first row selected is index 2, which maps directly to <code>offset=2</code>.</span>
</dd>
</dl>
</div>
<div class="cell-output cell-output-display" data-execution_count="19">
<div><style>
.dataframe > thead > tr,
.dataframe > tbody > tr {
  text-align: right;
  white-space: pre-wrap;
}
</style>
<small>shape: (334_964, 6)</small>
<table class="dataframe caption-top table table-sm table-striped small" data-border="1">
<thead>
<tr class="header">
<th data-quarto-table-cell-role="th">Crm Cd</th>
<th data-quarto-table-cell-role="th">Crm Cd Desc</th>
<th data-quarto-table-cell-role="th">Crm Cd 1</th>
<th data-quarto-table-cell-role="th">Crm Cd 2</th>
<th data-quarto-table-cell-role="th">Crm Cd 3</th>
<th data-quarto-table-cell-role="th">Crm Cd 4</th>
</tr>
<tr class="even">
<td>i64</td>
<td>str</td>
<td>i64</td>
<td>i64</td>
<td>str</td>
<td>str</td>
</tr>
</thead>
<tbody>
<tr class="odd">
<td>354</td>
<td>"THEFT OF IDENTITY"</td>
<td>354</td>
<td>null</td>
<td>null</td>
<td>null</td>
</tr>
<tr class="even">
<td>354</td>
<td>"THEFT OF IDENTITY"</td>
<td>354</td>
<td>null</td>
<td>null</td>
<td>null</td>
</tr>
<tr class="odd">
<td>354</td>
<td>"THEFT OF IDENTITY"</td>
<td>354</td>
<td>null</td>
<td>null</td>
<td>null</td>
</tr>
<tr class="even">
<td>354</td>
<td>"THEFT OF IDENTITY"</td>
<td>354</td>
<td>null</td>
<td>null</td>
<td>null</td>
</tr>
<tr class="odd">
<td>330</td>
<td>"BURGLARY FROM VEHICLE"</td>
<td>330</td>
<td>null</td>
<td>null</td>
<td>null</td>
</tr>
<tr class="even">
<td>…</td>
<td>…</td>
<td>…</td>
<td>…</td>
<td>…</td>
<td>…</td>
</tr>
<tr class="odd">
<td>354</td>
<td>"THEFT OF IDENTITY"</td>
<td>354</td>
<td>null</td>
<td>null</td>
<td>null</td>
</tr>
<tr class="even">
<td>230</td>
<td>"ASSAULT WITH DEADLY WEAPON, AG…</td>
<td>230</td>
<td>null</td>
<td>null</td>
<td>null</td>
</tr>
<tr class="odd">
<td>440</td>
<td>"THEFT PLAIN - PETTY ($950 &amp; UN…</td>
<td>440</td>
<td>null</td>
<td>null</td>
<td>null</td>
</tr>
<tr class="even">
<td>341</td>
<td>"THEFT-GRAND ($950.01 &amp; OVER)EX…</td>
<td>341</td>
<td>null</td>
<td>null</td>
<td>null</td>
</tr>
<tr class="odd">
<td>341</td>
<td>"THEFT-GRAND ($950.01 &amp; OVER)EX…</td>
<td>341</td>
<td>null</td>
<td>null</td>
<td>null</td>
</tr>
</tbody>
</table>
</div>
</div>
</div>
<p>Just to show off how versatile Polars is, I’ll demonstrate other interesting ways to write the code above. I’ll begin with the one that uses the <code>arange</code> function. This also eliminates the need for an index.</p>
<div id="bcd958db" class="cell" data-execution_count="20">
<div class="code-copy-outer-scaffold"><div class="sourceCode cell-code" id="cb22" style="background: #f1f3f5;"><pre class="sourceCode python code-with-copy"><code class="sourceCode python"><span id="cb22-1">(data</span>
<span id="cb22-2"> .<span class="bu" style="color: null;
background-color: null;
font-style: inherit;">filter</span>((pl.arange(<span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">0</span>, pl.<span class="bu" style="color: null;
background-color: null;
font-style: inherit;">len</span>()) <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">%</span> <span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">3</span>) <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">==</span> <span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">2</span>)</span>
<span id="cb22-3"> .select(pl.col(<span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">'^.*Crm.*$'</span>))</span>
<span id="cb22-4"> )</span></code></pre></div></div>
<div class="cell-output cell-output-display" data-execution_count="20">
<div><style>
.dataframe > thead > tr,
.dataframe > tbody > tr {
  text-align: right;
  white-space: pre-wrap;
}
</style>
<small>shape: (334_964, 6)</small>
<table class="dataframe caption-top table table-sm table-striped small" data-border="1">
<thead>
<tr class="header">
<th data-quarto-table-cell-role="th">Crm Cd</th>
<th data-quarto-table-cell-role="th">Crm Cd Desc</th>
<th data-quarto-table-cell-role="th">Crm Cd 1</th>
<th data-quarto-table-cell-role="th">Crm Cd 2</th>
<th data-quarto-table-cell-role="th">Crm Cd 3</th>
<th data-quarto-table-cell-role="th">Crm Cd 4</th>
</tr>
<tr class="even">
<td>i64</td>
<td>str</td>
<td>i64</td>
<td>i64</td>
<td>str</td>
<td>str</td>
</tr>
</thead>
<tbody>
<tr class="odd">
<td>354</td>
<td>"THEFT OF IDENTITY"</td>
<td>354</td>
<td>null</td>
<td>null</td>
<td>null</td>
</tr>
<tr class="even">
<td>354</td>
<td>"THEFT OF IDENTITY"</td>
<td>354</td>
<td>null</td>
<td>null</td>
<td>null</td>
</tr>
<tr class="odd">
<td>354</td>
<td>"THEFT OF IDENTITY"</td>
<td>354</td>
<td>null</td>
<td>null</td>
<td>null</td>
</tr>
<tr class="even">
<td>354</td>
<td>"THEFT OF IDENTITY"</td>
<td>354</td>
<td>null</td>
<td>null</td>
<td>null</td>
</tr>
<tr class="odd">
<td>330</td>
<td>"BURGLARY FROM VEHICLE"</td>
<td>330</td>
<td>null</td>
<td>null</td>
<td>null</td>
</tr>
<tr class="even">
<td>…</td>
<td>…</td>
<td>…</td>
<td>…</td>
<td>…</td>
<td>…</td>
</tr>
<tr class="odd">
<td>354</td>
<td>"THEFT OF IDENTITY"</td>
<td>354</td>
<td>null</td>
<td>null</td>
<td>null</td>
</tr>
<tr class="even">
<td>230</td>
<td>"ASSAULT WITH DEADLY WEAPON, AG…</td>
<td>230</td>
<td>null</td>
<td>null</td>
<td>null</td>
</tr>
<tr class="odd">
<td>440</td>
<td>"THEFT PLAIN - PETTY ($950 &amp; UN…</td>
<td>440</td>
<td>null</td>
<td>null</td>
<td>null</td>
</tr>
<tr class="even">
<td>341</td>
<td>"THEFT-GRAND ($950.01 &amp; OVER)EX…</td>
<td>341</td>
<td>null</td>
<td>null</td>
<td>null</td>
</tr>
<tr class="odd">
<td>341</td>
<td>"THEFT-GRAND ($950.01 &amp; OVER)EX…</td>
<td>341</td>
<td>null</td>
<td>null</td>
<td>null</td>
</tr>
</tbody>
</table>
</div>
</div>
</div>
<p>We can also use the <code>int_range</code> function to get the same result.</p>
<div id="0ed89c95" class="cell" data-execution_count="21">
<div class="code-copy-outer-scaffold"><div class="sourceCode cell-code" id="cb23" style="background: #f1f3f5;"><pre class="sourceCode python code-with-copy"><code class="sourceCode python"><span id="cb23-1">(data</span>
<span id="cb23-2"> .<span class="bu" style="color: null;
background-color: null;
font-style: inherit;">filter</span>((pl.int_range(pl.<span class="bu" style="color: null;
background-color: null;
font-style: inherit;">len</span>()) <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">%</span> <span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">3</span>) <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">==</span> <span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">2</span>)</span>
<span id="cb23-3"> .select(pl.col(<span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">'^.*Crm.*$'</span>))</span>
<span id="cb23-4">)</span></code></pre></div></div>
<div class="cell-output cell-output-display" data-execution_count="21">
<div><style>
.dataframe > thead > tr,
.dataframe > tbody > tr {
  text-align: right;
  white-space: pre-wrap;
}
</style>
<small>shape: (334_964, 6)</small>
<table class="dataframe caption-top table table-sm table-striped small" data-border="1">
<thead>
<tr class="header">
<th data-quarto-table-cell-role="th">Crm Cd</th>
<th data-quarto-table-cell-role="th">Crm Cd Desc</th>
<th data-quarto-table-cell-role="th">Crm Cd 1</th>
<th data-quarto-table-cell-role="th">Crm Cd 2</th>
<th data-quarto-table-cell-role="th">Crm Cd 3</th>
<th data-quarto-table-cell-role="th">Crm Cd 4</th>
</tr>
<tr class="even">
<td>i64</td>
<td>str</td>
<td>i64</td>
<td>i64</td>
<td>str</td>
<td>str</td>
</tr>
</thead>
<tbody>
<tr class="odd">
<td>354</td>
<td>"THEFT OF IDENTITY"</td>
<td>354</td>
<td>null</td>
<td>null</td>
<td>null</td>
</tr>
<tr class="even">
<td>354</td>
<td>"THEFT OF IDENTITY"</td>
<td>354</td>
<td>null</td>
<td>null</td>
<td>null</td>
</tr>
<tr class="odd">
<td>354</td>
<td>"THEFT OF IDENTITY"</td>
<td>354</td>
<td>null</td>
<td>null</td>
<td>null</td>
</tr>
<tr class="even">
<td>354</td>
<td>"THEFT OF IDENTITY"</td>
<td>354</td>
<td>null</td>
<td>null</td>
<td>null</td>
</tr>
<tr class="odd">
<td>330</td>
<td>"BURGLARY FROM VEHICLE"</td>
<td>330</td>
<td>null</td>
<td>null</td>
<td>null</td>
</tr>
<tr class="even">
<td>…</td>
<td>…</td>
<td>…</td>
<td>…</td>
<td>…</td>
<td>…</td>
</tr>
<tr class="odd">
<td>354</td>
<td>"THEFT OF IDENTITY"</td>
<td>354</td>
<td>null</td>
<td>null</td>
<td>null</td>
</tr>
<tr class="even">
<td>230</td>
<td>"ASSAULT WITH DEADLY WEAPON, AG…</td>
<td>230</td>
<td>null</td>
<td>null</td>
<td>null</td>
</tr>
<tr class="odd">
<td>440</td>
<td>"THEFT PLAIN - PETTY ($950 &amp; UN…</td>
<td>440</td>
<td>null</td>
<td>null</td>
<td>null</td>
</tr>
<tr class="even">
<td>341</td>
<td>"THEFT-GRAND ($950.01 &amp; OVER)EX…</td>
<td>341</td>
<td>null</td>
<td>null</td>
<td>null</td>
</tr>
<tr class="odd">
<td>341</td>
<td>"THEFT-GRAND ($950.01 &amp; OVER)EX…</td>
<td>341</td>
<td>null</td>
<td>null</td>
<td>null</td>
</tr>
</tbody>
</table>
</div>
</div>
</div>
<p>Regex patterns are notorious for being difficult to remember. We can avoid them altogether by using special selectors in Polars.</p>
<div id="18ede12d" class="cell" data-execution_count="22">
<div class="code-copy-outer-scaffold"><div class="sourceCode cell-code" id="cb24" style="background: #f1f3f5;"><pre class="sourceCode python code-with-copy"><code class="sourceCode python"><span id="cb24-1"><span class="im" style="color: #00769E;
background-color: null;
font-style: inherit;">import</span> polars.selectors <span class="im" style="color: #00769E;
background-color: null;
font-style: inherit;">as</span> cs</span>
<span id="cb24-2"></span>
<span id="cb24-3">(data</span>
<span id="cb24-4"> .<span class="bu" style="color: null;
background-color: null;
font-style: inherit;">filter</span>(pl.int_range(pl.<span class="bu" style="color: null;
background-color: null;
font-style: inherit;">len</span>()).mod(<span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">3</span>) <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">==</span> <span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">2</span>)</span>
<span id="cb24-5"> .select(cs.contains(<span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">'Crm'</span>))</span>
<span id="cb24-6"> )</span></code></pre></div></div>
<div class="cell-output cell-output-display" data-execution_count="22">
<div><style>
.dataframe > thead > tr,
.dataframe > tbody > tr {
  text-align: right;
  white-space: pre-wrap;
}
</style>
<small>shape: (334_964, 6)</small>
<table class="dataframe caption-top table table-sm table-striped small" data-border="1">
<thead>
<tr class="header">
<th data-quarto-table-cell-role="th">Crm Cd</th>
<th data-quarto-table-cell-role="th">Crm Cd Desc</th>
<th data-quarto-table-cell-role="th">Crm Cd 1</th>
<th data-quarto-table-cell-role="th">Crm Cd 2</th>
<th data-quarto-table-cell-role="th">Crm Cd 3</th>
<th data-quarto-table-cell-role="th">Crm Cd 4</th>
</tr>
<tr class="even">
<td>i64</td>
<td>str</td>
<td>i64</td>
<td>i64</td>
<td>str</td>
<td>str</td>
</tr>
</thead>
<tbody>
<tr class="odd">
<td>354</td>
<td>"THEFT OF IDENTITY"</td>
<td>354</td>
<td>null</td>
<td>null</td>
<td>null</td>
</tr>
<tr class="even">
<td>354</td>
<td>"THEFT OF IDENTITY"</td>
<td>354</td>
<td>null</td>
<td>null</td>
<td>null</td>
</tr>
<tr class="odd">
<td>354</td>
<td>"THEFT OF IDENTITY"</td>
<td>354</td>
<td>null</td>
<td>null</td>
<td>null</td>
</tr>
<tr class="even">
<td>354</td>
<td>"THEFT OF IDENTITY"</td>
<td>354</td>
<td>null</td>
<td>null</td>
<td>null</td>
</tr>
<tr class="odd">
<td>330</td>
<td>"BURGLARY FROM VEHICLE"</td>
<td>330</td>
<td>null</td>
<td>null</td>
<td>null</td>
</tr>
<tr class="even">
<td>…</td>
<td>…</td>
<td>…</td>
<td>…</td>
<td>…</td>
<td>…</td>
</tr>
<tr class="odd">
<td>354</td>
<td>"THEFT OF IDENTITY"</td>
<td>354</td>
<td>null</td>
<td>null</td>
<td>null</td>
</tr>
<tr class="even">
<td>230</td>
<td>"ASSAULT WITH DEADLY WEAPON, AG…</td>
<td>230</td>
<td>null</td>
<td>null</td>
<td>null</td>
</tr>
<tr class="odd">
<td>440</td>
<td>"THEFT PLAIN - PETTY ($950 &amp; UN…</td>
<td>440</td>
<td>null</td>
<td>null</td>
<td>null</td>
</tr>
<tr class="even">
<td>341</td>
<td>"THEFT-GRAND ($950.01 &amp; OVER)EX…</td>
<td>341</td>
<td>null</td>
<td>null</td>
<td>null</td>
</tr>
<tr class="odd">
<td>341</td>
<td>"THEFT-GRAND ($950.01 &amp; OVER)EX…</td>
<td>341</td>
<td>null</td>
<td>null</td>
<td>null</td>
</tr>
</tbody>
</table>
</div>
</div>
</div>
</section>
<section id="boolean-arrays" class="level2">
<h2 data-anchor-id="boolean-arrays">Boolean arrays</h2>
<p>Most row filtering in pandas uses boolean masks. Let’s begin with a simple example: filter for rows where <em>AREA NAME</em> is ‘Central’. The code below produces a boolean mask.</p>
<div id="f011b48f" class="cell" data-execution_count="23">
<div class="code-copy-outer-scaffold"><div class="sourceCode cell-code" id="cb25" style="background: #f1f3f5;"><pre class="sourceCode python code-with-copy"><code class="sourceCode python"><span id="cb25-1">df[<span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">'AREA NAME'</span>] <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">==</span> <span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">'Central'</span></span></code></pre></div></div>
<div class="cell-output cell-output-display" data-execution_count="23">
<pre><code>0          False
1          False
2          False
3          False
4          False
           ...  
1004889    False
1004890     True
1004891    False
1004892    False
1004893    False
Name: AREA NAME, Length: 1004894, dtype: bool</code></pre>
</div>
</div>
<p>We can use this boolean mask in <code>loc</code> to get the desired rows in the dataframe.</p>
<div id="b2799509" class="cell" data-execution_count="24">
<div class="code-copy-outer-scaffold"><div class="sourceCode cell-code" id="cb27" style="background: #f1f3f5;"><pre class="sourceCode python code-with-copy"><code class="sourceCode python"><span id="cb27-1">df.loc[df[<span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">'AREA NAME'</span>] <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">==</span> <span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">'Central'</span>]</span></code></pre></div></div>
<div class="cell-output cell-output-display" data-execution_count="24">
<div>


<table class="dataframe caption-top table table-sm table-striped small" data-border="1">
<thead>
<tr class="header">
<th data-quarto-table-cell-role="th"></th>
<th data-quarto-table-cell-role="th">DR_NO</th>
<th data-quarto-table-cell-role="th">Date Rptd</th>
<th data-quarto-table-cell-role="th">DATE OCC</th>
<th data-quarto-table-cell-role="th">TIME OCC</th>
<th data-quarto-table-cell-role="th">AREA</th>
<th data-quarto-table-cell-role="th">AREA NAME</th>
<th data-quarto-table-cell-role="th">Rpt Dist No</th>
<th data-quarto-table-cell-role="th">Part 1-2</th>
<th data-quarto-table-cell-role="th">Crm Cd</th>
<th data-quarto-table-cell-role="th">Crm Cd Desc</th>
<th data-quarto-table-cell-role="th">...</th>
<th data-quarto-table-cell-role="th">Status</th>
<th data-quarto-table-cell-role="th">Status Desc</th>
<th data-quarto-table-cell-role="th">Crm Cd 1</th>
<th data-quarto-table-cell-role="th">Crm Cd 2</th>
<th data-quarto-table-cell-role="th">Crm Cd 3</th>
<th data-quarto-table-cell-role="th">Crm Cd 4</th>
<th data-quarto-table-cell-role="th">LOCATION</th>
<th data-quarto-table-cell-role="th">Cross Street</th>
<th data-quarto-table-cell-role="th">LAT</th>
<th data-quarto-table-cell-role="th">LON</th>
</tr>
</thead>
<tbody>
<tr class="odd">
<th data-quarto-table-cell-role="th">107</th>
<td>230110144</td>
<td>04/04/2023 12:00:00 AM</td>
<td>07/03/2020 12:00:00 AM</td>
<td>900</td>
<td>1</td>
<td>Central</td>
<td>182</td>
<td>2</td>
<td>354</td>
<td>THEFT OF IDENTITY</td>
<td>...</td>
<td>IC</td>
<td>Invest Cont</td>
<td>354.0</td>
<td>NaN</td>
<td>NaN</td>
<td>NaN</td>
<td>1100 S&nbsp;&nbsp;GRAND&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;AV</td>
<td>NaN</td>
<td>34.0415</td>
<td>-118.2620</td>
</tr>
<tr class="even">
<th data-quarto-table-cell-role="th">563</th>
<td>210118909</td>
<td>10/19/2021 12:00:00 AM</td>
<td>06/02/2020 12:00:00 AM</td>
<td>1605</td>
<td>1</td>
<td>Central</td>
<td>134</td>
<td>1</td>
<td>480</td>
<td>BIKE - STOLEN</td>
<td>...</td>
<td>IC</td>
<td>Invest Cont</td>
<td>480.0</td>
<td>NaN</td>
<td>NaN</td>
<td>NaN</td>
<td>3RD&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ST</td>
<td>BROADWAY</td>
<td>34.0510</td>
<td>-118.2480</td>
</tr>
<tr class="odd">
<th data-quarto-table-cell-role="th">572</th>
<td>210104305</td>
<td>01/08/2021 12:00:00 AM</td>
<td>10/28/2020 12:00:00 AM</td>
<td>1203</td>
<td>1</td>
<td>Central</td>
<td>182</td>
<td>2</td>
<td>668</td>
<td>EMBEZZLEMENT, GRAND THEFT ($950.01 &amp; OVER)</td>
<td>...</td>
<td>IC</td>
<td>Invest Cont</td>
<td>668.0</td>
<td>NaN</td>
<td>NaN</td>
<td>NaN</td>
<td>1200 S&nbsp;&nbsp;FIGUEROA&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ST</td>
<td>NaN</td>
<td>34.0416</td>
<td>-118.2671</td>
</tr>
<tr class="even">
<th data-quarto-table-cell-role="th">1007</th>
<td>210110076</td>
<td>04/27/2021 12:00:00 AM</td>
<td>07/01/2020 12:00:00 AM</td>
<td>1200</td>
<td>1</td>
<td>Central</td>
<td>155</td>
<td>2</td>
<td>812</td>
<td>CRM AGNST CHLD (13 OR UNDER) (14-15 &amp; SUSP 10 ...</td>
<td>...</td>
<td>AO</td>
<td>Adult Other</td>
<td>812.0</td>
<td>860.0</td>
<td>NaN</td>
<td>NaN</td>
<td>200 E&nbsp;&nbsp;6TH&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ST</td>
<td>NaN</td>
<td>34.0448</td>
<td>-118.2474</td>
</tr>
<tr class="odd">
<th data-quarto-table-cell-role="th">1708</th>
<td>210104086</td>
<td>01/03/2021 12:00:00 AM</td>
<td>01/03/2020 12:00:00 AM</td>
<td>1510</td>
<td>1</td>
<td>Central</td>
<td>101</td>
<td>2</td>
<td>624</td>
<td>BATTERY - SIMPLE ASSAULT</td>
<td>...</td>
<td>IC</td>
<td>Invest Cont</td>
<td>624.0</td>
<td>NaN</td>
<td>NaN</td>
<td>NaN</td>
<td>900&nbsp;&nbsp;&nbsp;&nbsp;CENTENNIAL&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ST</td>
<td>NaN</td>
<td>34.0669</td>
<td>-118.2458</td>
</tr>
<tr class="even">
<th data-quarto-table-cell-role="th">...</th>
<td>...</td>
<td>...</td>
<td>...</td>
<td>...</td>
<td>...</td>
<td>...</td>
<td>...</td>
<td>...</td>
<td>...</td>
<td>...</td>
<td>...</td>
<td>...</td>
<td>...</td>
<td>...</td>
<td>...</td>
<td>...</td>
<td>...</td>
<td>...</td>
<td>...</td>
<td>...</td>
<td>...</td>
</tr>
<tr class="odd">
<th data-quarto-table-cell-role="th">1004822</th>
<td>240119704</td>
<td>10/09/2024 12:00:00 AM</td>
<td>10/09/2024 12:00:00 AM</td>
<td>700</td>
<td>1</td>
<td>Central</td>
<td>119</td>
<td>2</td>
<td>888</td>
<td>TRESPASSING</td>
<td>...</td>
<td>IC</td>
<td>Invest Cont</td>
<td>888.0</td>
<td>NaN</td>
<td>NaN</td>
<td>NaN</td>
<td>800 N&nbsp;&nbsp;ALAMEDA&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ST</td>
<td>NaN</td>
<td>34.0561</td>
<td>-118.2375</td>
</tr>
<tr class="even">
<th data-quarto-table-cell-role="th">1004847</th>
<td>240109835</td>
<td>04/01/2024 12:00:00 AM</td>
<td>04/01/2024 12:00:00 AM</td>
<td>1250</td>
<td>1</td>
<td>Central</td>
<td>152</td>
<td>2</td>
<td>624</td>
<td>BATTERY - SIMPLE ASSAULT</td>
<td>...</td>
<td>IC</td>
<td>Invest Cont</td>
<td>624.0</td>
<td>NaN</td>
<td>NaN</td>
<td>NaN</td>
<td>7TH&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ST</td>
<td>FLOWER&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ST</td>
<td>34.0490</td>
<td>-118.2592</td>
</tr>
<tr class="odd">
<th data-quarto-table-cell-role="th">1004868</th>
<td>240112635</td>
<td>06/10/2024 12:00:00 AM</td>
<td>06/10/2024 12:00:00 AM</td>
<td>1855</td>
<td>1</td>
<td>Central</td>
<td>138</td>
<td>1</td>
<td>510</td>
<td>VEHICLE - STOLEN</td>
<td>...</td>
<td>IC</td>
<td>Invest Cont</td>
<td>510.0</td>
<td>NaN</td>
<td>NaN</td>
<td>NaN</td>
<td>300 S&nbsp;&nbsp;ALAMEDA&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ST</td>
<td>NaN</td>
<td>34.0468</td>
<td>-118.2415</td>
</tr>
<tr class="even">
<th data-quarto-table-cell-role="th">1004885</th>
<td>240119644</td>
<td>10/04/2024 12:00:00 AM</td>
<td>09/27/2024 12:00:00 AM</td>
<td>2345</td>
<td>1</td>
<td>Central</td>
<td>142</td>
<td>1</td>
<td>440</td>
<td>THEFT PLAIN - PETTY ($950 &amp; UNDER)</td>
<td>...</td>
<td>IC</td>
<td>Invest Cont</td>
<td>440.0</td>
<td>NaN</td>
<td>NaN</td>
<td>NaN</td>
<td>W&nbsp;&nbsp;3RD</td>
<td>S&nbsp;&nbsp;GRAND</td>
<td>34.0531</td>
<td>-118.2512</td>
</tr>
<tr class="odd">
<th data-quarto-table-cell-role="th">1004890</th>
<td>240104953</td>
<td>01/15/2024 12:00:00 AM</td>
<td>01/15/2024 12:00:00 AM</td>
<td>100</td>
<td>1</td>
<td>Central</td>
<td>101</td>
<td>2</td>
<td>745</td>
<td>VANDALISM - MISDEAMEANOR ($399 OR UNDER)</td>
<td>...</td>
<td>IC</td>
<td>Invest Cont</td>
<td>745.0</td>
<td>NaN</td>
<td>NaN</td>
<td>NaN</td>
<td>1300 W&nbsp;&nbsp;SUNSET&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; BL</td>
<td>NaN</td>
<td>34.0685</td>
<td>-118.2460</td>
</tr>
</tbody>
</table>

<p>69668 rows × 28 columns</p>
</div>
</div>
</div>
<p>By contrast, Polars does not require a boolean mask to perform this filtering operation.</p>
<div id="bdd4a1ab" class="cell" data-execution_count="25">
<div class="code-copy-outer-scaffold"><div class="sourceCode cell-code" id="cb28" style="background: #f1f3f5;"><pre class="sourceCode python code-with-copy"><code class="sourceCode python"><span id="cb28-1">(data</span>
<span id="cb28-2"> .<span class="bu" style="color: null;
background-color: null;
font-style: inherit;">filter</span>(pl.col(<span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">'AREA NAME'</span>) <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">==</span> <span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">'Central'</span>)</span>
<span id="cb28-3"> )</span></code></pre></div></div>
<div class="cell-output cell-output-display" data-execution_count="25">
<div><style>
.dataframe > thead > tr,
.dataframe > tbody > tr {
  text-align: right;
  white-space: pre-wrap;
}
</style>
<small>shape: (69_668, 28)</small>
<table class="dataframe caption-top table table-sm table-striped small" data-border="1">
<thead>
<tr class="header">
<th data-quarto-table-cell-role="th">DR_NO</th>
<th data-quarto-table-cell-role="th">Date Rptd</th>
<th data-quarto-table-cell-role="th">DATE OCC</th>
<th data-quarto-table-cell-role="th">TIME OCC</th>
<th data-quarto-table-cell-role="th">AREA</th>
<th data-quarto-table-cell-role="th">AREA NAME</th>
<th data-quarto-table-cell-role="th">Rpt Dist No</th>
<th data-quarto-table-cell-role="th">Part 1-2</th>
<th data-quarto-table-cell-role="th">Crm Cd</th>
<th data-quarto-table-cell-role="th">Crm Cd Desc</th>
<th data-quarto-table-cell-role="th">Mocodes</th>
<th data-quarto-table-cell-role="th">Vict Age</th>
<th data-quarto-table-cell-role="th">Vict Sex</th>
<th data-quarto-table-cell-role="th">Vict Descent</th>
<th data-quarto-table-cell-role="th">Premis Cd</th>
<th data-quarto-table-cell-role="th">Premis Desc</th>
<th data-quarto-table-cell-role="th">Weapon Used Cd</th>
<th data-quarto-table-cell-role="th">Weapon Desc</th>
<th data-quarto-table-cell-role="th">Status</th>
<th data-quarto-table-cell-role="th">Status Desc</th>
<th data-quarto-table-cell-role="th">Crm Cd 1</th>
<th data-quarto-table-cell-role="th">Crm Cd 2</th>
<th data-quarto-table-cell-role="th">Crm Cd 3</th>
<th data-quarto-table-cell-role="th">Crm Cd 4</th>
<th data-quarto-table-cell-role="th">LOCATION</th>
<th data-quarto-table-cell-role="th">Cross Street</th>
<th data-quarto-table-cell-role="th">LAT</th>
<th data-quarto-table-cell-role="th">LON</th>
</tr>
<tr class="even">
<td>i64</td>
<td>str</td>
<td>str</td>
<td>i64</td>
<td>i64</td>
<td>str</td>
<td>i64</td>
<td>i64</td>
<td>i64</td>
<td>str</td>
<td>str</td>
<td>i64</td>
<td>str</td>
<td>str</td>
<td>i64</td>
<td>str</td>
<td>i64</td>
<td>str</td>
<td>str</td>
<td>str</td>
<td>i64</td>
<td>i64</td>
<td>str</td>
<td>str</td>
<td>str</td>
<td>str</td>
<td>f64</td>
<td>f64</td>
</tr>
</thead>
<tbody>
<tr class="odd">
<td>230110144</td>
<td>"04/04/2023 12:00:00 AM"</td>
<td>"07/03/2020 12:00:00 AM"</td>
<td>900</td>
<td>1</td>
<td>"Central"</td>
<td>182</td>
<td>2</td>
<td>354</td>
<td>"THEFT OF IDENTITY"</td>
<td>"0930 0929"</td>
<td>25</td>
<td>"M"</td>
<td>"H"</td>
<td>502</td>
<td>"MULTI-UNIT DWELLING (APARTMENT…</td>
<td>null</td>
<td>null</td>
<td>"IC"</td>
<td>"Invest Cont"</td>
<td>354</td>
<td>null</td>
<td>null</td>
<td>null</td>
<td>"1100 S&nbsp;&nbsp;GRAND&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;…</td>
<td>null</td>
<td>34.0415</td>
<td>-118.262</td>
</tr>
<tr class="even">
<td>210118909</td>
<td>"10/19/2021 12:00:00 AM"</td>
<td>"06/02/2020 12:00:00 AM"</td>
<td>1605</td>
<td>1</td>
<td>"Central"</td>
<td>134</td>
<td>1</td>
<td>480</td>
<td>"BIKE - STOLEN"</td>
<td>"0344 2032 1822"</td>
<td>35</td>
<td>"M"</td>
<td>"W"</td>
<td>101</td>
<td>"STREET"</td>
<td>null</td>
<td>null</td>
<td>"IC"</td>
<td>"Invest Cont"</td>
<td>480</td>
<td>null</td>
<td>null</td>
<td>null</td>
<td>"3RD&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;S…</td>
<td>"BROADWAY"</td>
<td>34.051</td>
<td>-118.248</td>
</tr>
<tr class="odd">
<td>210104305</td>
<td>"01/08/2021 12:00:00 AM"</td>
<td>"10/28/2020 12:00:00 AM"</td>
<td>1203</td>
<td>1</td>
<td>"Central"</td>
<td>182</td>
<td>2</td>
<td>668</td>
<td>"EMBEZZLEMENT, GRAND THEFT ($95…</td>
<td>"1501"</td>
<td>0</td>
<td>"M"</td>
<td>"W"</td>
<td>203</td>
<td>"OTHER BUSINESS"</td>
<td>null</td>
<td>null</td>
<td>"IC"</td>
<td>"Invest Cont"</td>
<td>668</td>
<td>null</td>
<td>null</td>
<td>null</td>
<td>"1200 S&nbsp;&nbsp;FIGUEROA&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;…</td>
<td>null</td>
<td>34.0416</td>
<td>-118.2671</td>
</tr>
<tr class="even">
<td>210110076</td>
<td>"04/27/2021 12:00:00 AM"</td>
<td>"07/01/2020 12:00:00 AM"</td>
<td>1200</td>
<td>1</td>
<td>"Central"</td>
<td>155</td>
<td>2</td>
<td>812</td>
<td>"CRM AGNST CHLD (13 OR UNDER) (…</td>
<td>null</td>
<td>14</td>
<td>"M"</td>
<td>"H"</td>
<td>501</td>
<td>"SINGLE FAMILY DWELLING"</td>
<td>400</td>
<td>"STRONG-ARM (HANDS, FIST, FEET …</td>
<td>"AO"</td>
<td>"Adult Other"</td>
<td>812</td>
<td>860</td>
<td>null</td>
<td>null</td>
<td>"200 E&nbsp;&nbsp;6TH&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;…</td>
<td>null</td>
<td>34.0448</td>
<td>-118.2474</td>
</tr>
<tr class="odd">
<td>210104086</td>
<td>"01/03/2021 12:00:00 AM"</td>
<td>"01/03/2020 12:00:00 AM"</td>
<td>1510</td>
<td>1</td>
<td>"Central"</td>
<td>101</td>
<td>2</td>
<td>624</td>
<td>"BATTERY - SIMPLE ASSAULT"</td>
<td>"1822 0444 1309 0448"</td>
<td>58</td>
<td>"M"</td>
<td>"H"</td>
<td>102</td>
<td>"SIDEWALK"</td>
<td>400</td>
<td>"STRONG-ARM (HANDS, FIST, FEET …</td>
<td>"IC"</td>
<td>"Invest Cont"</td>
<td>624</td>
<td>null</td>
<td>null</td>
<td>null</td>
<td>"900&nbsp;&nbsp;&nbsp;&nbsp;CENTENNIAL&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;…</td>
<td>null</td>
<td>34.0669</td>
<td>-118.2458</td>
</tr>
<tr class="even">
<td>…</td>
<td>…</td>
<td>…</td>
<td>…</td>
<td>…</td>
<td>…</td>
<td>…</td>
<td>…</td>
<td>…</td>
<td>…</td>
<td>…</td>
<td>…</td>
<td>…</td>
<td>…</td>
<td>…</td>
<td>…</td>
<td>…</td>
<td>…</td>
<td>…</td>
<td>…</td>
<td>…</td>
<td>…</td>
<td>…</td>
<td>…</td>
<td>…</td>
<td>…</td>
<td>…</td>
<td>…</td>
</tr>
<tr class="odd">
<td>240119704</td>
<td>"10/09/2024 12:00:00 AM"</td>
<td>"10/09/2024 12:00:00 AM"</td>
<td>700</td>
<td>1</td>
<td>"Central"</td>
<td>119</td>
<td>2</td>
<td>888</td>
<td>"TRESPASSING"</td>
<td>"0910 2004"</td>
<td>0</td>
<td>"M"</td>
<td>"O"</td>
<td>900</td>
<td>"MTA - RED LINE - UNION STATION"</td>
<td>null</td>
<td>null</td>
<td>"IC"</td>
<td>"Invest Cont"</td>
<td>888</td>
<td>null</td>
<td>null</td>
<td>null</td>
<td>"800 N&nbsp;&nbsp;ALAMEDA&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;…</td>
<td>null</td>
<td>34.0561</td>
<td>-118.2375</td>
</tr>
<tr class="even">
<td>240109835</td>
<td>"04/01/2024 12:00:00 AM"</td>
<td>"04/01/2024 12:00:00 AM"</td>
<td>1250</td>
<td>1</td>
<td>"Central"</td>
<td>152</td>
<td>2</td>
<td>624</td>
<td>"BATTERY - SIMPLE ASSAULT"</td>
<td>"2021 2048 1822 0400 0910 0417"</td>
<td>60</td>
<td>"M"</td>
<td>"B"</td>
<td>903</td>
<td>"MTA - RED LINE - 7TH AND METRO…</td>
<td>400</td>
<td>"STRONG-ARM (HANDS, FIST, FEET …</td>
<td>"IC"</td>
<td>"Invest Cont"</td>
<td>624</td>
<td>null</td>
<td>null</td>
<td>null</td>
<td>"7TH&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;S…</td>
<td>"FLOWER&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;S…</td>
<td>34.049</td>
<td>-118.2592</td>
</tr>
<tr class="odd">
<td>240112635</td>
<td>"06/10/2024 12:00:00 AM"</td>
<td>"06/10/2024 12:00:00 AM"</td>
<td>1855</td>
<td>1</td>
<td>"Central"</td>
<td>138</td>
<td>1</td>
<td>510</td>
<td>"VEHICLE - STOLEN"</td>
<td>null</td>
<td>0</td>
<td>null</td>
<td>null</td>
<td>101</td>
<td>"STREET"</td>
<td>null</td>
<td>null</td>
<td>"IC"</td>
<td>"Invest Cont"</td>
<td>510</td>
<td>null</td>
<td>null</td>
<td>null</td>
<td>"300 S&nbsp;&nbsp;ALAMEDA&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;…</td>
<td>null</td>
<td>34.0468</td>
<td>-118.2415</td>
</tr>
<tr class="even">
<td>240119644</td>
<td>"10/04/2024 12:00:00 AM"</td>
<td>"09/27/2024 12:00:00 AM"</td>
<td>2345</td>
<td>1</td>
<td>"Central"</td>
<td>142</td>
<td>1</td>
<td>440</td>
<td>"THEFT PLAIN - PETTY ($950 &amp; UN…</td>
<td>"0344 2014"</td>
<td>42</td>
<td>"F"</td>
<td>"B"</td>
<td>122</td>
<td>"VEHICLE, PASSENGER/TRUCK"</td>
<td>null</td>
<td>null</td>
<td>"IC"</td>
<td>"Invest Cont"</td>
<td>440</td>
<td>null</td>
<td>null</td>
<td>null</td>
<td>"W&nbsp;&nbsp;3RD"</td>
<td>"S&nbsp;&nbsp;GRAND"</td>
<td>34.0531</td>
<td>-118.2512</td>
</tr>
<tr class="odd">
<td>240104953</td>
<td>"01/15/2024 12:00:00 AM"</td>
<td>"01/15/2024 12:00:00 AM"</td>
<td>100</td>
<td>1</td>
<td>"Central"</td>
<td>101</td>
<td>2</td>
<td>745</td>
<td>"VANDALISM - MISDEAMEANOR ($399…</td>
<td>"0329 0400 0416"</td>
<td>0</td>
<td>"X"</td>
<td>"X"</td>
<td>503</td>
<td>"HOTEL"</td>
<td>500</td>
<td>"UNKNOWN WEAPON/OTHER WEAPON"</td>
<td>"IC"</td>
<td>"Invest Cont"</td>
<td>745</td>
<td>null</td>
<td>null</td>
<td>null</td>
<td>"1300 W&nbsp;&nbsp;SUNSET&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;…</td>
<td>null</td>
<td>34.0685</td>
<td>-118.246</td>
</tr>
</tbody>
</table>
</div>
</div>
</div>
<p>Now let’s move to a more interesting example. The goal is to select all the columns that have more than the median number of unique values. We’ll calculate the number of unique entries in each column and then find the median value for those counts.</p>
<p>Let’s show the number of unique values in each column of the pandas dataframe.</p>
<div id="d7862947" class="cell" data-execution_count="26">
<div class="code-copy-outer-scaffold"><div class="sourceCode cell-code" id="cb29" style="background: #f1f3f5;"><pre class="sourceCode python code-with-copy"><code class="sourceCode python"><span id="cb29-1">df.nunique()</span></code></pre></div></div>
<div class="cell-output cell-output-display" data-execution_count="26">
<pre><code>DR_NO             1004894
Date Rptd            1870
DATE OCC             1826
TIME OCC             1439
AREA                   21
AREA NAME              21
Rpt Dist No          1210
Part 1-2                2
Crm Cd                140
Crm Cd Desc           140
Mocodes            310912
Vict Age              104
Vict Sex                5
Vict Descent           20
Premis Cd             314
Premis Desc           306
Weapon Used Cd         79
Weapon Desc            79
Status                  6
Status Desc             6
Crm Cd 1              142
Crm Cd 2              126
Crm Cd 3               38
Crm Cd 4                6
LOCATION            66566
Cross Street        10413
LAT                  5426
LON                  4982
dtype: int64</code></pre>
</div>
</div>
<p>Because the output is displayed vertically, calculating the median is as simple as calling <code>median</code>.</p>
<div id="55921f37" class="cell" data-execution_count="27">
<div class="code-copy-outer-scaffold"><div class="sourceCode cell-code" id="cb31" style="background: #f1f3f5;"><pre class="sourceCode python code-with-copy"><code class="sourceCode python"><span id="cb31-1">df.nunique().median()</span></code></pre></div></div>
<div class="cell-output cell-output-display" data-execution_count="27">
<pre><code>np.float64(140.0)</code></pre>
</div>
</div>
<p>The calculation is somewhat more involved in Polars. To begin with, the result showing the number of unique values in each column is displayed horizontally as a dataframe.</p>
<div id="b6a3bff8" class="cell" data-execution_count="28">
<div class="code-copy-outer-scaffold"><div class="sourceCode cell-code" id="cb33" style="background: #f1f3f5;"><pre class="sourceCode python code-with-copy"><code class="sourceCode python"><span id="cb33-1">data.select(pl.<span class="bu" style="color: null;
background-color: null;
font-style: inherit;">all</span>().n_unique())</span></code></pre></div></div>
<div class="cell-output cell-output-display" data-execution_count="28">
<div><style>
.dataframe > thead > tr,
.dataframe > tbody > tr {
  text-align: right;
  white-space: pre-wrap;
}
</style>
<small>shape: (1, 28)</small>
<table class="dataframe caption-top table table-sm table-striped small" data-border="1">
<thead>
<tr class="header">
<th data-quarto-table-cell-role="th">DR_NO</th>
<th data-quarto-table-cell-role="th">Date Rptd</th>
<th data-quarto-table-cell-role="th">DATE OCC</th>
<th data-quarto-table-cell-role="th">TIME OCC</th>
<th data-quarto-table-cell-role="th">AREA</th>
<th data-quarto-table-cell-role="th">AREA NAME</th>
<th data-quarto-table-cell-role="th">Rpt Dist No</th>
<th data-quarto-table-cell-role="th">Part 1-2</th>
<th data-quarto-table-cell-role="th">Crm Cd</th>
<th data-quarto-table-cell-role="th">Crm Cd Desc</th>
<th data-quarto-table-cell-role="th">Mocodes</th>
<th data-quarto-table-cell-role="th">Vict Age</th>
<th data-quarto-table-cell-role="th">Vict Sex</th>
<th data-quarto-table-cell-role="th">Vict Descent</th>
<th data-quarto-table-cell-role="th">Premis Cd</th>
<th data-quarto-table-cell-role="th">Premis Desc</th>
<th data-quarto-table-cell-role="th">Weapon Used Cd</th>
<th data-quarto-table-cell-role="th">Weapon Desc</th>
<th data-quarto-table-cell-role="th">Status</th>
<th data-quarto-table-cell-role="th">Status Desc</th>
<th data-quarto-table-cell-role="th">Crm Cd 1</th>
<th data-quarto-table-cell-role="th">Crm Cd 2</th>
<th data-quarto-table-cell-role="th">Crm Cd 3</th>
<th data-quarto-table-cell-role="th">Crm Cd 4</th>
<th data-quarto-table-cell-role="th">LOCATION</th>
<th data-quarto-table-cell-role="th">Cross Street</th>
<th data-quarto-table-cell-role="th">LAT</th>
<th data-quarto-table-cell-role="th">LON</th>
</tr>
<tr class="even">
<td>u32</td>
<td>u32</td>
<td>u32</td>
<td>u32</td>
<td>u32</td>
<td>u32</td>
<td>u32</td>
<td>u32</td>
<td>u32</td>
<td>u32</td>
<td>u32</td>
<td>u32</td>
<td>u32</td>
<td>u32</td>
<td>u32</td>
<td>u32</td>
<td>u32</td>
<td>u32</td>
<td>u32</td>
<td>u32</td>
<td>u32</td>
<td>u32</td>
<td>u32</td>
<td>u32</td>
<td>u32</td>
<td>u32</td>
<td>u32</td>
<td>u32</td>
</tr>
</thead>
<tbody>
<tr class="odd">
<td>1004894</td>
<td>1870</td>
<td>1826</td>
<td>1439</td>
<td>21</td>
<td>21</td>
<td>1210</td>
<td>2</td>
<td>140</td>
<td>140</td>
<td>310913</td>
<td>104</td>
<td>6</td>
<td>21</td>
<td>315</td>
<td>307</td>
<td>80</td>
<td>80</td>
<td>7</td>
<td>6</td>
<td>143</td>
<td>127</td>
<td>39</td>
<td>7</td>
<td>66566</td>
<td>10414</td>
<td>5426</td>
<td>4982</td>
</tr>
</tbody>
</table>
</div>
</div>
</div>
<p>We can calculate the median value 140.0 by using the <code>transpose</code> method or by using the <code>concat_list</code> function.</p>
<div id="510d84d4" class="cell" data-execution_count="29">
<div class="code-copy-outer-scaffold"><div class="sourceCode cell-code" id="cb34" style="background: #f1f3f5;"><pre class="sourceCode python code-with-copy"><code class="sourceCode python"><span id="cb34-1">(data</span>
<span id="cb34-2"> .select(pl.<span class="bu" style="color: null;
background-color: null;
font-style: inherit;">all</span>().n_unique())</span>
<span id="cb34-3"> .transpose()</span>
<span id="cb34-4"> .median()</span>
<span id="cb34-5"> .item()</span>
<span id="cb34-6"> )</span></code></pre></div></div>
<div class="cell-output cell-output-display" data-execution_count="29">
<pre><code>140.0</code></pre>
</div>
</div>
<p>Transposing flips the dataframe from horizontal to vertical, making it possible to perform the median calculation.</p>
<p>The second approach collects the unique counts for each column into a list and then performs the median calculation.</p>
<div id="171e0b23" class="cell" data-execution_count="30">
<div class="code-copy-outer-scaffold"><div class="sourceCode cell-code" id="cb36" style="background: #f1f3f5;"><pre class="sourceCode python code-with-copy"><code class="sourceCode python"><span id="cb36-1">(data</span>
<span id="cb36-2"> .select(pl.<span class="bu" style="color: null;
background-color: null;
font-style: inherit;">all</span>().n_unique())                   </span>
<span id="cb36-3"> .select(pl.concat_list(pl.<span class="bu" style="color: null;
background-color: null;
font-style: inherit;">all</span>()).<span class="bu" style="color: null;
background-color: null;
font-style: inherit;">list</span>.median())</span>
<span id="cb36-4"> .item()                                        </span>
<span id="cb36-5">)</span></code></pre></div></div>
<div class="cell-output cell-output-display" data-execution_count="30">
<pre><code>140.0</code></pre>
</div>
</div>
<p>Now that we know the median value is 140.0, we can use it to get the desired columns. Here’s how to do it in pandas.</p>
<div id="214cbcf0" class="cell" data-execution_count="31">
<div class="code-copy-outer-scaffold"><div class="sourceCode cell-code" id="cb38" style="background: #f1f3f5;"><pre class="sourceCode python code-with-copy"><code class="sourceCode python"><span id="cb38-1">df.loc[:, df.nunique() <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">&gt;</span> <span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">140</span>]</span></code></pre></div></div>
<div class="cell-output cell-output-display" data-execution_count="31">
<div>


<table class="dataframe caption-top table table-sm table-striped small" data-border="1">
<thead>
<tr class="header">
<th data-quarto-table-cell-role="th"></th>
<th data-quarto-table-cell-role="th">DR_NO</th>
<th data-quarto-table-cell-role="th">Date Rptd</th>
<th data-quarto-table-cell-role="th">DATE OCC</th>
<th data-quarto-table-cell-role="th">TIME OCC</th>
<th data-quarto-table-cell-role="th">Rpt Dist No</th>
<th data-quarto-table-cell-role="th">Mocodes</th>
<th data-quarto-table-cell-role="th">Premis Cd</th>
<th data-quarto-table-cell-role="th">Premis Desc</th>
<th data-quarto-table-cell-role="th">Crm Cd 1</th>
<th data-quarto-table-cell-role="th">LOCATION</th>
<th data-quarto-table-cell-role="th">Cross Street</th>
<th data-quarto-table-cell-role="th">LAT</th>
<th data-quarto-table-cell-role="th">LON</th>
</tr>
</thead>
<tbody>
<tr class="odd">
<th data-quarto-table-cell-role="th">0</th>
<td>211507896</td>
<td>04/11/2021 12:00:00 AM</td>
<td>11/07/2020 12:00:00 AM</td>
<td>845</td>
<td>1502</td>
<td>0377</td>
<td>501.0</td>
<td>SINGLE FAMILY DWELLING</td>
<td>354.0</td>
<td>7800&nbsp;&nbsp;&nbsp;&nbsp;BEEMAN&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; AV</td>
<td>NaN</td>
<td>34.2124</td>
<td>-118.4092</td>
</tr>
<tr class="even">
<th data-quarto-table-cell-role="th">1</th>
<td>201516622</td>
<td>10/21/2020 12:00:00 AM</td>
<td>10/18/2020 12:00:00 AM</td>
<td>1845</td>
<td>1521</td>
<td>0416 0334 2004 1822 1414 0305 0319 0400</td>
<td>102.0</td>
<td>SIDEWALK</td>
<td>230.0</td>
<td>ATOLL&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;AV</td>
<td>N&nbsp;&nbsp;GAULT</td>
<td>34.1993</td>
<td>-118.4203</td>
</tr>
<tr class="odd">
<th data-quarto-table-cell-role="th">2</th>
<td>240913563</td>
<td>12/10/2024 12:00:00 AM</td>
<td>10/30/2020 12:00:00 AM</td>
<td>1240</td>
<td>933</td>
<td>0377</td>
<td>501.0</td>
<td>SINGLE FAMILY DWELLING</td>
<td>354.0</td>
<td>14600&nbsp;&nbsp;&nbsp;&nbsp;SYLVAN&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ST</td>
<td>NaN</td>
<td>34.1847</td>
<td>-118.4509</td>
</tr>
<tr class="even">
<th data-quarto-table-cell-role="th">3</th>
<td>210704711</td>
<td>12/24/2020 12:00:00 AM</td>
<td>12/24/2020 12:00:00 AM</td>
<td>1310</td>
<td>782</td>
<td>0344</td>
<td>101.0</td>
<td>STREET</td>
<td>331.0</td>
<td>6000&nbsp;&nbsp;&nbsp;&nbsp;COMEY&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;AV</td>
<td>NaN</td>
<td>34.0339</td>
<td>-118.3747</td>
</tr>
<tr class="odd">
<th data-quarto-table-cell-role="th">4</th>
<td>201418201</td>
<td>10/03/2020 12:00:00 AM</td>
<td>09/29/2020 12:00:00 AM</td>
<td>1830</td>
<td>1454</td>
<td>1300 0344 1606 2032</td>
<td>103.0</td>
<td>ALLEY</td>
<td>420.0</td>
<td>4700&nbsp;&nbsp;&nbsp;&nbsp;LA VILLA MARINA</td>
<td>NaN</td>
<td>33.9813</td>
<td>-118.4350</td>
</tr>
<tr class="even">
<th data-quarto-table-cell-role="th">...</th>
<td>...</td>
<td>...</td>
<td>...</td>
<td>...</td>
<td>...</td>
<td>...</td>
<td>...</td>
<td>...</td>
<td>...</td>
<td>...</td>
<td>...</td>
<td>...</td>
<td>...</td>
</tr>
<tr class="odd">
<th data-quarto-table-cell-role="th">1004889</th>
<td>240710284</td>
<td>07/24/2024 12:00:00 AM</td>
<td>07/23/2024 12:00:00 AM</td>
<td>1400</td>
<td>788</td>
<td>NaN</td>
<td>101.0</td>
<td>STREET</td>
<td>510.0</td>
<td>4000 W&nbsp;&nbsp;23RD&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ST</td>
<td>NaN</td>
<td>34.0362</td>
<td>-118.3284</td>
</tr>
<tr class="even">
<th data-quarto-table-cell-role="th">1004890</th>
<td>240104953</td>
<td>01/15/2024 12:00:00 AM</td>
<td>01/15/2024 12:00:00 AM</td>
<td>100</td>
<td>101</td>
<td>0329 0400 0416</td>
<td>503.0</td>
<td>HOTEL</td>
<td>745.0</td>
<td>1300 W&nbsp;&nbsp;SUNSET&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; BL</td>
<td>NaN</td>
<td>34.0685</td>
<td>-118.2460</td>
</tr>
<tr class="odd">
<th data-quarto-table-cell-role="th">1004891</th>
<td>240410786</td>
<td>10/14/2024 12:00:00 AM</td>
<td>10/11/2024 12:00:00 AM</td>
<td>2330</td>
<td>421</td>
<td>0344</td>
<td>210.0</td>
<td>RESTAURANT/FAST FOOD</td>
<td>341.0</td>
<td>1700&nbsp;&nbsp;&nbsp;&nbsp;ALBION&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ST</td>
<td>NaN</td>
<td>34.0675</td>
<td>-118.2240</td>
</tr>
<tr class="even">
<th data-quarto-table-cell-role="th">1004892</th>
<td>240309674</td>
<td>04/24/2024 12:00:00 AM</td>
<td>04/24/2024 12:00:00 AM</td>
<td>1500</td>
<td>358</td>
<td>1822 0334 0416 0445 0449 1202</td>
<td>102.0</td>
<td>SIDEWALK</td>
<td>230.0</td>
<td>FLOWER&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ST</td>
<td>JEFFERSON&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;BL</td>
<td>34.0215</td>
<td>-118.2868</td>
</tr>
<tr class="odd">
<th data-quarto-table-cell-role="th">1004893</th>
<td>240910892</td>
<td>08/13/2024 12:00:00 AM</td>
<td>08/12/2024 12:00:00 AM</td>
<td>2300</td>
<td>914</td>
<td>NaN</td>
<td>108.0</td>
<td>PARKING LOT</td>
<td>510.0</td>
<td>6900&nbsp;&nbsp;&nbsp;&nbsp;VESPER&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; AV</td>
<td>NaN</td>
<td>34.1961</td>
<td>-118.4510</td>
</tr>
</tbody>
</table>

<p>1004894 rows × 13 columns</p>
</div>
</div>
</div>
<p>And here’s how to do it in Polars.</p>
<div id="d6dc1ccd" class="cell" data-execution_count="32">
<div class="code-copy-outer-scaffold"><div class="sourceCode cell-code" id="cb39" style="background: #f1f3f5;"><pre class="sourceCode python code-with-copy"><code class="sourceCode python"><span id="cb39-1">(data</span>
<span id="cb39-2"> .select(col <span class="cf" style="color: #003B4F;
background-color: null;
font-weight: bold;
font-style: inherit;">for</span> col <span class="kw" style="color: #003B4F;
background-color: null;
font-weight: bold;
font-style: inherit;">in</span> data.columns <span class="cf" style="color: #003B4F;
background-color: null;
font-weight: bold;
font-style: inherit;">if</span> data.select(pl.col(col).n_unique()).item() <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">&gt;</span> <span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">140</span>)</span>
<span id="cb39-3"> )</span></code></pre></div></div>
<div class="cell-output cell-output-display" data-execution_count="32">
<div><style>
.dataframe > thead > tr,
.dataframe > tbody > tr {
  text-align: right;
  white-space: pre-wrap;
}
</style>
<small>shape: (1_004_894, 13)</small>
<table class="dataframe caption-top table table-sm table-striped small" data-border="1">
<thead>
<tr class="header">
<th data-quarto-table-cell-role="th">DR_NO</th>
<th data-quarto-table-cell-role="th">Date Rptd</th>
<th data-quarto-table-cell-role="th">DATE OCC</th>
<th data-quarto-table-cell-role="th">TIME OCC</th>
<th data-quarto-table-cell-role="th">Rpt Dist No</th>
<th data-quarto-table-cell-role="th">Mocodes</th>
<th data-quarto-table-cell-role="th">Premis Cd</th>
<th data-quarto-table-cell-role="th">Premis Desc</th>
<th data-quarto-table-cell-role="th">Crm Cd 1</th>
<th data-quarto-table-cell-role="th">LOCATION</th>
<th data-quarto-table-cell-role="th">Cross Street</th>
<th data-quarto-table-cell-role="th">LAT</th>
<th data-quarto-table-cell-role="th">LON</th>
</tr>
<tr class="even">
<td>i64</td>
<td>str</td>
<td>str</td>
<td>i64</td>
<td>i64</td>
<td>str</td>
<td>i64</td>
<td>str</td>
<td>i64</td>
<td>str</td>
<td>str</td>
<td>f64</td>
<td>f64</td>
</tr>
</thead>
<tbody>
<tr class="odd">
<td>211507896</td>
<td>"04/11/2021 12:00:00 AM"</td>
<td>"11/07/2020 12:00:00 AM"</td>
<td>845</td>
<td>1502</td>
<td>"0377"</td>
<td>501</td>
<td>"SINGLE FAMILY DWELLING"</td>
<td>354</td>
<td>"7800&nbsp;&nbsp;&nbsp;&nbsp;BEEMAN&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;…</td>
<td>null</td>
<td>34.2124</td>
<td>-118.4092</td>
</tr>
<tr class="even">
<td>201516622</td>
<td>"10/21/2020 12:00:00 AM"</td>
<td>"10/18/2020 12:00:00 AM"</td>
<td>1845</td>
<td>1521</td>
<td>"0416 0334 2004 1822 1414 0305 …</td>
<td>102</td>
<td>"SIDEWALK"</td>
<td>230</td>
<td>"ATOLL&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;A…</td>
<td>"N&nbsp;&nbsp;GAULT"</td>
<td>34.1993</td>
<td>-118.4203</td>
</tr>
<tr class="odd">
<td>240913563</td>
<td>"12/10/2024 12:00:00 AM"</td>
<td>"10/30/2020 12:00:00 AM"</td>
<td>1240</td>
<td>933</td>
<td>"0377"</td>
<td>501</td>
<td>"SINGLE FAMILY DWELLING"</td>
<td>354</td>
<td>"14600&nbsp;&nbsp;&nbsp;&nbsp;SYLVAN&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;…</td>
<td>null</td>
<td>34.1847</td>
<td>-118.4509</td>
</tr>
<tr class="even">
<td>210704711</td>
<td>"12/24/2020 12:00:00 AM"</td>
<td>"12/24/2020 12:00:00 AM"</td>
<td>1310</td>
<td>782</td>
<td>"0344"</td>
<td>101</td>
<td>"STREET"</td>
<td>331</td>
<td>"6000&nbsp;&nbsp;&nbsp;&nbsp;COMEY&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;…</td>
<td>null</td>
<td>34.0339</td>
<td>-118.3747</td>
</tr>
<tr class="odd">
<td>201418201</td>
<td>"10/03/2020 12:00:00 AM"</td>
<td>"09/29/2020 12:00:00 AM"</td>
<td>1830</td>
<td>1454</td>
<td>"1300 0344 1606 2032"</td>
<td>103</td>
<td>"ALLEY"</td>
<td>420</td>
<td>"4700&nbsp;&nbsp;&nbsp;&nbsp;LA VILLA MARINA"</td>
<td>null</td>
<td>33.9813</td>
<td>-118.435</td>
</tr>
<tr class="even">
<td>…</td>
<td>…</td>
<td>…</td>
<td>…</td>
<td>…</td>
<td>…</td>
<td>…</td>
<td>…</td>
<td>…</td>
<td>…</td>
<td>…</td>
<td>…</td>
<td>…</td>
</tr>
<tr class="odd">
<td>240710284</td>
<td>"07/24/2024 12:00:00 AM"</td>
<td>"07/23/2024 12:00:00 AM"</td>
<td>1400</td>
<td>788</td>
<td>null</td>
<td>101</td>
<td>"STREET"</td>
<td>510</td>
<td>"4000 W&nbsp;&nbsp;23RD&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;…</td>
<td>null</td>
<td>34.0362</td>
<td>-118.3284</td>
</tr>
<tr class="even">
<td>240104953</td>
<td>"01/15/2024 12:00:00 AM"</td>
<td>"01/15/2024 12:00:00 AM"</td>
<td>100</td>
<td>101</td>
<td>"0329 0400 0416"</td>
<td>503</td>
<td>"HOTEL"</td>
<td>745</td>
<td>"1300 W&nbsp;&nbsp;SUNSET&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;…</td>
<td>null</td>
<td>34.0685</td>
<td>-118.246</td>
</tr>
<tr class="odd">
<td>240410786</td>
<td>"10/14/2024 12:00:00 AM"</td>
<td>"10/11/2024 12:00:00 AM"</td>
<td>2330</td>
<td>421</td>
<td>"0344"</td>
<td>210</td>
<td>"RESTAURANT/FAST FOOD"</td>
<td>341</td>
<td>"1700&nbsp;&nbsp;&nbsp;&nbsp;ALBION&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;…</td>
<td>null</td>
<td>34.0675</td>
<td>-118.224</td>
</tr>
<tr class="even">
<td>240309674</td>
<td>"04/24/2024 12:00:00 AM"</td>
<td>"04/24/2024 12:00:00 AM"</td>
<td>1500</td>
<td>358</td>
<td>"1822 0334 0416 0445 0449 1202"</td>
<td>102</td>
<td>"SIDEWALK"</td>
<td>230</td>
<td>"FLOWER&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;S…</td>
<td>"JEFFERSON&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;B…</td>
<td>34.0215</td>
<td>-118.2868</td>
</tr>
<tr class="odd">
<td>240910892</td>
<td>"08/13/2024 12:00:00 AM"</td>
<td>"08/12/2024 12:00:00 AM"</td>
<td>2300</td>
<td>914</td>
<td>null</td>
<td>108</td>
<td>"PARKING LOT"</td>
<td>510</td>
<td>"6900&nbsp;&nbsp;&nbsp;&nbsp;VESPER&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;…</td>
<td>null</td>
<td>34.1961</td>
<td>-118.451</td>
</tr>
</tbody>
</table>
</div>
</div>
</div>
</section>
<section id="closing-with-a-practical-example" class="level2">
<h2 data-anchor-id="closing-with-a-practical-example">Closing with a practical example</h2>
<p>Let’s end with a visualization of the previous analysis. I’ll focus on the <em>Burglary from Vehicle</em> column and plot it over time for the different <em>AREA NAME</em> values. Before we begin creating the charts, I’ll show the dataframe that will be used to create the plot so we know what it looks like.</p>
<p>Here’s the pandas version.</p>
<div id="fb533d8e" class="cell" data-execution_count="33">
<div class="code-copy-outer-scaffold"><div class="sourceCode cell-code" id="annotated-cell-33" data-llms-code-original="(df
 .astype({'Date Rptd': 'datetime64[ns]',
          'DATE OCC': 'datetime64[ns]',
          })
 .groupby([pd.Grouper(key='DATE OCC', freq='ME'), 'AREA NAME', 'Crm Cd Desc'])
 .size()
 .unstack()
 .loc[:, 'BURGLARY FROM VEHICLE']
 .unstack()
 .loc[:, lambda adf: sorted(adf.columns, key=lambda col: 1 if col == 'Hollywood' else -1)] # <1>
)" style="background: #f1f3f5;"><pre class="sourceCode python code-annotation-code code-with-copy code-annotated"><code class="sourceCode python"><span id="annotated-cell-33-1">(df</span>
<span id="annotated-cell-33-2"> .astype({<span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">'Date Rptd'</span>: <span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">'datetime64[ns]'</span>,</span>
<span id="annotated-cell-33-3">          <span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">'DATE OCC'</span>: <span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">'datetime64[ns]'</span>,</span>
<span id="annotated-cell-33-4">          })</span>
<span id="annotated-cell-33-5"> .groupby([pd.Grouper(key<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span><span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">'DATE OCC'</span>, freq<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span><span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">'ME'</span>), <span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">'AREA NAME'</span>, <span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">'Crm Cd Desc'</span>])</span>
<span id="annotated-cell-33-6"> .size()</span>
<span id="annotated-cell-33-7"> .unstack()</span>
<span id="annotated-cell-33-8"> .loc[:, <span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">'BURGLARY FROM VEHICLE'</span>]</span>
<span id="annotated-cell-33-9"> .unstack()</span>
<a class="code-annotation-anchor" data-target-cell="annotated-cell-33" data-target-annotation="1" onclick="event.preventDefault();">1</a><span id="annotated-cell-33-10" class="code-annotation-target"> .loc[:, <span class="kw" style="color: #003B4F;
background-color: null;
font-weight: bold;
font-style: inherit;">lambda</span> adf: <span class="bu" style="color: null;
background-color: null;
font-style: inherit;">sorted</span>(adf.columns, key<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span><span class="kw" style="color: #003B4F;
background-color: null;
font-weight: bold;
font-style: inherit;">lambda</span> col: <span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">1</span> <span class="cf" style="color: #003B4F;
background-color: null;
font-weight: bold;
font-style: inherit;">if</span> col <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">==</span> <span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">'Hollywood'</span> <span class="cf" style="color: #003B4F;
background-color: null;
font-weight: bold;
font-style: inherit;">else</span> <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">-</span><span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">1</span>)]</span>
<span id="annotated-cell-33-11">)</span><div class="code-annotation-gutter-bg"></div><div class="code-annotation-gutter"></div></code></pre></div></div>
<div class="cell-annotation">
<dl class="code-annotation-container-grid">
<dt data-target-cell="annotated-cell-33" data-target-annotation="1">1</dt>
<dd>
<span data-code-cell="annotated-cell-33" data-code-lines="10" data-code-annotation="1">Move the <em>Hollywood</em> column to the end so that it appears on top of the other columns.</span>
</dd>
</dl>
</div>
<div class="cell-output cell-output-display" data-execution_count="33">
<div>


<table class="dataframe caption-top table table-sm table-striped small" data-border="1">
<thead>
<tr class="header">
<th data-quarto-table-cell-role="th">AREA NAME</th>
<th data-quarto-table-cell-role="th">77th Street</th>
<th data-quarto-table-cell-role="th">Central</th>
<th data-quarto-table-cell-role="th">Devonshire</th>
<th data-quarto-table-cell-role="th">Foothill</th>
<th data-quarto-table-cell-role="th">Harbor</th>
<th data-quarto-table-cell-role="th">Hollenbeck</th>
<th data-quarto-table-cell-role="th">Mission</th>
<th data-quarto-table-cell-role="th">N Hollywood</th>
<th data-quarto-table-cell-role="th">Newton</th>
<th data-quarto-table-cell-role="th">Northeast</th>
<th data-quarto-table-cell-role="th">...</th>
<th data-quarto-table-cell-role="th">Pacific</th>
<th data-quarto-table-cell-role="th">Rampart</th>
<th data-quarto-table-cell-role="th">Southeast</th>
<th data-quarto-table-cell-role="th">Southwest</th>
<th data-quarto-table-cell-role="th">Topanga</th>
<th data-quarto-table-cell-role="th">Van Nuys</th>
<th data-quarto-table-cell-role="th">West LA</th>
<th data-quarto-table-cell-role="th">West Valley</th>
<th data-quarto-table-cell-role="th">Wilshire</th>
<th data-quarto-table-cell-role="th">Hollywood</th>
</tr>
<tr class="even">
<th data-quarto-table-cell-role="th">DATE OCC</th>
<th data-quarto-table-cell-role="th"></th>
<th data-quarto-table-cell-role="th"></th>
<th data-quarto-table-cell-role="th"></th>
<th data-quarto-table-cell-role="th"></th>
<th data-quarto-table-cell-role="th"></th>
<th data-quarto-table-cell-role="th"></th>
<th data-quarto-table-cell-role="th"></th>
<th data-quarto-table-cell-role="th"></th>
<th data-quarto-table-cell-role="th"></th>
<th data-quarto-table-cell-role="th"></th>
<th data-quarto-table-cell-role="th"></th>
<th data-quarto-table-cell-role="th"></th>
<th data-quarto-table-cell-role="th"></th>
<th data-quarto-table-cell-role="th"></th>
<th data-quarto-table-cell-role="th"></th>
<th data-quarto-table-cell-role="th"></th>
<th data-quarto-table-cell-role="th"></th>
<th data-quarto-table-cell-role="th"></th>
<th data-quarto-table-cell-role="th"></th>
<th data-quarto-table-cell-role="th"></th>
<th data-quarto-table-cell-role="th"></th>
</tr>
</thead>
<tbody>
<tr class="odd">
<th data-quarto-table-cell-role="th">2020-01-31</th>
<td>75.0</td>
<td>144.0</td>
<td>67.0</td>
<td>37.0</td>
<td>29.0</td>
<td>32.0</td>
<td>53.0</td>
<td>108.0</td>
<td>72.0</td>
<td>80.0</td>
<td>...</td>
<td>70.0</td>
<td>72.0</td>
<td>42.0</td>
<td>53.0</td>
<td>57.0</td>
<td>59.0</td>
<td>83.0</td>
<td>79.0</td>
<td>78.0</td>
<td>77.0</td>
</tr>
<tr class="even">
<th data-quarto-table-cell-role="th">2020-02-29</th>
<td>45.0</td>
<td>148.0</td>
<td>58.0</td>
<td>40.0</td>
<td>34.0</td>
<td>31.0</td>
<td>47.0</td>
<td>78.0</td>
<td>60.0</td>
<td>73.0</td>
<td>...</td>
<td>73.0</td>
<td>58.0</td>
<td>44.0</td>
<td>41.0</td>
<td>36.0</td>
<td>52.0</td>
<td>62.0</td>
<td>63.0</td>
<td>79.0</td>
<td>65.0</td>
</tr>
<tr class="odd">
<th data-quarto-table-cell-role="th">2020-03-31</th>
<td>55.0</td>
<td>114.0</td>
<td>52.0</td>
<td>41.0</td>
<td>38.0</td>
<td>40.0</td>
<td>43.0</td>
<td>64.0</td>
<td>37.0</td>
<td>74.0</td>
<td>...</td>
<td>85.0</td>
<td>37.0</td>
<td>38.0</td>
<td>46.0</td>
<td>44.0</td>
<td>60.0</td>
<td>55.0</td>
<td>34.0</td>
<td>52.0</td>
<td>69.0</td>
</tr>
<tr class="even">
<th data-quarto-table-cell-role="th">2020-04-30</th>
<td>61.0</td>
<td>96.0</td>
<td>56.0</td>
<td>28.0</td>
<td>53.0</td>
<td>24.0</td>
<td>30.0</td>
<td>78.0</td>
<td>51.0</td>
<td>74.0</td>
<td>...</td>
<td>80.0</td>
<td>62.0</td>
<td>30.0</td>
<td>60.0</td>
<td>34.0</td>
<td>64.0</td>
<td>69.0</td>
<td>45.0</td>
<td>52.0</td>
<td>47.0</td>
</tr>
<tr class="odd">
<th data-quarto-table-cell-role="th">2020-05-31</th>
<td>41.0</td>
<td>78.0</td>
<td>46.0</td>
<td>40.0</td>
<td>39.0</td>
<td>23.0</td>
<td>40.0</td>
<td>77.0</td>
<td>44.0</td>
<td>58.0</td>
<td>...</td>
<td>66.0</td>
<td>60.0</td>
<td>31.0</td>
<td>33.0</td>
<td>51.0</td>
<td>60.0</td>
<td>67.0</td>
<td>34.0</td>
<td>49.0</td>
<td>56.0</td>
</tr>
<tr class="even">
<th data-quarto-table-cell-role="th">2020-06-30</th>
<td>32.0</td>
<td>80.0</td>
<td>74.0</td>
<td>34.0</td>
<td>30.0</td>
<td>34.0</td>
<td>38.0</td>
<td>56.0</td>
<td>29.0</td>
<td>59.0</td>
<td>...</td>
<td>70.0</td>
<td>37.0</td>
<td>38.0</td>
<td>41.0</td>
<td>55.0</td>
<td>81.0</td>
<td>80.0</td>
<td>51.0</td>
<td>50.0</td>
<td>40.0</td>
</tr>
<tr class="odd">
<th data-quarto-table-cell-role="th">2020-07-31</th>
<td>51.0</td>
<td>93.0</td>
<td>46.0</td>
<td>34.0</td>
<td>28.0</td>
<td>20.0</td>
<td>39.0</td>
<td>53.0</td>
<td>32.0</td>
<td>50.0</td>
<td>...</td>
<td>62.0</td>
<td>39.0</td>
<td>31.0</td>
<td>50.0</td>
<td>44.0</td>
<td>62.0</td>
<td>64.0</td>
<td>48.0</td>
<td>56.0</td>
<td>64.0</td>
</tr>
<tr class="even">
<th data-quarto-table-cell-role="th">2020-08-31</th>
<td>44.0</td>
<td>95.0</td>
<td>59.0</td>
<td>18.0</td>
<td>14.0</td>
<td>15.0</td>
<td>27.0</td>
<td>53.0</td>
<td>36.0</td>
<td>25.0</td>
<td>...</td>
<td>64.0</td>
<td>49.0</td>
<td>26.0</td>
<td>40.0</td>
<td>38.0</td>
<td>67.0</td>
<td>53.0</td>
<td>51.0</td>
<td>40.0</td>
<td>41.0</td>
</tr>
<tr class="odd">
<th data-quarto-table-cell-role="th">2020-09-30</th>
<td>27.0</td>
<td>75.0</td>
<td>35.0</td>
<td>20.0</td>
<td>26.0</td>
<td>25.0</td>
<td>20.0</td>
<td>50.0</td>
<td>23.0</td>
<td>44.0</td>
<td>...</td>
<td>47.0</td>
<td>48.0</td>
<td>31.0</td>
<td>29.0</td>
<td>30.0</td>
<td>50.0</td>
<td>46.0</td>
<td>37.0</td>
<td>39.0</td>
<td>46.0</td>
</tr>
<tr class="even">
<th data-quarto-table-cell-role="th">2020-10-31</th>
<td>24.0</td>
<td>89.0</td>
<td>34.0</td>
<td>23.0</td>
<td>24.0</td>
<td>20.0</td>
<td>33.0</td>
<td>58.0</td>
<td>23.0</td>
<td>29.0</td>
<td>...</td>
<td>59.0</td>
<td>36.0</td>
<td>37.0</td>
<td>47.0</td>
<td>51.0</td>
<td>67.0</td>
<td>75.0</td>
<td>42.0</td>
<td>42.0</td>
<td>77.0</td>
</tr>
<tr class="odd">
<th data-quarto-table-cell-role="th">2020-11-30</th>
<td>42.0</td>
<td>114.0</td>
<td>48.0</td>
<td>32.0</td>
<td>32.0</td>
<td>16.0</td>
<td>34.0</td>
<td>58.0</td>
<td>29.0</td>
<td>37.0</td>
<td>...</td>
<td>55.0</td>
<td>53.0</td>
<td>45.0</td>
<td>25.0</td>
<td>41.0</td>
<td>50.0</td>
<td>74.0</td>
<td>46.0</td>
<td>56.0</td>
<td>47.0</td>
</tr>
<tr class="even">
<th data-quarto-table-cell-role="th">2020-12-31</th>
<td>36.0</td>
<td>67.0</td>
<td>41.0</td>
<td>32.0</td>
<td>24.0</td>
<td>32.0</td>
<td>46.0</td>
<td>89.0</td>
<td>35.0</td>
<td>54.0</td>
<td>...</td>
<td>67.0</td>
<td>45.0</td>
<td>38.0</td>
<td>26.0</td>
<td>61.0</td>
<td>43.0</td>
<td>85.0</td>
<td>52.0</td>
<td>58.0</td>
<td>58.0</td>
</tr>
<tr class="odd">
<th data-quarto-table-cell-role="th">2021-01-31</th>
<td>30.0</td>
<td>95.0</td>
<td>44.0</td>
<td>42.0</td>
<td>51.0</td>
<td>31.0</td>
<td>28.0</td>
<td>71.0</td>
<td>45.0</td>
<td>59.0</td>
<td>...</td>
<td>96.0</td>
<td>56.0</td>
<td>29.0</td>
<td>43.0</td>
<td>59.0</td>
<td>48.0</td>
<td>85.0</td>
<td>41.0</td>
<td>54.0</td>
<td>76.0</td>
</tr>
<tr class="even">
<th data-quarto-table-cell-role="th">2021-02-28</th>
<td>52.0</td>
<td>100.0</td>
<td>31.0</td>
<td>34.0</td>
<td>37.0</td>
<td>24.0</td>
<td>32.0</td>
<td>63.0</td>
<td>34.0</td>
<td>42.0</td>
<td>...</td>
<td>77.0</td>
<td>53.0</td>
<td>28.0</td>
<td>51.0</td>
<td>41.0</td>
<td>46.0</td>
<td>79.0</td>
<td>29.0</td>
<td>59.0</td>
<td>66.0</td>
</tr>
<tr class="odd">
<th data-quarto-table-cell-role="th">2021-03-31</th>
<td>30.0</td>
<td>75.0</td>
<td>43.0</td>
<td>27.0</td>
<td>38.0</td>
<td>24.0</td>
<td>33.0</td>
<td>67.0</td>
<td>29.0</td>
<td>56.0</td>
<td>...</td>
<td>56.0</td>
<td>60.0</td>
<td>28.0</td>
<td>47.0</td>
<td>40.0</td>
<td>62.0</td>
<td>64.0</td>
<td>34.0</td>
<td>58.0</td>
<td>91.0</td>
</tr>
<tr class="even">
<th data-quarto-table-cell-role="th">2021-04-30</th>
<td>28.0</td>
<td>90.0</td>
<td>47.0</td>
<td>32.0</td>
<td>28.0</td>
<td>17.0</td>
<td>28.0</td>
<td>82.0</td>
<td>28.0</td>
<td>42.0</td>
<td>...</td>
<td>83.0</td>
<td>34.0</td>
<td>26.0</td>
<td>51.0</td>
<td>42.0</td>
<td>43.0</td>
<td>68.0</td>
<td>36.0</td>
<td>44.0</td>
<td>81.0</td>
</tr>
<tr class="odd">
<th data-quarto-table-cell-role="th">2021-05-31</th>
<td>37.0</td>
<td>118.0</td>
<td>44.0</td>
<td>36.0</td>
<td>35.0</td>
<td>25.0</td>
<td>30.0</td>
<td>67.0</td>
<td>45.0</td>
<td>55.0</td>
<td>...</td>
<td>108.0</td>
<td>37.0</td>
<td>40.0</td>
<td>28.0</td>
<td>49.0</td>
<td>55.0</td>
<td>68.0</td>
<td>30.0</td>
<td>61.0</td>
<td>79.0</td>
</tr>
<tr class="even">
<th data-quarto-table-cell-role="th">2021-06-30</th>
<td>37.0</td>
<td>112.0</td>
<td>62.0</td>
<td>33.0</td>
<td>22.0</td>
<td>12.0</td>
<td>32.0</td>
<td>85.0</td>
<td>34.0</td>
<td>43.0</td>
<td>...</td>
<td>73.0</td>
<td>38.0</td>
<td>33.0</td>
<td>23.0</td>
<td>43.0</td>
<td>41.0</td>
<td>59.0</td>
<td>46.0</td>
<td>51.0</td>
<td>85.0</td>
</tr>
<tr class="odd">
<th data-quarto-table-cell-role="th">2021-07-31</th>
<td>25.0</td>
<td>146.0</td>
<td>64.0</td>
<td>16.0</td>
<td>30.0</td>
<td>26.0</td>
<td>34.0</td>
<td>61.0</td>
<td>79.0</td>
<td>50.0</td>
<td>...</td>
<td>67.0</td>
<td>45.0</td>
<td>26.0</td>
<td>41.0</td>
<td>43.0</td>
<td>43.0</td>
<td>68.0</td>
<td>48.0</td>
<td>53.0</td>
<td>95.0</td>
</tr>
<tr class="even">
<th data-quarto-table-cell-role="th">2021-08-31</th>
<td>36.0</td>
<td>138.0</td>
<td>50.0</td>
<td>32.0</td>
<td>26.0</td>
<td>29.0</td>
<td>39.0</td>
<td>71.0</td>
<td>51.0</td>
<td>48.0</td>
<td>...</td>
<td>81.0</td>
<td>48.0</td>
<td>23.0</td>
<td>42.0</td>
<td>43.0</td>
<td>55.0</td>
<td>57.0</td>
<td>44.0</td>
<td>43.0</td>
<td>101.0</td>
</tr>
<tr class="odd">
<th data-quarto-table-cell-role="th">2021-09-30</th>
<td>18.0</td>
<td>165.0</td>
<td>52.0</td>
<td>28.0</td>
<td>25.0</td>
<td>30.0</td>
<td>42.0</td>
<td>80.0</td>
<td>64.0</td>
<td>43.0</td>
<td>...</td>
<td>59.0</td>
<td>45.0</td>
<td>26.0</td>
<td>26.0</td>
<td>39.0</td>
<td>55.0</td>
<td>63.0</td>
<td>44.0</td>
<td>48.0</td>
<td>89.0</td>
</tr>
<tr class="even">
<th data-quarto-table-cell-role="th">2021-10-31</th>
<td>37.0</td>
<td>196.0</td>
<td>67.0</td>
<td>21.0</td>
<td>39.0</td>
<td>29.0</td>
<td>54.0</td>
<td>102.0</td>
<td>48.0</td>
<td>55.0</td>
<td>...</td>
<td>66.0</td>
<td>64.0</td>
<td>33.0</td>
<td>39.0</td>
<td>57.0</td>
<td>69.0</td>
<td>66.0</td>
<td>48.0</td>
<td>57.0</td>
<td>116.0</td>
</tr>
<tr class="odd">
<th data-quarto-table-cell-role="th">2021-11-30</th>
<td>30.0</td>
<td>178.0</td>
<td>58.0</td>
<td>25.0</td>
<td>38.0</td>
<td>28.0</td>
<td>37.0</td>
<td>87.0</td>
<td>43.0</td>
<td>66.0</td>
<td>...</td>
<td>64.0</td>
<td>55.0</td>
<td>23.0</td>
<td>35.0</td>
<td>38.0</td>
<td>47.0</td>
<td>75.0</td>
<td>64.0</td>
<td>68.0</td>
<td>105.0</td>
</tr>
<tr class="even">
<th data-quarto-table-cell-role="th">2021-12-31</th>
<td>22.0</td>
<td>247.0</td>
<td>51.0</td>
<td>25.0</td>
<td>25.0</td>
<td>33.0</td>
<td>43.0</td>
<td>72.0</td>
<td>53.0</td>
<td>56.0</td>
<td>...</td>
<td>73.0</td>
<td>56.0</td>
<td>28.0</td>
<td>45.0</td>
<td>65.0</td>
<td>59.0</td>
<td>70.0</td>
<td>57.0</td>
<td>75.0</td>
<td>84.0</td>
</tr>
<tr class="odd">
<th data-quarto-table-cell-role="th">2022-01-31</th>
<td>22.0</td>
<td>230.0</td>
<td>51.0</td>
<td>30.0</td>
<td>36.0</td>
<td>30.0</td>
<td>52.0</td>
<td>71.0</td>
<td>43.0</td>
<td>70.0</td>
<td>...</td>
<td>95.0</td>
<td>58.0</td>
<td>28.0</td>
<td>41.0</td>
<td>46.0</td>
<td>62.0</td>
<td>72.0</td>
<td>51.0</td>
<td>78.0</td>
<td>112.0</td>
</tr>
<tr class="even">
<th data-quarto-table-cell-role="th">2022-02-28</th>
<td>30.0</td>
<td>178.0</td>
<td>43.0</td>
<td>37.0</td>
<td>32.0</td>
<td>22.0</td>
<td>46.0</td>
<td>66.0</td>
<td>52.0</td>
<td>51.0</td>
<td>...</td>
<td>65.0</td>
<td>54.0</td>
<td>15.0</td>
<td>37.0</td>
<td>51.0</td>
<td>33.0</td>
<td>69.0</td>
<td>45.0</td>
<td>66.0</td>
<td>96.0</td>
</tr>
<tr class="odd">
<th data-quarto-table-cell-role="th">2022-03-31</th>
<td>24.0</td>
<td>264.0</td>
<td>26.0</td>
<td>24.0</td>
<td>35.0</td>
<td>29.0</td>
<td>38.0</td>
<td>72.0</td>
<td>42.0</td>
<td>62.0</td>
<td>...</td>
<td>103.0</td>
<td>51.0</td>
<td>17.0</td>
<td>34.0</td>
<td>36.0</td>
<td>41.0</td>
<td>67.0</td>
<td>46.0</td>
<td>68.0</td>
<td>84.0</td>
</tr>
<tr class="even">
<th data-quarto-table-cell-role="th">2022-04-30</th>
<td>32.0</td>
<td>272.0</td>
<td>62.0</td>
<td>25.0</td>
<td>29.0</td>
<td>15.0</td>
<td>35.0</td>
<td>70.0</td>
<td>58.0</td>
<td>64.0</td>
<td>...</td>
<td>89.0</td>
<td>45.0</td>
<td>21.0</td>
<td>39.0</td>
<td>42.0</td>
<td>56.0</td>
<td>71.0</td>
<td>61.0</td>
<td>75.0</td>
<td>85.0</td>
</tr>
<tr class="odd">
<th data-quarto-table-cell-role="th">2022-05-31</th>
<td>28.0</td>
<td>234.0</td>
<td>43.0</td>
<td>24.0</td>
<td>30.0</td>
<td>25.0</td>
<td>21.0</td>
<td>58.0</td>
<td>50.0</td>
<td>68.0</td>
<td>...</td>
<td>74.0</td>
<td>63.0</td>
<td>25.0</td>
<td>35.0</td>
<td>48.0</td>
<td>46.0</td>
<td>63.0</td>
<td>53.0</td>
<td>53.0</td>
<td>120.0</td>
</tr>
<tr class="even">
<th data-quarto-table-cell-role="th">2022-06-30</th>
<td>33.0</td>
<td>242.0</td>
<td>32.0</td>
<td>27.0</td>
<td>34.0</td>
<td>26.0</td>
<td>27.0</td>
<td>58.0</td>
<td>59.0</td>
<td>70.0</td>
<td>...</td>
<td>84.0</td>
<td>50.0</td>
<td>20.0</td>
<td>33.0</td>
<td>39.0</td>
<td>44.0</td>
<td>53.0</td>
<td>50.0</td>
<td>56.0</td>
<td>152.0</td>
</tr>
<tr class="odd">
<th data-quarto-table-cell-role="th">2022-07-31</th>
<td>32.0</td>
<td>275.0</td>
<td>31.0</td>
<td>25.0</td>
<td>22.0</td>
<td>15.0</td>
<td>26.0</td>
<td>49.0</td>
<td>56.0</td>
<td>60.0</td>
<td>...</td>
<td>47.0</td>
<td>41.0</td>
<td>22.0</td>
<td>23.0</td>
<td>24.0</td>
<td>40.0</td>
<td>52.0</td>
<td>31.0</td>
<td>64.0</td>
<td>101.0</td>
</tr>
<tr class="even">
<th data-quarto-table-cell-role="th">2022-08-31</th>
<td>26.0</td>
<td>278.0</td>
<td>40.0</td>
<td>16.0</td>
<td>29.0</td>
<td>17.0</td>
<td>28.0</td>
<td>51.0</td>
<td>55.0</td>
<td>58.0</td>
<td>...</td>
<td>58.0</td>
<td>46.0</td>
<td>33.0</td>
<td>24.0</td>
<td>28.0</td>
<td>35.0</td>
<td>47.0</td>
<td>38.0</td>
<td>54.0</td>
<td>77.0</td>
</tr>
<tr class="odd">
<th data-quarto-table-cell-role="th">2022-09-30</th>
<td>34.0</td>
<td>218.0</td>
<td>37.0</td>
<td>22.0</td>
<td>23.0</td>
<td>26.0</td>
<td>39.0</td>
<td>53.0</td>
<td>46.0</td>
<td>58.0</td>
<td>...</td>
<td>53.0</td>
<td>34.0</td>
<td>16.0</td>
<td>30.0</td>
<td>37.0</td>
<td>55.0</td>
<td>50.0</td>
<td>46.0</td>
<td>50.0</td>
<td>93.0</td>
</tr>
<tr class="even">
<th data-quarto-table-cell-role="th">2022-10-31</th>
<td>20.0</td>
<td>228.0</td>
<td>46.0</td>
<td>21.0</td>
<td>30.0</td>
<td>21.0</td>
<td>11.0</td>
<td>49.0</td>
<td>63.0</td>
<td>50.0</td>
<td>...</td>
<td>63.0</td>
<td>64.0</td>
<td>29.0</td>
<td>31.0</td>
<td>42.0</td>
<td>50.0</td>
<td>50.0</td>
<td>74.0</td>
<td>47.0</td>
<td>87.0</td>
</tr>
<tr class="odd">
<th data-quarto-table-cell-role="th">2022-11-30</th>
<td>27.0</td>
<td>205.0</td>
<td>37.0</td>
<td>26.0</td>
<td>26.0</td>
<td>28.0</td>
<td>27.0</td>
<td>59.0</td>
<td>58.0</td>
<td>41.0</td>
<td>...</td>
<td>59.0</td>
<td>37.0</td>
<td>24.0</td>
<td>32.0</td>
<td>32.0</td>
<td>55.0</td>
<td>55.0</td>
<td>56.0</td>
<td>39.0</td>
<td>63.0</td>
</tr>
<tr class="even">
<th data-quarto-table-cell-role="th">2022-12-31</th>
<td>28.0</td>
<td>317.0</td>
<td>39.0</td>
<td>36.0</td>
<td>29.0</td>
<td>25.0</td>
<td>28.0</td>
<td>64.0</td>
<td>50.0</td>
<td>66.0</td>
<td>...</td>
<td>62.0</td>
<td>53.0</td>
<td>31.0</td>
<td>32.0</td>
<td>33.0</td>
<td>55.0</td>
<td>60.0</td>
<td>53.0</td>
<td>54.0</td>
<td>72.0</td>
</tr>
<tr class="odd">
<th data-quarto-table-cell-role="th">2023-01-31</th>
<td>31.0</td>
<td>292.0</td>
<td>35.0</td>
<td>44.0</td>
<td>25.0</td>
<td>21.0</td>
<td>38.0</td>
<td>57.0</td>
<td>54.0</td>
<td>75.0</td>
<td>...</td>
<td>61.0</td>
<td>51.0</td>
<td>27.0</td>
<td>39.0</td>
<td>34.0</td>
<td>32.0</td>
<td>67.0</td>
<td>36.0</td>
<td>55.0</td>
<td>75.0</td>
</tr>
<tr class="even">
<th data-quarto-table-cell-role="th">2023-02-28</th>
<td>18.0</td>
<td>236.0</td>
<td>36.0</td>
<td>15.0</td>
<td>29.0</td>
<td>24.0</td>
<td>30.0</td>
<td>40.0</td>
<td>39.0</td>
<td>78.0</td>
<td>...</td>
<td>72.0</td>
<td>33.0</td>
<td>16.0</td>
<td>44.0</td>
<td>26.0</td>
<td>62.0</td>
<td>57.0</td>
<td>45.0</td>
<td>57.0</td>
<td>77.0</td>
</tr>
<tr class="odd">
<th data-quarto-table-cell-role="th">2023-03-31</th>
<td>31.0</td>
<td>141.0</td>
<td>38.0</td>
<td>18.0</td>
<td>27.0</td>
<td>24.0</td>
<td>28.0</td>
<td>68.0</td>
<td>42.0</td>
<td>53.0</td>
<td>...</td>
<td>67.0</td>
<td>43.0</td>
<td>25.0</td>
<td>38.0</td>
<td>43.0</td>
<td>45.0</td>
<td>59.0</td>
<td>52.0</td>
<td>48.0</td>
<td>79.0</td>
</tr>
<tr class="even">
<th data-quarto-table-cell-role="th">2023-04-30</th>
<td>19.0</td>
<td>140.0</td>
<td>26.0</td>
<td>20.0</td>
<td>23.0</td>
<td>22.0</td>
<td>15.0</td>
<td>54.0</td>
<td>42.0</td>
<td>52.0</td>
<td>...</td>
<td>68.0</td>
<td>30.0</td>
<td>24.0</td>
<td>31.0</td>
<td>37.0</td>
<td>31.0</td>
<td>33.0</td>
<td>47.0</td>
<td>55.0</td>
<td>47.0</td>
</tr>
<tr class="odd">
<th data-quarto-table-cell-role="th">2023-05-31</th>
<td>26.0</td>
<td>192.0</td>
<td>34.0</td>
<td>21.0</td>
<td>24.0</td>
<td>20.0</td>
<td>20.0</td>
<td>49.0</td>
<td>63.0</td>
<td>53.0</td>
<td>...</td>
<td>61.0</td>
<td>46.0</td>
<td>21.0</td>
<td>41.0</td>
<td>38.0</td>
<td>25.0</td>
<td>46.0</td>
<td>27.0</td>
<td>53.0</td>
<td>52.0</td>
</tr>
<tr class="even">
<th data-quarto-table-cell-role="th">2023-06-30</th>
<td>26.0</td>
<td>175.0</td>
<td>30.0</td>
<td>19.0</td>
<td>28.0</td>
<td>26.0</td>
<td>14.0</td>
<td>55.0</td>
<td>55.0</td>
<td>58.0</td>
<td>...</td>
<td>74.0</td>
<td>62.0</td>
<td>26.0</td>
<td>22.0</td>
<td>42.0</td>
<td>36.0</td>
<td>42.0</td>
<td>45.0</td>
<td>71.0</td>
<td>71.0</td>
</tr>
<tr class="odd">
<th data-quarto-table-cell-role="th">2023-07-31</th>
<td>42.0</td>
<td>186.0</td>
<td>40.0</td>
<td>21.0</td>
<td>35.0</td>
<td>22.0</td>
<td>32.0</td>
<td>52.0</td>
<td>68.0</td>
<td>61.0</td>
<td>...</td>
<td>53.0</td>
<td>36.0</td>
<td>29.0</td>
<td>49.0</td>
<td>30.0</td>
<td>44.0</td>
<td>55.0</td>
<td>57.0</td>
<td>71.0</td>
<td>50.0</td>
</tr>
<tr class="even">
<th data-quarto-table-cell-role="th">2023-08-31</th>
<td>34.0</td>
<td>237.0</td>
<td>22.0</td>
<td>21.0</td>
<td>29.0</td>
<td>17.0</td>
<td>28.0</td>
<td>50.0</td>
<td>68.0</td>
<td>64.0</td>
<td>...</td>
<td>58.0</td>
<td>40.0</td>
<td>21.0</td>
<td>43.0</td>
<td>31.0</td>
<td>39.0</td>
<td>64.0</td>
<td>35.0</td>
<td>86.0</td>
<td>70.0</td>
</tr>
<tr class="odd">
<th data-quarto-table-cell-role="th">2023-09-30</th>
<td>36.0</td>
<td>199.0</td>
<td>39.0</td>
<td>19.0</td>
<td>32.0</td>
<td>26.0</td>
<td>27.0</td>
<td>57.0</td>
<td>59.0</td>
<td>67.0</td>
<td>...</td>
<td>65.0</td>
<td>52.0</td>
<td>18.0</td>
<td>48.0</td>
<td>54.0</td>
<td>29.0</td>
<td>65.0</td>
<td>60.0</td>
<td>72.0</td>
<td>63.0</td>
</tr>
<tr class="even">
<th data-quarto-table-cell-role="th">2023-10-31</th>
<td>33.0</td>
<td>226.0</td>
<td>43.0</td>
<td>23.0</td>
<td>29.0</td>
<td>34.0</td>
<td>34.0</td>
<td>68.0</td>
<td>76.0</td>
<td>55.0</td>
<td>...</td>
<td>89.0</td>
<td>52.0</td>
<td>28.0</td>
<td>47.0</td>
<td>60.0</td>
<td>50.0</td>
<td>94.0</td>
<td>53.0</td>
<td>85.0</td>
<td>79.0</td>
</tr>
<tr class="odd">
<th data-quarto-table-cell-role="th">2023-11-30</th>
<td>42.0</td>
<td>221.0</td>
<td>45.0</td>
<td>26.0</td>
<td>30.0</td>
<td>32.0</td>
<td>33.0</td>
<td>71.0</td>
<td>72.0</td>
<td>53.0</td>
<td>...</td>
<td>68.0</td>
<td>76.0</td>
<td>31.0</td>
<td>35.0</td>
<td>74.0</td>
<td>54.0</td>
<td>80.0</td>
<td>63.0</td>
<td>55.0</td>
<td>65.0</td>
</tr>
<tr class="even">
<th data-quarto-table-cell-role="th">2023-12-31</th>
<td>37.0</td>
<td>205.0</td>
<td>52.0</td>
<td>27.0</td>
<td>40.0</td>
<td>24.0</td>
<td>37.0</td>
<td>59.0</td>
<td>86.0</td>
<td>71.0</td>
<td>...</td>
<td>59.0</td>
<td>66.0</td>
<td>24.0</td>
<td>42.0</td>
<td>58.0</td>
<td>48.0</td>
<td>61.0</td>
<td>67.0</td>
<td>89.0</td>
<td>72.0</td>
</tr>
<tr class="odd">
<th data-quarto-table-cell-role="th">2024-01-31</th>
<td>34.0</td>
<td>143.0</td>
<td>74.0</td>
<td>24.0</td>
<td>34.0</td>
<td>18.0</td>
<td>29.0</td>
<td>74.0</td>
<td>64.0</td>
<td>51.0</td>
<td>...</td>
<td>74.0</td>
<td>47.0</td>
<td>16.0</td>
<td>48.0</td>
<td>50.0</td>
<td>49.0</td>
<td>67.0</td>
<td>65.0</td>
<td>72.0</td>
<td>82.0</td>
</tr>
<tr class="even">
<th data-quarto-table-cell-role="th">2024-02-29</th>
<td>30.0</td>
<td>132.0</td>
<td>45.0</td>
<td>20.0</td>
<td>25.0</td>
<td>31.0</td>
<td>25.0</td>
<td>51.0</td>
<td>54.0</td>
<td>48.0</td>
<td>...</td>
<td>71.0</td>
<td>49.0</td>
<td>15.0</td>
<td>35.0</td>
<td>43.0</td>
<td>38.0</td>
<td>58.0</td>
<td>72.0</td>
<td>65.0</td>
<td>65.0</td>
</tr>
<tr class="odd">
<th data-quarto-table-cell-role="th">2024-03-31</th>
<td>31.0</td>
<td>106.0</td>
<td>56.0</td>
<td>23.0</td>
<td>26.0</td>
<td>25.0</td>
<td>24.0</td>
<td>41.0</td>
<td>62.0</td>
<td>47.0</td>
<td>...</td>
<td>57.0</td>
<td>47.0</td>
<td>16.0</td>
<td>40.0</td>
<td>61.0</td>
<td>61.0</td>
<td>49.0</td>
<td>61.0</td>
<td>75.0</td>
<td>85.0</td>
</tr>
<tr class="even">
<th data-quarto-table-cell-role="th">2024-04-30</th>
<td>20.0</td>
<td>88.0</td>
<td>52.0</td>
<td>29.0</td>
<td>19.0</td>
<td>31.0</td>
<td>30.0</td>
<td>43.0</td>
<td>37.0</td>
<td>36.0</td>
<td>...</td>
<td>72.0</td>
<td>43.0</td>
<td>19.0</td>
<td>31.0</td>
<td>59.0</td>
<td>45.0</td>
<td>26.0</td>
<td>51.0</td>
<td>40.0</td>
<td>53.0</td>
</tr>
<tr class="odd">
<th data-quarto-table-cell-role="th">2024-05-31</th>
<td>22.0</td>
<td>87.0</td>
<td>29.0</td>
<td>23.0</td>
<td>21.0</td>
<td>27.0</td>
<td>21.0</td>
<td>38.0</td>
<td>44.0</td>
<td>46.0</td>
<td>...</td>
<td>31.0</td>
<td>18.0</td>
<td>8.0</td>
<td>32.0</td>
<td>26.0</td>
<td>30.0</td>
<td>25.0</td>
<td>30.0</td>
<td>37.0</td>
<td>40.0</td>
</tr>
<tr class="even">
<th data-quarto-table-cell-role="th">2024-06-30</th>
<td>21.0</td>
<td>104.0</td>
<td>27.0</td>
<td>19.0</td>
<td>18.0</td>
<td>21.0</td>
<td>21.0</td>
<td>33.0</td>
<td>34.0</td>
<td>27.0</td>
<td>...</td>
<td>53.0</td>
<td>26.0</td>
<td>12.0</td>
<td>20.0</td>
<td>37.0</td>
<td>16.0</td>
<td>25.0</td>
<td>23.0</td>
<td>33.0</td>
<td>47.0</td>
</tr>
<tr class="odd">
<th data-quarto-table-cell-role="th">2024-07-31</th>
<td>11.0</td>
<td>103.0</td>
<td>22.0</td>
<td>11.0</td>
<td>13.0</td>
<td>20.0</td>
<td>13.0</td>
<td>38.0</td>
<td>22.0</td>
<td>45.0</td>
<td>...</td>
<td>48.0</td>
<td>30.0</td>
<td>14.0</td>
<td>22.0</td>
<td>21.0</td>
<td>16.0</td>
<td>43.0</td>
<td>23.0</td>
<td>49.0</td>
<td>40.0</td>
</tr>
<tr class="even">
<th data-quarto-table-cell-role="th">2024-08-31</th>
<td>22.0</td>
<td>125.0</td>
<td>25.0</td>
<td>15.0</td>
<td>21.0</td>
<td>14.0</td>
<td>26.0</td>
<td>28.0</td>
<td>38.0</td>
<td>38.0</td>
<td>...</td>
<td>49.0</td>
<td>34.0</td>
<td>7.0</td>
<td>27.0</td>
<td>28.0</td>
<td>13.0</td>
<td>22.0</td>
<td>22.0</td>
<td>39.0</td>
<td>59.0</td>
</tr>
<tr class="odd">
<th data-quarto-table-cell-role="th">2024-09-30</th>
<td>26.0</td>
<td>121.0</td>
<td>20.0</td>
<td>17.0</td>
<td>20.0</td>
<td>18.0</td>
<td>22.0</td>
<td>31.0</td>
<td>25.0</td>
<td>34.0</td>
<td>...</td>
<td>53.0</td>
<td>37.0</td>
<td>5.0</td>
<td>23.0</td>
<td>24.0</td>
<td>21.0</td>
<td>37.0</td>
<td>23.0</td>
<td>29.0</td>
<td>46.0</td>
</tr>
<tr class="even">
<th data-quarto-table-cell-role="th">2024-10-31</th>
<td>16.0</td>
<td>145.0</td>
<td>33.0</td>
<td>15.0</td>
<td>10.0</td>
<td>11.0</td>
<td>26.0</td>
<td>35.0</td>
<td>23.0</td>
<td>42.0</td>
<td>...</td>
<td>38.0</td>
<td>36.0</td>
<td>10.0</td>
<td>22.0</td>
<td>16.0</td>
<td>28.0</td>
<td>29.0</td>
<td>31.0</td>
<td>33.0</td>
<td>45.0</td>
</tr>
<tr class="odd">
<th data-quarto-table-cell-role="th">2024-11-30</th>
<td>15.0</td>
<td>152.0</td>
<td>15.0</td>
<td>7.0</td>
<td>20.0</td>
<td>7.0</td>
<td>17.0</td>
<td>37.0</td>
<td>29.0</td>
<td>52.0</td>
<td>...</td>
<td>54.0</td>
<td>65.0</td>
<td>9.0</td>
<td>21.0</td>
<td>22.0</td>
<td>21.0</td>
<td>28.0</td>
<td>38.0</td>
<td>38.0</td>
<td>42.0</td>
</tr>
<tr class="even">
<th data-quarto-table-cell-role="th">2024-12-31</th>
<td>16.0</td>
<td>145.0</td>
<td>19.0</td>
<td>5.0</td>
<td>35.0</td>
<td>14.0</td>
<td>15.0</td>
<td>35.0</td>
<td>26.0</td>
<td>26.0</td>
<td>...</td>
<td>31.0</td>
<td>43.0</td>
<td>11.0</td>
<td>24.0</td>
<td>19.0</td>
<td>21.0</td>
<td>11.0</td>
<td>23.0</td>
<td>32.0</td>
<td>33.0</td>
</tr>
</tbody>
</table>

<p>60 rows × 21 columns</p>
</div>
</div>
</div>
<p>And here’s the Polars version, which I’ll store in a variable called <em>to_plot</em> to use later.</p>
<div id="471f19a4" class="cell" data-execution_count="34">
<div class="code-copy-outer-scaffold"><div class="sourceCode cell-code" id="annotated-cell-34" data-llms-code-original="to_plot = (data
 .with_columns(pl.col('Date Rptd', 'DATE OCC').str.strptime(pl.Datetime, '%m/%d/%Y %I:%M:%S %p'))
 .sort('DATE OCC')
 .group_by_dynamic('DATE OCC', every='1mo', group_by=['AREA NAME', 'Crm Cd Desc'])
 .agg(pl.len())
 .filter(pl.col('Crm Cd Desc') =='BURGLARY FROM VEHICLE')
 .select(pl.exclude('Crm Cd Desc'))
 .pivot(on='AREA NAME', index='DATE OCC', values='len')
 .select(pl.all().exclude('Hollywood'), 'Hollywood') # <1>
)
to_plot" style="background: #f1f3f5;"><pre class="sourceCode python code-annotation-code code-with-copy code-annotated"><code class="sourceCode python"><span id="annotated-cell-34-1">to_plot <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span> (data</span>
<span id="annotated-cell-34-2"> .with_columns(pl.col(<span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">'Date Rptd'</span>, <span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">'DATE OCC'</span>).<span class="bu" style="color: null;
background-color: null;
font-style: inherit;">str</span>.strptime(pl.Datetime, <span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">'%m/</span><span class="sc" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">%d</span><span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">/%Y %I:%M:%S %p'</span>))</span>
<span id="annotated-cell-34-3"> .sort(<span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">'DATE OCC'</span>)</span>
<span id="annotated-cell-34-4"> .group_by_dynamic(<span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">'DATE OCC'</span>, every<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span><span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">'1mo'</span>, group_by<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span>[<span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">'AREA NAME'</span>, <span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">'Crm Cd Desc'</span>])</span>
<span id="annotated-cell-34-5"> .agg(pl.<span class="bu" style="color: null;
background-color: null;
font-style: inherit;">len</span>())</span>
<span id="annotated-cell-34-6"> .<span class="bu" style="color: null;
background-color: null;
font-style: inherit;">filter</span>(pl.col(<span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">'Crm Cd Desc'</span>) <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">==</span><span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">'BURGLARY FROM VEHICLE'</span>)</span>
<span id="annotated-cell-34-7"> .select(pl.exclude(<span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">'Crm Cd Desc'</span>))</span>
<span id="annotated-cell-34-8"> .pivot(on<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span><span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">'AREA NAME'</span>, index<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span><span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">'DATE OCC'</span>, values<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span><span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">'len'</span>)</span>
<a class="code-annotation-anchor" data-target-cell="annotated-cell-34" data-target-annotation="1" onclick="event.preventDefault();">1</a><span id="annotated-cell-34-9" class="code-annotation-target"> .select(pl.<span class="bu" style="color: null;
background-color: null;
font-style: inherit;">all</span>().exclude(<span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">'Hollywood'</span>), <span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">'Hollywood'</span>)</span>
<span id="annotated-cell-34-10">)</span>
<span id="annotated-cell-34-11">to_plot</span><div class="code-annotation-gutter-bg"></div><div class="code-annotation-gutter"></div></code></pre></div></div>
<div class="cell-annotation">
<dl class="code-annotation-container-grid">
<dt data-target-cell="annotated-cell-34" data-target-annotation="1">1</dt>
<dd>
<span data-code-cell="annotated-cell-34" data-code-lines="9" data-code-annotation="1">Move the <em>Hollywood</em> column to the end of the dataframe.</span>
</dd>
</dl>
</div>
<div class="cell-output cell-output-display" data-execution_count="34">
<div><style>
.dataframe > thead > tr,
.dataframe > tbody > tr {
  text-align: right;
  white-space: pre-wrap;
}
</style>
<small>shape: (60, 22)</small>
<table class="dataframe caption-top table table-sm table-striped small" data-border="1">
<thead>
<tr class="header">
<th data-quarto-table-cell-role="th">DATE OCC</th>
<th data-quarto-table-cell-role="th">Harbor</th>
<th data-quarto-table-cell-role="th">Newton</th>
<th data-quarto-table-cell-role="th">Central</th>
<th data-quarto-table-cell-role="th">Mission</th>
<th data-quarto-table-cell-role="th">Olympic</th>
<th data-quarto-table-cell-role="th">Pacific</th>
<th data-quarto-table-cell-role="th">Rampart</th>
<th data-quarto-table-cell-role="th">Topanga</th>
<th data-quarto-table-cell-role="th">West LA</th>
<th data-quarto-table-cell-role="th">Foothill</th>
<th data-quarto-table-cell-role="th">Van Nuys</th>
<th data-quarto-table-cell-role="th">Wilshire</th>
<th data-quarto-table-cell-role="th">Northeast</th>
<th data-quarto-table-cell-role="th">Southeast</th>
<th data-quarto-table-cell-role="th">Southwest</th>
<th data-quarto-table-cell-role="th">Devonshire</th>
<th data-quarto-table-cell-role="th">Hollenbeck</th>
<th data-quarto-table-cell-role="th">77th Street</th>
<th data-quarto-table-cell-role="th">N Hollywood</th>
<th data-quarto-table-cell-role="th">West Valley</th>
<th data-quarto-table-cell-role="th">Hollywood</th>
</tr>
<tr class="even">
<td>datetime[μs]</td>
<td>u32</td>
<td>u32</td>
<td>u32</td>
<td>u32</td>
<td>u32</td>
<td>u32</td>
<td>u32</td>
<td>u32</td>
<td>u32</td>
<td>u32</td>
<td>u32</td>
<td>u32</td>
<td>u32</td>
<td>u32</td>
<td>u32</td>
<td>u32</td>
<td>u32</td>
<td>u32</td>
<td>u32</td>
<td>u32</td>
<td>u32</td>
</tr>
</thead>
<tbody>
<tr class="odd">
<td>2020-01-01 00:00:00</td>
<td>29</td>
<td>72</td>
<td>144</td>
<td>53</td>
<td>77</td>
<td>70</td>
<td>72</td>
<td>57</td>
<td>83</td>
<td>37</td>
<td>59</td>
<td>78</td>
<td>80</td>
<td>42</td>
<td>53</td>
<td>67</td>
<td>32</td>
<td>75</td>
<td>108</td>
<td>79</td>
<td>77</td>
</tr>
<tr class="even">
<td>2020-02-01 00:00:00</td>
<td>34</td>
<td>60</td>
<td>148</td>
<td>47</td>
<td>48</td>
<td>73</td>
<td>58</td>
<td>36</td>
<td>62</td>
<td>40</td>
<td>52</td>
<td>79</td>
<td>73</td>
<td>44</td>
<td>41</td>
<td>58</td>
<td>31</td>
<td>45</td>
<td>78</td>
<td>63</td>
<td>65</td>
</tr>
<tr class="odd">
<td>2020-03-01 00:00:00</td>
<td>38</td>
<td>37</td>
<td>114</td>
<td>43</td>
<td>42</td>
<td>85</td>
<td>37</td>
<td>44</td>
<td>55</td>
<td>41</td>
<td>60</td>
<td>52</td>
<td>74</td>
<td>38</td>
<td>46</td>
<td>52</td>
<td>40</td>
<td>55</td>
<td>64</td>
<td>34</td>
<td>69</td>
</tr>
<tr class="even">
<td>2020-04-01 00:00:00</td>
<td>53</td>
<td>51</td>
<td>96</td>
<td>30</td>
<td>57</td>
<td>80</td>
<td>62</td>
<td>34</td>
<td>69</td>
<td>28</td>
<td>64</td>
<td>52</td>
<td>74</td>
<td>30</td>
<td>60</td>
<td>56</td>
<td>24</td>
<td>61</td>
<td>78</td>
<td>45</td>
<td>47</td>
</tr>
<tr class="odd">
<td>2020-05-01 00:00:00</td>
<td>39</td>
<td>44</td>
<td>78</td>
<td>40</td>
<td>56</td>
<td>66</td>
<td>60</td>
<td>51</td>
<td>67</td>
<td>40</td>
<td>60</td>
<td>49</td>
<td>58</td>
<td>31</td>
<td>33</td>
<td>46</td>
<td>23</td>
<td>41</td>
<td>77</td>
<td>34</td>
<td>56</td>
</tr>
<tr class="even">
<td>…</td>
<td>…</td>
<td>…</td>
<td>…</td>
<td>…</td>
<td>…</td>
<td>…</td>
<td>…</td>
<td>…</td>
<td>…</td>
<td>…</td>
<td>…</td>
<td>…</td>
<td>…</td>
<td>…</td>
<td>…</td>
<td>…</td>
<td>…</td>
<td>…</td>
<td>…</td>
<td>…</td>
<td>…</td>
</tr>
<tr class="odd">
<td>2024-08-01 00:00:00</td>
<td>21</td>
<td>38</td>
<td>125</td>
<td>26</td>
<td>29</td>
<td>49</td>
<td>34</td>
<td>28</td>
<td>22</td>
<td>15</td>
<td>13</td>
<td>39</td>
<td>38</td>
<td>7</td>
<td>27</td>
<td>25</td>
<td>14</td>
<td>22</td>
<td>28</td>
<td>22</td>
<td>59</td>
</tr>
<tr class="even">
<td>2024-09-01 00:00:00</td>
<td>20</td>
<td>25</td>
<td>121</td>
<td>22</td>
<td>38</td>
<td>53</td>
<td>37</td>
<td>24</td>
<td>37</td>
<td>17</td>
<td>21</td>
<td>29</td>
<td>34</td>
<td>5</td>
<td>23</td>
<td>20</td>
<td>18</td>
<td>26</td>
<td>31</td>
<td>23</td>
<td>46</td>
</tr>
<tr class="odd">
<td>2024-10-01 00:00:00</td>
<td>10</td>
<td>23</td>
<td>145</td>
<td>26</td>
<td>40</td>
<td>38</td>
<td>36</td>
<td>16</td>
<td>29</td>
<td>15</td>
<td>28</td>
<td>33</td>
<td>42</td>
<td>10</td>
<td>22</td>
<td>33</td>
<td>11</td>
<td>16</td>
<td>35</td>
<td>31</td>
<td>45</td>
</tr>
<tr class="even">
<td>2024-11-01 00:00:00</td>
<td>20</td>
<td>29</td>
<td>152</td>
<td>17</td>
<td>34</td>
<td>54</td>
<td>65</td>
<td>22</td>
<td>28</td>
<td>7</td>
<td>21</td>
<td>38</td>
<td>52</td>
<td>9</td>
<td>21</td>
<td>15</td>
<td>7</td>
<td>15</td>
<td>37</td>
<td>38</td>
<td>42</td>
</tr>
<tr class="odd">
<td>2024-12-01 00:00:00</td>
<td>35</td>
<td>26</td>
<td>145</td>
<td>15</td>
<td>36</td>
<td>31</td>
<td>43</td>
<td>19</td>
<td>11</td>
<td>5</td>
<td>21</td>
<td>32</td>
<td>26</td>
<td>11</td>
<td>24</td>
<td>19</td>
<td>14</td>
<td>16</td>
<td>35</td>
<td>23</td>
<td>33</td>
</tr>
</tbody>
</table>
</div>
</div>
</div>
</section>
<section id="creating-the-charts" class="level2">
<h2 data-anchor-id="creating-the-charts">Creating the charts</h2>
<p><strong>With pandas’ built-in plot</strong></p>
<p>It turns out that pandas has built-in plotting capabilities, so we do not have to import a charting library.</p>
<div id="2b58667b" class="cell" data-execution_count="35">
<div class="code-copy-outer-scaffold"><div class="sourceCode cell-code" id="cb40" style="background: #f1f3f5;"><pre class="sourceCode python code-with-copy"><code class="sourceCode python"><span id="cb40-1"><span class="kw" style="color: #003B4F;
background-color: null;
font-weight: bold;
font-style: inherit;">def</span> set_colors(df):</span>
<span id="cb40-2">    <span class="kw" style="color: #003B4F;
background-color: null;
font-weight: bold;
font-style: inherit;">global</span> colors</span>
<span id="cb40-3">    colors <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span> [<span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">'#991111'</span> <span class="cf" style="color: #003B4F;
background-color: null;
font-weight: bold;
font-style: inherit;">if</span> col <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">==</span> <span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">'Hollywood'</span> <span class="cf" style="color: #003B4F;
background-color: null;
font-weight: bold;
font-style: inherit;">else</span> <span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">'#999999'</span> <span class="cf" style="color: #003B4F;
background-color: null;
font-weight: bold;
font-style: inherit;">for</span> col <span class="kw" style="color: #003B4F;
background-color: null;
font-weight: bold;
font-style: inherit;">in</span> df.columns]</span>
<span id="cb40-4">    <span class="cf" style="color: #003B4F;
background-color: null;
font-weight: bold;
font-style: inherit;">return</span> df</span>
<span id="cb40-5"></span>
<span id="cb40-6">ax <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span> (df</span>
<span id="cb40-7"> .astype({<span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">'Date Rptd'</span>: <span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">'datetime64[ns]'</span>,</span>
<span id="cb40-8">          <span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">'DATE OCC'</span>: <span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">'datetime64[ns]'</span>,</span>
<span id="cb40-9">          })</span>
<span id="cb40-10"> .groupby([pd.Grouper(key<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span><span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">'DATE OCC'</span>, freq<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span><span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">'ME'</span>), <span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">'AREA NAME'</span>, <span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">'Crm Cd Desc'</span>])</span>
<span id="cb40-11"> .size()</span>
<span id="cb40-12"> .unstack()</span>
<span id="cb40-13"> .loc[:, <span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">'BURGLARY FROM VEHICLE'</span>]</span>
<span id="cb40-14"> .unstack()</span>
<span id="cb40-15"> .loc[:, <span class="kw" style="color: #003B4F;
background-color: null;
font-weight: bold;
font-style: inherit;">lambda</span> adf: <span class="bu" style="color: null;
background-color: null;
font-style: inherit;">sorted</span>(adf.columns, key<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span><span class="kw" style="color: #003B4F;
background-color: null;
font-weight: bold;
font-style: inherit;">lambda</span> col: <span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">1</span> <span class="cf" style="color: #003B4F;
background-color: null;
font-weight: bold;
font-style: inherit;">if</span> col <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">==</span> <span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">'Hollywood'</span> <span class="cf" style="color: #003B4F;
background-color: null;
font-weight: bold;
font-style: inherit;">else</span> <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">-</span><span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">1</span>)]</span>
<span id="cb40-16"> .pipe(set_colors)</span>
<span id="cb40-17"> .plot(color<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span>colors, title<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span><span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">'BURGLARY FROM VEHICLE in LA'</span>, figsize<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span>(<span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">10</span>,<span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">6</span>))</span>
<span id="cb40-18">)</span>
<span id="cb40-19">ax.legend(bbox_to_anchor<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span>(<span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">1</span>,<span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">1</span>), ncol<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span><span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">2</span>)<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">;</span></span></code></pre></div></div>
<div class="cell-output cell-output-display">
<div>
<figure class="figure">
<p><img src="https://www.conterval.com/blog/select-subsets-of-rows-and-columns-pandas-polars/index_files/figure-html/cell-36-output-1.png" width="1077" height="523" class="figure-img"></p>
</figure>
</div>
</div>
</div>
<p><strong>With hvplot</strong></p>
<p>HvPlot is one of the few charting libraries that does not require converting the data into a pandas dataframe or a Python list to create charts.</p>
<div id="a7b15c16" class="cell" data-execution_count="36">
<div class="code-copy-outer-scaffold"><div class="sourceCode cell-code" id="cb41" style="background: #f1f3f5;"><pre class="sourceCode python code-with-copy"><code class="sourceCode python"><span id="cb41-1"><span class="im" style="color: #00769E;
background-color: null;
font-style: inherit;">import</span> hvplot.polars</span>
<span id="cb41-2"></span>
<span id="cb41-3">(to_plot</span>
<span id="cb41-4"> .pipe(<span class="kw" style="color: #003B4F;
background-color: null;
font-weight: bold;
font-style: inherit;">lambda</span> df_: df_.hvplot.line(</span>
<span id="cb41-5">       x<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span><span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">'DATE OCC'</span>,</span>
<span id="cb41-6">       y<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span>(cols <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">:=</span> [c <span class="cf" style="color: #003B4F;
background-color: null;
font-weight: bold;
font-style: inherit;">for</span> c <span class="kw" style="color: #003B4F;
background-color: null;
font-weight: bold;
font-style: inherit;">in</span> df_.columns[<span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">1</span>:] <span class="cf" style="color: #003B4F;
background-color: null;
font-weight: bold;
font-style: inherit;">if</span> c <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">!=</span> <span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">'Hollywood'</span>] <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">+</span> [<span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">'Hollywood'</span>]),</span>
<span id="cb41-7">       color<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span>[<span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">'#999999'</span>] <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">*</span> (<span class="bu" style="color: null;
background-color: null;
font-style: inherit;">len</span>(cols) <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">-</span> <span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">1</span>) <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">+</span> [<span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">'#991111'</span>],</span>
<span id="cb41-8">       title<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span><span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">'BURGLARY FROM VEHICLE in LA'</span>,</span>
<span id="cb41-9">       legend_opts<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span>{<span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">'title'</span>:<span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">'Neighborhood'</span>},</span>
<span id="cb41-10">       legend<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span><span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">'top_left'</span>, legend_cols<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span><span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">3</span>, height<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span><span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">575</span>, width<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span><span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">900</span>))</span>
<span id="cb41-11">)</span></code></pre></div></div>
<div class="cell-output cell-output-display">
<script type="esms-options">{"shimMode": true}</script><style>*[data-root-id],
*[data-root-id] > * {
  box-sizing: border-box;
  font-family: var(--jp-ui-font-family);
  font-size: var(--jp-ui-font-size1);
  color: var(--vscode-editor-foreground, var(--jp-ui-font-color1));
}

/* Override VSCode background color */
.cell-output-ipywidget-background:has(
  > .cell-output-ipywidget-background > .lm-Widget > *[data-root-id]
),
.cell-output-ipywidget-background:has(> .lm-Widget > *[data-root-id]) {
  background-color: transparent !important;
}
</style>
</div>
<div class="cell-output cell-output-display">
<script type="application/javascript">
(function(root) {
  function now() {
    return new Date();
  }

  const force = true;
  const version = '3.9.1'.replace('rc', '-rc.').replace('.dev', '-dev.');
  const reloading = false;
  const Bokeh = root.Bokeh;
  const BK_RE = /^https:\/\/cdn\.bokeh\.org\/bokeh\/(release|dev)\/bokeh-/;
  const PN_RE = /^https:\/\/cdn\.holoviz\.org\/panel\/[^/]+\/dist\/panel/i;

  // Set a timeout for this load but only if we are not already initializing
  if (typeof (root._bokeh_timeout) === "undefined" || (force || !root._bokeh_is_initializing)) {
    root._bokeh_timeout = Date.now() + 5000;
    root._bokeh_failed_load = false;
  }

  function run_callbacks() {
    try {
      root._bokeh_onload_callbacks.forEach(function(callback) {
        if (callback != null)
          callback();
      });
    } finally {
      delete root._bokeh_onload_callbacks;
    }
    console.debug("Bokeh: all callbacks have finished");
  }

  function load_libs(css_urls, js_urls, js_modules, js_exports, Bokeh, callback) {
    if (css_urls == null) css_urls = [];
    if (js_urls == null) js_urls = [];
    if (js_modules == null) js_modules = [];
    if (js_exports == null) js_exports = {};

    root._bokeh_onload_callbacks.push(callback);

    if (root._bokeh_is_loading > 0) {
      // Don't load bokeh if it is still initializing
      console.debug("Bokeh: BokehJS is being loaded, scheduling callback at", now());
      return null;
    } else if (js_urls.length === 0 && js_modules.length === 0 && Object.keys(js_exports).length === 0) {
      // There is nothing to load
      run_callbacks();
      return null;
    }

    function on_load() {
      root._bokeh_is_loading--;
      if (root._bokeh_is_loading === 0) {
        console.debug("Bokeh: all BokehJS libraries/stylesheets loaded");
        run_callbacks()
      }
    }
    window._bokeh_on_load = on_load

    function on_error(e) {
      const src_el = e.srcElement
      console.error("failed to load " + (src_el.href || src_el.src));
    }

    const skip = [];
    if (window.requirejs) {
      window.requirejs.config({'packages': {}, 'paths': {}, 'shim': {}});
      root._bokeh_is_loading = css_urls.length + 0;
    } else {
      root._bokeh_is_loading = css_urls.length + js_urls.length + js_modules.length + Object.keys(js_exports).length;
    }

    const existing_stylesheets = []
    const links = document.getElementsByTagName('link')
    for (let i = 0; i < links.length; i++) {
      const link = links[i]
      if (link.href != null) {
        existing_stylesheets.push(link.href)
      }
    }
    for (let i = 0; i < css_urls.length; i++) {
      const url = css_urls[i];
      const escaped = encodeURI(url)
      if (existing_stylesheets.indexOf(escaped) !== -1) {
        on_load()
        continue;
      }
      const element = document.createElement("link");
      element.onload = on_load;
      element.onerror = on_error;
      element.rel = "stylesheet";
      element.type = "text/css";
      element.href = url;
      console.debug("Bokeh: injecting link tag for BokehJS stylesheet: ", url);
      document.body.appendChild(element);
    }    var existing_scripts = []
    const scripts = document.getElementsByTagName('script')
    for (let i = 0; i < scripts.length; i++) {
      var script = scripts[i]
      if (script.src != null) {
        existing_scripts.push(script.src)
      }
    }
    for (let i = 0; i < js_urls.length; i++) {
      const url = js_urls[i];
      const escaped = encodeURI(url)
      const shouldSkip = skip.includes(escaped) || existing_scripts.includes(escaped)
      const isBokehOrPanel = BK_RE.test(escaped) || PN_RE.test(escaped)
      const missingOrBroken = Bokeh == null || Bokeh.Panel == null || (Bokeh.version != version && !Bokeh.versions?.has(version)) || Bokeh.versions?.get(version)?.Panel == null;
      if (shouldSkip && !(isBokehOrPanel && missingOrBroken)) {
        if (!window.requirejs) {
          on_load();
        }
        continue;
      }
      const element = document.createElement('script');
      element.onload = on_load;
      element.onerror = on_error;
      element.async = false;
      element.src = url;
      console.debug("Bokeh: injecting script tag for BokehJS library: ", url);
      document.head.appendChild(element);
    }
    for (let i = 0; i < js_modules.length; i++) {
      const url = js_modules[i];
      const escaped = encodeURI(url)
      if (skip.indexOf(escaped) !== -1 || existing_scripts.indexOf(escaped) !== -1) {
        if (!window.requirejs) {
          on_load();
        }
        continue;
      }
      var element = document.createElement('script');
      element.onload = on_load;
      element.onerror = on_error;
      element.async = false;
      element.src = url;
      element.type = "module";
      console.debug("Bokeh: injecting script tag for BokehJS library: ", url);
      document.head.appendChild(element);
    }
    for (const name in js_exports) {
      const url = js_exports[name];
      const escaped = encodeURI(url)
      if (skip.indexOf(escaped) >= 0 || root[name] != null) {
        if (!window.requirejs) {
          on_load();
        }
        continue;
      }
      var element = document.createElement('script');
      element.onerror = on_error;
      element.async = false;
      element.type = "module";
      console.debug("Bokeh: injecting script tag for BokehJS library: ", url);
      element.textContent = `
      import ${name} from "${url}"
      window.${name} = ${name}
      window._bokeh_on_load()
      `
      document.head.appendChild(element);
    }
    if (!js_urls.length && !js_modules.length) {
      on_load()
    }
  };

  function inject_raw_css(css) {
    const element = document.createElement("style");
    element.appendChild(document.createTextNode(css));
    document.body.appendChild(element);
  }

  const js_urls = ["https://cdn.holoviz.org/panel/1.9.3/dist/bundled/reactiveesm/es-module-shims@^1.10.0/dist/es-module-shims.min.js", "https://cdn.bokeh.org/bokeh/release/bokeh-3.9.1.min.js", "https://cdn.bokeh.org/bokeh/release/bokeh-gl-3.9.1.min.js", "https://cdn.bokeh.org/bokeh/release/bokeh-widgets-3.9.1.min.js", "https://cdn.bokeh.org/bokeh/release/bokeh-tables-3.9.1.min.js", "https://cdn.holoviz.org/panel/1.9.3/dist/panel.min.js"];
  const js_modules = [];
  const js_exports = {};
  const css_urls = [];
  const inline_js = [    function(Bokeh) {
      Bokeh.set_log_level("info");
    },
function(Bokeh) {} // ensure no trailing comma for IE
  ];

  function run_inline_js() {
    if ((root.Bokeh !== undefined) || (force === true)) {
      for (let i = 0; i < inline_js.length; i++) {
        try {
          inline_js[i].call(root, root.Bokeh);
        } catch(e) {
          if (!reloading) {
            throw e;
          }
        }
      }
    } else if (Date.now() < root._bokeh_timeout) {
      setTimeout(run_inline_js, 100);
    } else if (!root._bokeh_failed_load) {
      console.log("Bokeh: BokehJS failed to load within specified timeout.");
      root._bokeh_failed_load = true;
    }
    root._bokeh_is_initializing = false;
  }

  function load_or_wait() {
    // Implement a backoff loop that tries to ensure we do not load multiple
    // versions of Bokeh and its dependencies at the same time.
    // In recent versions we use the root._bokeh_is_initializing flag
    // to determine whether there is an ongoing attempt to initialize
    // bokeh, however for backward compatibility we also try to ensure
    // that we do not start loading a newer (Panel>=1.0 and Bokeh>3) version
    // before older versions are fully initialized.
    if (root._bokeh_is_initializing && Date.now() > root._bokeh_timeout) {
      // If the timeout and bokeh was not successfully loaded we reset
      // everything and try loading again
      root._bokeh_timeout = Date.now() + 5000;
      root._bokeh_is_initializing = false;
      root._bokeh_onload_callbacks = undefined;
      root._bokeh_is_loading = 0;
      console.log("Bokeh: BokehJS was loaded multiple times but one version failed to initialize.");
      load_or_wait();
    } else if (root._bokeh_is_initializing || (typeof root._bokeh_is_initializing === "undefined" && root._bokeh_onload_callbacks !== undefined)) {
      setTimeout(load_or_wait, 100);
    } else {
      root._bokeh_is_initializing = true;
      root._bokeh_onload_callbacks = [];
      const bokeh_loaded = Bokeh != null && ((Bokeh.version === version && Bokeh.Panel) || (Bokeh.versions?.has(version) && Bokeh.versions.get(version)?.Panel));
      if (!reloading && !bokeh_loaded) {
        if (root.Bokeh) {
          root.Bokeh = undefined;
        }
        console.debug("Bokeh: BokehJS not loaded, scheduling load and callback at", now());
      }
      load_libs(css_urls, js_urls, js_modules, js_exports, Bokeh, function() {
        console.debug("Bokeh: BokehJS plotting callback run at", now());
        run_inline_js();
        if (Bokeh != undefined && !reloading) {
          const NewBokeh = root.Bokeh;
          if (Bokeh.versions === undefined) {
            Bokeh.versions = new Map();
          }
          if (NewBokeh.version !== Bokeh.version) {
            Bokeh[NewBokeh.version] = NewBokeh;
            Bokeh.versions.set(NewBokeh.version, NewBokeh);
          }
          root.Bokeh = Bokeh;
        }
      });
    }
  }
  // Give older versions of the autoload script a head-start to ensure
  // they initialize before we start loading newer version.
  setTimeout(load_or_wait, 100)
}(window));
</script>
</div>
<div class="cell-output cell-output-display">
<script type="application/javascript">

if ((window.PyViz === undefined) || (window.PyViz instanceof HTMLElement)) {
  window.PyViz = {comms: {}, comm_status:{}, kernels:{}, receivers: {}, plot_index: []}
}


    function JupyterCommManager() {
    }

    JupyterCommManager.prototype.register_target = function(plot_id, comm_id, msg_handler) {
      if (window.comm_manager || ((window.Jupyter !== undefined) && (Jupyter.notebook.kernel != null))) {
        var comm_manager = window.comm_manager || Jupyter.notebook.kernel.comm_manager;
        comm_manager.register_target(comm_id, function(comm) {
          comm.on_msg(msg_handler);
        });
      } else if ((plot_id in window.PyViz.kernels) && (window.PyViz.kernels[plot_id])) {
        window.PyViz.kernels[plot_id].registerCommTarget(comm_id, function(comm) {
          comm.onMsg = msg_handler;
        });
      } else if (typeof google != 'undefined' && google.colab.kernel != null) {
        google.colab.kernel.comms.registerTarget(comm_id, (comm) => {
          var messages = comm.messages[Symbol.asyncIterator]();
          function processIteratorResult(result) {
            var message = result.value;
            var content = {data: message.data, comm_id};
            var buffers = []
            for (var buffer of message.buffers || []) {
              buffers.push(new DataView(buffer))
            }
            var metadata = message.metadata || {};
            var msg = {content, buffers, metadata}
            msg_handler(msg);
            return messages.next().then(processIteratorResult);
          }
          return messages.next().then(processIteratorResult);
        })
      }
    }

    JupyterCommManager.prototype.get_client_comm = function(plot_id, comm_id, msg_handler) {
      if (comm_id in window.PyViz.comms) {
        return window.PyViz.comms[comm_id];
      } else if (window.comm_manager || ((window.Jupyter !== undefined) && (Jupyter.notebook.kernel != null))) {
        var comm_manager = window.comm_manager || Jupyter.notebook.kernel.comm_manager;
        var comm = comm_manager.new_comm(comm_id, {}, {}, {}, comm_id);
        if (msg_handler) {
          comm.on_msg(msg_handler);
        }
      } else if ((plot_id in window.PyViz.kernels) && (window.PyViz.kernels[plot_id])) {
        var comm = window.PyViz.kernels[plot_id].connectToComm(comm_id);
        let retries = 0;
        const open = () => {
          if (comm.active) {
            comm.open();
          } else if (retries > 3) {
            console.warn('Comm target never activated')
          } else {
            retries += 1
            setTimeout(open, 500)
          }
        }
        if (comm.active) {
          comm.open();
        } else {
          setTimeout(open, 500)
        }
        if (msg_handler) {
          comm.onMsg = msg_handler;
        }
      } else if (typeof google != 'undefined' && google.colab.kernel != null) {
        var comm_promise = google.colab.kernel.comms.open(comm_id)
        comm_promise.then((comm) => {
          window.PyViz.comms[comm_id] = comm;
          if (msg_handler) {
            var messages = comm.messages[Symbol.asyncIterator]();
            function processIteratorResult(result) {
              var message = result.value;
              var content = {data: message.data};
              var metadata = message.metadata || {comm_id};
              var msg = {content, metadata}
              msg_handler(msg);
              return messages.next().then(processIteratorResult);
            }
            return messages.next().then(processIteratorResult);
          }
        })
        var sendClosure = (data, metadata, buffers, disposeOnDone) => {
          return comm_promise.then((comm) => {
            comm.send(data, metadata, buffers, disposeOnDone);
          });
        };
        var comm = {
          send: sendClosure
        };
      }
      window.PyViz.comms[comm_id] = comm;
      return comm;
    }
    window.PyViz.comm_manager = new JupyterCommManager();
    


var JS_MIME_TYPE = 'application/javascript';
var HTML_MIME_TYPE = 'text/html';
var EXEC_MIME_TYPE = 'application/vnd.holoviews_exec.v0+json';
var CLASS_NAME = 'output';

/**
 * Render data to the DOM node
 */
function render(props, node) {
  var div = document.createElement("div");
  var script = document.createElement("script");
  node.appendChild(div);
  node.appendChild(script);
}

/**
 * Handle when a new output is added
 */
function handle_add_output(event, handle) {
  var output_area = handle.output_area;
  var output = handle.output;
  if ((output.data == undefined) || (!output.data.hasOwnProperty(EXEC_MIME_TYPE))) {
    return
  }
  var id = output.metadata[EXEC_MIME_TYPE]["id"];
  var toinsert = output_area.element.find("." + CLASS_NAME.split(' ')[0]);
  if (id !== undefined) {
    var nchildren = toinsert.length;
    var html_node = toinsert[nchildren-1].children[0];
    html_node.innerHTML = output.data[HTML_MIME_TYPE];
    var scripts = [];
    var nodelist = html_node.querySelectorAll("script");
    for (var i in nodelist) {
      if (nodelist.hasOwnProperty(i)) {
        scripts.push(nodelist[i])
      }
    }

    scripts.forEach( function (oldScript) {
      var newScript = document.createElement("script");
      var attrs = [];
      var nodemap = oldScript.attributes;
      for (var j in nodemap) {
        if (nodemap.hasOwnProperty(j)) {
          attrs.push(nodemap[j])
        }
      }
      attrs.forEach(function(attr) { newScript.setAttribute(attr.name, attr.value) });
      newScript.appendChild(document.createTextNode(oldScript.innerHTML));
      oldScript.parentNode.replaceChild(newScript, oldScript);
    });
    if (JS_MIME_TYPE in output.data) {
      toinsert[nchildren-1].children[1].textContent = output.data[JS_MIME_TYPE];
    }
    output_area._hv_plot_id = id;
    if ((window.Bokeh !== undefined) && (id in Bokeh.index)) {
      window.PyViz.plot_index[id] = Bokeh.index[id];
    } else {
      window.PyViz.plot_index[id] = null;
    }
  } else if (output.metadata[EXEC_MIME_TYPE]["server_id"] !== undefined) {
    var bk_div = document.createElement("div");
    bk_div.innerHTML = output.data[HTML_MIME_TYPE];
    var script_attrs = bk_div.children[0].attributes;
    for (var i = 0; i < script_attrs.length; i++) {
      toinsert[toinsert.length - 1].childNodes[1].setAttribute(script_attrs[i].name, script_attrs[i].value);
    }
    // store reference to server id on output_area
    output_area._bokeh_server_id = output.metadata[EXEC_MIME_TYPE]["server_id"];
  }
}

/**
 * Handle when an output is cleared or removed
 */
function handle_clear_output(event, handle) {
  var id = handle.cell.output_area._hv_plot_id;
  var server_id = handle.cell.output_area._bokeh_server_id;
  if (((id === undefined) || !(id in PyViz.plot_index)) && (server_id !== undefined)) { return; }
  var comm = window.PyViz.comm_manager.get_client_comm("hv-extension-comm", "hv-extension-comm", function () {});
  if (server_id !== null) {
    comm.send({event_type: 'server_delete', 'id': server_id});
    return;
  } else if (comm !== null) {
    comm.send({event_type: 'delete', 'id': id});
  }
  delete PyViz.plot_index[id];
  if ((window.Bokeh !== undefined) & (id in window.Bokeh.index)) {
    var doc = window.Bokeh.index[id].model.document
    doc.clear();
    const i = window.Bokeh.documents.indexOf(doc);
    if (i > -1) {
      window.Bokeh.documents.splice(i, 1);
    }
  }
}

/**
 * Handle kernel restart event
 */
function handle_kernel_cleanup(event, handle) {
  delete PyViz.comms["hv-extension-comm"];
  window.PyViz.plot_index = {}
}

/**
 * Handle update_display_data messages
 */
function handle_update_output(event, handle) {
  handle_clear_output(event, {cell: {output_area: handle.output_area}})
  handle_add_output(event, handle)
}

function register_renderer(events, OutputArea) {
  function append_mime(data, metadata, element) {
    // create a DOM node to render to
    var toinsert = this.create_output_subarea(
    metadata,
    CLASS_NAME,
    EXEC_MIME_TYPE
    );
    this.keyboard_manager.register_events(toinsert);
    // Render to node
    var props = {data: data, metadata: metadata[EXEC_MIME_TYPE]};
    render(props, toinsert[0]);
    element.append(toinsert);
    return toinsert
  }

  events.on('output_added.OutputArea', handle_add_output);
  events.on('output_updated.OutputArea', handle_update_output);
  events.on('clear_output.CodeCell', handle_clear_output);
  events.on('delete.Cell', handle_clear_output);
  events.on('kernel_ready.Kernel', handle_kernel_cleanup);

  OutputArea.prototype.register_mime_type(EXEC_MIME_TYPE, append_mime, {
    safe: true,
    index: 0
  });
}

if (window.Jupyter !== undefined) {
  try {
    var events = require('base/js/events');
    var OutputArea = require('notebook/js/outputarea').OutputArea;
    if (OutputArea.prototype.mime_types().indexOf(EXEC_MIME_TYPE) == -1) {
      register_renderer(events, OutputArea);
    }
  } catch(err) {
  }
}

</script>
</div>
<div class="cell-output cell-output-display">
<div id="86a4964f-4b5b-4d30-905d-9ad2c2573734">
  <div id="a32c40ed-d188-4ace-a15b-7dd9c22dc237" data-root-id="86a4964f-4b5b-4d30-905d-9ad2c2573734" style="display: contents;"></div>
</div>
<script type="application/javascript">(function(root) {
  var docs_json = {"27c2b695-13e7-4c6a-9e7c-050650982c93":{"version":"3.9.1","title":"Bokeh Application","config":{"type":"object","name":"DocumentConfig","id":"d1bc9086-8276-41e5-b956-7cc7d7f03865","attributes":{"notifications":{"type":"object","name":"Notifications","id":"87dccafe-4f18-4c34-b8d0-94d886c5bb1d"}}},"roots":[{"type":"object","name":"panel.models.browser.BrowserInfo","id":"86a4964f-4b5b-4d30-905d-9ad2c2573734"},{"type":"object","name":"panel.models.comm_manager.CommManager","id":"15e24743-1dd3-44c4-a3c2-f11f49e092d2","attributes":{"plot_id":"86a4964f-4b5b-4d30-905d-9ad2c2573734","comm_id":"dcd91f274d1f45cb98f71f411a22f92a","client_comm_id":"4b0f36ee54cc4c0fb7b3329725d350a6"}}],"defs":[{"type":"model","name":"ReactiveHTML1"},{"type":"model","name":"FlexBox1","properties":[{"name":"align_content","kind":"Any","default":"flex-start"},{"name":"align_items","kind":"Any","default":"flex-start"},{"name":"flex_direction","kind":"Any","default":"row"},{"name":"flex_wrap","kind":"Any","default":"wrap"},{"name":"gap","kind":"Any","default":""},{"name":"justify_content","kind":"Any","default":"flex-start"}]},{"type":"model","name":"FloatPanel1","properties":[{"name":"config","kind":"Any","default":{"type":"map"}},{"name":"contained","kind":"Any","default":true},{"name":"position","kind":"Any","default":"right-top"},{"name":"offsetx","kind":"Any","default":null},{"name":"offsety","kind":"Any","default":null},{"name":"theme","kind":"Any","default":"primary"},{"name":"status","kind":"Any","default":"normalized"}]},{"type":"model","name":"GridStack1","properties":[{"name":"ncols","kind":"Any","default":null},{"name":"nrows","kind":"Any","default":null},{"name":"allow_resize","kind":"Any","default":true},{"name":"allow_drag","kind":"Any","default":true},{"name":"state","kind":"Any","default":[]}]},{"type":"model","name":"drag1","properties":[{"name":"slider_width","kind":"Any","default":5},{"name":"slider_color","kind":"Any","default":"black"},{"name":"start","kind":"Any","default":0},{"name":"end","kind":"Any","default":100},{"name":"value","kind":"Any","default":50}]},{"type":"model","name":"click1","properties":[{"name":"terminal_output","kind":"Any","default":""},{"name":"debug_name","kind":"Any","default":""},{"name":"clears","kind":"Any","default":0}]},{"type":"model","name":"ReactiveESM1","properties":[{"name":"esm_constants","kind":"Any","default":{"type":"map"}}]},{"type":"model","name":"JSComponent1","properties":[{"name":"esm_constants","kind":"Any","default":{"type":"map"}}]},{"type":"model","name":"ReactComponent1","properties":[{"name":"use_shadow_dom","kind":"Any","default":true},{"name":"esm_constants","kind":"Any","default":{"type":"map"}}]},{"type":"model","name":"AnyWidgetComponent1","properties":[{"name":"use_shadow_dom","kind":"Any","default":true},{"name":"esm_constants","kind":"Any","default":{"type":"map"}}]},{"type":"model","name":"FastWrapper1","properties":[{"name":"object","kind":"Any","default":null},{"name":"style","kind":"Any","default":null}]},{"type":"model","name":"NotificationArea1","properties":[{"name":"js_events","kind":"Any","default":{"type":"map"}},{"name":"max_notifications","kind":"Any","default":5},{"name":"notifications","kind":"Any","default":[]},{"name":"position","kind":"Any","default":"bottom-right"},{"name":"_clear","kind":"Any","default":0},{"name":"types","kind":"Any","default":[{"type":"map","entries":[["type","warning"],["background","#ffc107"],["icon",{"type":"map","entries":[["className","fas fa-exclamation-triangle"],["tagName","i"],["color","white"]]}]]},{"type":"map","entries":[["type","info"],["background","#007bff"],["icon",{"type":"map","entries":[["className","fas fa-info-circle"],["tagName","i"],["color","white"]]}]]}]}]},{"type":"model","name":"Notification","properties":[{"name":"background","kind":"Any","default":null},{"name":"duration","kind":"Any","default":3000},{"name":"icon","kind":"Any","default":null},{"name":"message","kind":"Any","default":""},{"name":"notification_type","kind":"Any","default":null},{"name":"_rendered","kind":"Any","default":false},{"name":"_destroyed","kind":"Any","default":false}]},{"type":"model","name":"TemplateActions1","properties":[{"name":"open_modal","kind":"Any","default":0},{"name":"close_modal","kind":"Any","default":0}]},{"type":"model","name":"BootstrapTemplateActions1","properties":[{"name":"open_modal","kind":"Any","default":0},{"name":"close_modal","kind":"Any","default":0}]},{"type":"model","name":"TemplateEditor1","properties":[{"name":"layout","kind":"Any","default":[]}]},{"type":"model","name":"MaterialTemplateActions1","properties":[{"name":"open_modal","kind":"Any","default":0},{"name":"close_modal","kind":"Any","default":0}]},{"type":"model","name":"request_value1","properties":[{"name":"fill","kind":"Any","default":"none"},{"name":"_synced","kind":"Any","default":null},{"name":"_request_sync","kind":"Any","default":0}]},{"type":"model","name":"holoviews.plotting.bokeh.raster.HoverModel","properties":[{"name":"xy","kind":"Any","default":null},{"name":"data","kind":"Any","default":null}]}]}};
  var render_items = [{"docid":"27c2b695-13e7-4c6a-9e7c-050650982c93","roots":{"86a4964f-4b5b-4d30-905d-9ad2c2573734":"a32c40ed-d188-4ace-a15b-7dd9c22dc237"},"root_ids":["86a4964f-4b5b-4d30-905d-9ad2c2573734"]}];
  var docs = Object.values(docs_json)
  if (!docs) {
    return
  }
  const version = docs[0].version.replace('rc', '-rc.').replace('.dev', '-dev.')
  async function embed_document(root) {
    var Bokeh = get_bokeh(root)
    await Bokeh.embed.embed_items_notebook(docs_json, render_items);
    for (const render_item of render_items) {
      for (const root_id of render_item.root_ids) {
    const id_el = document.getElementById(root_id)
    if (id_el.children.length && id_el.children[0].hasAttribute('data-root-id')) {
      const root_el = id_el.children[0]
      root_el.id = root_el.id + '-rendered'
      for (const child of root_el.children) {
            // Ensure JupyterLab does not capture keyboard shortcuts
            // see: https://jupyterlab.readthedocs.io/en/4.1.x/extension/notebook.html#keyboard-interaction-model
        child.setAttribute('data-lm-suppress-shortcuts', 'true')
      }
    }
      }
    }
  }
  function get_bokeh(root) {
    if (root.Bokeh === undefined) {
      return null
    } else if (root.Bokeh.version !== version) {
      if (root.Bokeh.versions === undefined || !root.Bokeh.versions.has(version)) {
    return null
      }
      return root.Bokeh.versions.get(version);
    } else if (root.Bokeh.version === version) {
      return root.Bokeh
    }
    return null
  }
  function is_loaded(root) {
    var Bokeh = get_bokeh(root)
    return (Bokeh != null && Bokeh.Panel !== undefined)
  }
  if (is_loaded(root)) {
    embed_document(root);
  } else {
    var attempts = 0;
    var timer = setInterval(function(root) {
      if (is_loaded(root)) {
        clearInterval(timer);
        embed_document(root);
      } else if (document.readyState == "complete") {
        attempts++;
        if (attempts > 200) {
          clearInterval(timer);
      var Bokeh = get_bokeh(root)
      if (Bokeh == null || Bokeh.Panel == null) {
            console.warn("Panel: ERROR: Unable to run Panel code because Bokeh or Panel library is missing");
      } else {
        console.warn("Panel: WARNING: Attempting to render but not all required libraries could be resolved.")
        embed_document(root)
      }
        }
      }
    }, 25, root)
  }
})(window);</script>
</div>
<div class="cell-output cell-output-display">

</div>
<div class="cell-output cell-output-display" data-execution_count="36">
<div id="0de10545-12ed-4c5d-b443-60fbd103c6b2">
  <div id="d3542f75-d4b9-412c-888a-22813b9a965d" data-root-id="0de10545-12ed-4c5d-b443-60fbd103c6b2" style="display: contents;"></div>
</div>
<script type="application/javascript">(function(root) {
  var docs_json = {"e47d94c3-11ef-40fe-81a4-2e2ed31cb21e":{"version":"3.9.1","title":"Bokeh Application","config":{"type":"object","name":"DocumentConfig","id":"bf38e9cd-ebb5-4e26-97b3-dc34b68e862c","attributes":{"notifications":{"type":"object","name":"Notifications","id":"3f354068-eb46-4428-b0c1-405f7a9fb7bd"}}},"roots":[{"type":"object","name":"Row","id":"0de10545-12ed-4c5d-b443-60fbd103c6b2","attributes":{"name":"Row00413","tags":["embedded"],"stylesheets":["\n:host(.pn-loading):before, .pn-loading:before {\n  background-color: #c3c3c3;\n  mask-size: auto calc(min(50%, 300px));\n  -webkit-mask-size: auto calc(min(50%, 300px));\n}",{"type":"object","name":"ImportedStyleSheet","id":"1c5e152d-4ce1-499e-85b1-f7f89307bf87","attributes":{"url":"https://cdn.holoviz.org/panel/1.9.3/dist/css/loading.css?v=1.9.3"}},{"type":"object","name":"ImportedStyleSheet","id":"662c0892-49c0-40f4-ad43-b2d5b2a8a9b0","attributes":{"url":"https://cdn.holoviz.org/panel/1.9.3/dist/css/listpanel.css"}},{"type":"object","name":"ImportedStyleSheet","id":"2f1a158b-bded-482e-91f5-9c90d3c27d01","attributes":{"url":"https://cdn.holoviz.org/panel/1.9.3/dist/bundled/theme/default.css"}},{"type":"object","name":"ImportedStyleSheet","id":"b7c05c82-e2a9-4fcf-bb86-7c1ca2981f7b","attributes":{"url":"https://cdn.holoviz.org/panel/1.9.3/dist/bundled/theme/native.css"}}],"min_width":900,"margin":0,"sizing_mode":"stretch_width","align":"start","children":[{"type":"object","name":"Spacer","id":"58c61f49-14b0-4e9b-bf69-8ee7cc88f566","attributes":{"name":"HSpacer00417","stylesheets":["\n:host(.pn-loading):before, .pn-loading:before {\n  background-color: #c3c3c3;\n  mask-size: auto calc(min(50%, 300px));\n  -webkit-mask-size: auto calc(min(50%, 300px));\n}",{"id":"1c5e152d-4ce1-499e-85b1-f7f89307bf87"},{"id":"2f1a158b-bded-482e-91f5-9c90d3c27d01"},{"id":"b7c05c82-e2a9-4fcf-bb86-7c1ca2981f7b"}],"min_width":0,"margin":0,"sizing_mode":"stretch_width","align":"start"}},{"type":"object","name":"Figure","id":"8080ddf4-9cc0-44e6-a1a1-c40a78fc2b94","attributes":{"width":900,"height":575,"margin":[5,10],"sizing_mode":"fixed","align":"start","x_range":{"type":"object","name":"Range1d","id":"4301d07c-bdde-412f-8753-114a2e5970cc","attributes":{"name":"DATE OCC","tags":[[["DATE OCC",null]],[]],"start":1577836800000.0,"end":1733011200000.0,"reset_start":1577836800000.0,"reset_end":1733011200000.0}},"y_range":{"type":"object","name":"Range1d","id":"748a0d4c-b61b-4db3-912a-0ad8ae9ee605","attributes":{"name":"Harbor","tags":[[["value",null]],{"type":"map","entries":[["invert_yaxis",false],["autorange",false]]}],"start":-26.200000000000003,"end":348.2,"reset_start":-26.200000000000003,"reset_end":348.2}},"x_scale":{"type":"object","name":"LinearScale","id":"c181f564-c606-480e-b851-48c8fe88083d"},"y_scale":{"type":"object","name":"LinearScale","id":"97e926b8-215c-4a2e-b33c-f03df4766df9"},"title":{"type":"object","name":"Title","id":"c6090156-a946-4e69-abcf-b4318d689437","attributes":{"text":"BURGLARY FROM VEHICLE in LA","text_color":"black","text_font_size":"12pt"}},"renderers":[{"type":"object","name":"GlyphRenderer","id":"5840b27e-3979-4854-bfd8-acd24ba97c9d","attributes":{"name":"Harbor","data_source":{"type":"object","name":"ColumnDataSource","id":"f692f056-9832-42bb-9533-9e06f7c9053b","attributes":{"selected":{"type":"object","name":"Selection","id":"a08bf7a4-1de8-4723-b7ff-bdaf9cd5bc81","attributes":{"indices":[],"line_indices":[]}},"selection_policy":{"type":"object","name":"UnionRenderers","id":"d84f147d-2d16-40e2-bc4c-e4ce7c8ff345"},"data":{"type":"map","entries":[["DATE OCC",{"type":"ndarray","array":{"type":"bytes","data":"H4sIAAEAAAAA/2NgaMh79rXMiYHhwIEH/0F0g7sZZzmIP9NAGEQ7tN2QAdENNy6pgWiGo1UGYHHxUiuweGa+C1g8TNwPLL5CMAKsf8rORLD4883ZYHHLdaVgOmpjHVjfmtUdYPmZwZPA4q9954D1Xf+6FCyu9WE9WLzm1U6weMakw2Dx3T1nwfqXm1wHi//UewgW99F8DaZzdb6A9e1X+weWX32OvQIk/u+EIIhueFUgDaIP2GSrgsX7U/XB4tW8lmDxs+zOINph13ofsDjPqjCweNySBDBdvzwTrO/SwmKw/D7PWrC4gEs7WN/f1xPA4v7PZoHFFz5YAhbv61gHFn/QtAOs/6zWIbC4vOoZsHih/DUw/0fJfTDfK/8lWJ25+GeweKfgXxB9oHQnWyVI/MRmARDtILVOCkQfYAtTAYtHBuiB6AbXH+aVTgAoTkso4AEAAA=="},"shape":[60],"dtype":"float64","order":"little"}],["Harbor",{"type":"ndarray","array":{"type":"bytes","data":"H4sIAAEAAAAA/zXOOQ6DMBBAUdeRoAiEhMXICiTQI+5/Nf6XhuJpbM/mnFL64o8TG2ZMqDHggxLxIP5gvTULOthjbQ9nmPe8osC6DOvcZ4/3d7zZ690e4xg5d997fC+Rd84OZ9ljf4MXnqji3BIfMPqHC6xMY/TwAAAA"},"shape":[60],"dtype":"uint32","order":"little"}],["DATE_OCC",{"type":"ndarray","array":{"type":"bytes","data":"H4sIAAEAAAAA/2NgaMh79rXMiYHhwIEH/0F0g7sZZzmIP9NAGEQ7tN2QAdENNy6pgWiGo1UGYHHxUiuweGa+C1g8TNwPLL5CMAKsf8rORLD4883ZYHHLdaVgOmpjHVjfmtUdYPmZwZPA4q9954D1Xf+6FCyu9WE9WLzm1U6weMakw2Dx3T1nwfqXm1wHi//UewgW99F8DaZzdb6A9e1X+weWX32OvQIk/u+EIIhueFUgDaIP2GSrgsX7U/XB4tW8lmDxs+zOINph13ofsDjPqjCweNySBDBdvzwTrO/SwmKw/D7PWrC4gEs7WN/f1xPA4v7PZoHFFz5YAhbv61gHFn/QtAOs/6zWIbC4vOoZsHih/DUw/0fJfTDfK/8lWJ25+GeweKfgXxB9oHQnWyVI/MRmARDtILVOCkQfYAtTAYtHBuiB6AbXH+aVTgAoTkso4AEAAA=="},"shape":[60],"dtype":"float64","order":"little"}],["Variable",["Harbor","Harbor","Harbor","Harbor","Harbor","Harbor","Harbor","Harbor","Harbor","Harbor","Harbor","Harbor","Harbor","Harbor","Harbor","Harbor","Harbor","Harbor","Harbor","Harbor","Harbor","Harbor","Harbor","Harbor","Harbor","Harbor","Harbor","Harbor","Harbor","Harbor","Harbor","Harbor","Harbor","Harbor","Harbor","Harbor","Harbor","Harbor","Harbor","Harbor","Harbor","Harbor","Harbor","Harbor","Harbor","Harbor","Harbor","Harbor","Harbor","Harbor","Harbor","Harbor","Harbor","Harbor","Harbor","Harbor","Harbor","Harbor","Harbor","Harbor"]]]}}},"view":{"type":"object","name":"CDSView","id":"9f16f618-1e28-4701-9f86-318431eb76ee","attributes":{"filter":{"type":"object","name":"AllIndices","id":"c055e129-251b-4830-9278-04c49ad346b9"}}},"glyph":{"type":"object","name":"Line","id":"361229a0-005a-4321-9834-9b5fe72fa90d","attributes":{"tags":["apply_ranges"],"x":{"type":"field","field":"DATE OCC"},"y":{"type":"field","field":"Harbor"},"line_color":"#999999","line_width":2}},"selection_glyph":{"type":"object","name":"Line","id":"26a4b1a3-57cc-4548-8aa1-1713674a257f","attributes":{"tags":["apply_ranges"],"x":{"type":"field","field":"DATE OCC"},"y":{"type":"field","field":"Harbor"},"line_color":"#999999","line_width":2}},"nonselection_glyph":{"type":"object","name":"Line","id":"fecece92-0ff3-40d1-8798-6d469463b4cc","attributes":{"tags":["apply_ranges"],"x":{"type":"field","field":"DATE OCC"},"y":{"type":"field","field":"Harbor"},"line_color":"#999999","line_alpha":0.1,"line_width":2}},"muted_glyph":{"type":"object","name":"Line","id":"8f72e9c5-99bd-4f7e-9b72-7aa0c944135e","attributes":{"tags":["apply_ranges"],"x":{"type":"field","field":"DATE OCC"},"y":{"type":"field","field":"Harbor"},"line_color":"#999999","line_alpha":0.2,"line_width":2}}}},{"type":"object","name":"GlyphRenderer","id":"ef567337-369c-440d-9f5a-33fff6967841","attributes":{"name":"Newton","data_source":{"type":"object","name":"ColumnDataSource","id":"c9c53ef7-b9d2-451d-a563-7f6771854b0a","attributes":{"selected":{"type":"object","name":"Selection","id":"d983363c-40bf-4a9d-ae07-1c771be98df9","attributes":{"indices":[],"line_indices":[]}},"selection_policy":{"type":"object","name":"UnionRenderers","id":"0d39d935-4516-48c4-ac7d-b33366e98767"},"data":{"type":"map","entries":[["DATE OCC",{"type":"ndarray","array":{"type":"bytes","data":"H4sIAAEAAAAA/2NgaMh79rXMiYHhwIEH/0F0g7sZZzmIP9NAGEQ7tN2QAdENNy6pgWiGo1UGYHHxUiuweGa+C1g8TNwPLL5CMAKsf8rORLD4883ZYHHLdaVgOmpjHVjfmtUdYPmZwZPA4q9954D1Xf+6FCyu9WE9WLzm1U6weMakw2Dx3T1nwfqXm1wHi//UewgW99F8DaZzdb6A9e1X+weWX32OvQIk/u+EIIhueFUgDaIP2GSrgsX7U/XB4tW8lmDxs+zOINph13ofsDjPqjCweNySBDBdvzwTrO/SwmKw/D7PWrC4gEs7WN/f1xPA4v7PZoHFFz5YAhbv61gHFn/QtAOs/6zWIbC4vOoZsHih/DUw/0fJfTDfK/8lWJ25+GeweKfgXxB9oHQnWyVI/MRmARDtILVOCkQfYAtTAYtHBuiB6AbXH+aVTgAoTkso4AEAAA=="},"shape":[60],"dtype":"float64","order":"little"}],["Newton",{"type":"ndarray","array":{"type":"bytes","data":"H4sIAAEAAAAA/03PuwqEQAyF4XkKRVlBvIK7inhdVNTCwkLYzvd/lP0PTGHxkckkgeQ0xixI0eKDACESuJb+YpSIoPz1yH+8Nb+jxhu9jR2xwIQGM74YUWF71AbeOdQvqqnvsDR74cSNHZpZoRu0v/ZzkMGDbtC+Pv6DQqvI8AAAAA=="},"shape":[60],"dtype":"uint32","order":"little"}],["DATE_OCC",{"type":"ndarray","array":{"type":"bytes","data":"H4sIAAEAAAAA/2NgaMh79rXMiYHhwIEH/0F0g7sZZzmIP9NAGEQ7tN2QAdENNy6pgWiGo1UGYHHxUiuweGa+C1g8TNwPLL5CMAKsf8rORLD4883ZYHHLdaVgOmpjHVjfmtUdYPmZwZPA4q9954D1Xf+6FCyu9WE9WLzm1U6weMakw2Dx3T1nwfqXm1wHi//UewgW99F8DaZzdb6A9e1X+weWX32OvQIk/u+EIIhueFUgDaIP2GSrgsX7U/XB4tW8lmDxs+zOINph13ofsDjPqjCweNySBDBdvzwTrO/SwmKw/D7PWrC4gEs7WN/f1xPA4v7PZoHFFz5YAhbv61gHFn/QtAOs/6zWIbC4vOoZsHih/DUw/0fJfTDfK/8lWJ25+GeweKfgXxB9oHQnWyVI/MRmARDtILVOCkQfYAtTAYtHBuiB6AbXH+aVTgAoTkso4AEAAA=="},"shape":[60],"dtype":"float64","order":"little"}],["Variable",["Newton","Newton","Newton","Newton","Newton","Newton","Newton","Newton","Newton","Newton","Newton","Newton","Newton","Newton","Newton","Newton","Newton","Newton","Newton","Newton","Newton","Newton","Newton","Newton","Newton","Newton","Newton","Newton","Newton","Newton","Newton","Newton","Newton","Newton","Newton","Newton","Newton","Newton","Newton","Newton","Newton","Newton","Newton","Newton","Newton","Newton","Newton","Newton","Newton","Newton","Newton","Newton","Newton","Newton","Newton","Newton","Newton","Newton","Newton","Newton"]]]}}},"view":{"type":"object","name":"CDSView","id":"2706f9d0-8e87-4716-b747-21bd2a2267ae","attributes":{"filter":{"type":"object","name":"AllIndices","id":"73a7a108-cf6e-4fbc-a211-fdbf0eab2b9d"}}},"glyph":{"type":"object","name":"Line","id":"69e2a9ba-c8c1-49a2-82fd-629614905aaf","attributes":{"tags":["apply_ranges"],"x":{"type":"field","field":"DATE OCC"},"y":{"type":"field","field":"Newton"},"line_color":"#999999","line_width":2}},"selection_glyph":{"type":"object","name":"Line","id":"5b879fea-7701-4b66-9224-fe6cdbc14a6c","attributes":{"tags":["apply_ranges"],"x":{"type":"field","field":"DATE OCC"},"y":{"type":"field","field":"Newton"},"line_color":"#999999","line_width":2}},"nonselection_glyph":{"type":"object","name":"Line","id":"95abd83e-515f-4542-a97c-3fa3edfc0612","attributes":{"tags":["apply_ranges"],"x":{"type":"field","field":"DATE OCC"},"y":{"type":"field","field":"Newton"},"line_color":"#999999","line_alpha":0.1,"line_width":2}},"muted_glyph":{"type":"object","name":"Line","id":"076d25b8-10c9-41fe-a2ce-0764ce720b87","attributes":{"tags":["apply_ranges"],"x":{"type":"field","field":"DATE OCC"},"y":{"type":"field","field":"Newton"},"line_color":"#999999","line_alpha":0.2,"line_width":2}}}},{"type":"object","name":"GlyphRenderer","id":"19fbd806-72e7-4ae4-a41b-8061386068fc","attributes":{"name":"Central","data_source":{"type":"object","name":"ColumnDataSource","id":"2bacb9f0-108f-4c7e-bd1b-b2653e4f3292","attributes":{"selected":{"type":"object","name":"Selection","id":"047329e3-92e2-49c9-8a36-ccfd400d5a30","attributes":{"indices":[],"line_indices":[]}},"selection_policy":{"type":"object","name":"UnionRenderers","id":"bd9455cf-589b-49ae-9b9b-8c2676cd7a0a"},"data":{"type":"map","entries":[["DATE OCC",{"type":"ndarray","array":{"type":"bytes","data":"H4sIAAEAAAAA/2NgaMh79rXMiYHhwIEH/0F0g7sZZzmIP9NAGEQ7tN2QAdENNy6pgWiGo1UGYHHxUiuweGa+C1g8TNwPLL5CMAKsf8rORLD4883ZYHHLdaVgOmpjHVjfmtUdYPmZwZPA4q9954D1Xf+6FCyu9WE9WLzm1U6weMakw2Dx3T1nwfqXm1wHi//UewgW99F8DaZzdb6A9e1X+weWX32OvQIk/u+EIIhueFUgDaIP2GSrgsX7U/XB4tW8lmDxs+zOINph13ofsDjPqjCweNySBDBdvzwTrO/SwmKw/D7PWrC4gEs7WN/f1xPA4v7PZoHFFz5YAhbv61gHFn/QtAOs/6zWIbC4vOoZsHih/DUw/0fJfTDfK/8lWJ25+GeweKfgXxB9oHQnWyVI/MRmARDtILVOCkQfYAtTAYtHBuiB6AbXH+aVTgAoTkso4AEAAA=="},"shape":[60],"dtype":"float64","order":"little"}],["Central",{"type":"ndarray","array":{"type":"bytes","data":"H4sIAAEAAAAA/y3LvQqBcRQH4L/NqJQrcBsmo5LNR4lBkUkGZbCZRD4yuAGzMpoMyuQGlEUyiMVi9bz1Dk/n9zunswghrOnTpEiJOg0KVInu+XjXivc1c0CPFRO2nNjz4xnnZCKEFC/9S1rOcJUfXMjpWd7yjClHdhz4cObOjehnzpguFcp0aDNiyJJNPP8yMy/k8AAAAA=="},"shape":[60],"dtype":"uint32","order":"little"}],["DATE_OCC",{"type":"ndarray","array":{"type":"bytes","data":"H4sIAAEAAAAA/2NgaMh79rXMiYHhwIEH/0F0g7sZZzmIP9NAGEQ7tN2QAdENNy6pgWiGo1UGYHHxUiuweGa+C1g8TNwPLL5CMAKsf8rORLD4883ZYHHLdaVgOmpjHVjfmtUdYPmZwZPA4q9954D1Xf+6FCyu9WE9WLzm1U6weMakw2Dx3T1nwfqXm1wHi//UewgW99F8DaZzdb6A9e1X+weWX32OvQIk/u+EIIhueFUgDaIP2GSrgsX7U/XB4tW8lmDxs+zOINph13ofsDjPqjCweNySBDBdvzwTrO/SwmKw/D7PWrC4gEs7WN/f1xPA4v7PZoHFFz5YAhbv61gHFn/QtAOs/6zWIbC4vOoZsHih/DUw/0fJfTDfK/8lWJ25+GeweKfgXxB9oHQnWyVI/MRmARDtILVOCkQfYAtTAYtHBuiB6AbXH+aVTgAoTkso4AEAAA=="},"shape":[60],"dtype":"float64","order":"little"}],["Variable",["Central","Central","Central","Central","Central","Central","Central","Central","Central","Central","Central","Central","Central","Central","Central","Central","Central","Central","Central","Central","Central","Central","Central","Central","Central","Central","Central","Central","Central","Central","Central","Central","Central","Central","Central","Central","Central","Central","Central","Central","Central","Central","Central","Central","Central","Central","Central","Central","Central","Central","Central","Central","Central","Central","Central","Central","Central","Central","Central","Central"]]]}}},"view":{"type":"object","name":"CDSView","id":"b3528efe-f4da-4027-b19e-532abf36b809","attributes":{"filter":{"type":"object","name":"AllIndices","id":"896c335c-1a05-4e73-abba-834ce52e2ff0"}}},"glyph":{"type":"object","name":"Line","id":"5677d796-25b9-41da-ba7b-55c677a169d6","attributes":{"tags":["apply_ranges"],"x":{"type":"field","field":"DATE OCC"},"y":{"type":"field","field":"Central"},"line_color":"#999999","line_width":2}},"selection_glyph":{"type":"object","name":"Line","id":"c65a0dfe-dc59-416f-bf59-776c1c03b335","attributes":{"tags":["apply_ranges"],"x":{"type":"field","field":"DATE OCC"},"y":{"type":"field","field":"Central"},"line_color":"#999999","line_width":2}},"nonselection_glyph":{"type":"object","name":"Line","id":"660cdfe0-7b76-4e18-bc2b-20f7835508a2","attributes":{"tags":["apply_ranges"],"x":{"type":"field","field":"DATE OCC"},"y":{"type":"field","field":"Central"},"line_color":"#999999","line_alpha":0.1,"line_width":2}},"muted_glyph":{"type":"object","name":"Line","id":"aa6da541-9161-4ada-8a41-401ddbf3f7c2","attributes":{"tags":["apply_ranges"],"x":{"type":"field","field":"DATE OCC"},"y":{"type":"field","field":"Central"},"line_color":"#999999","line_alpha":0.2,"line_width":2}}}},{"type":"object","name":"GlyphRenderer","id":"9fd93b43-0478-4f3f-8491-a5ba5dd1b4fc","attributes":{"name":"Mission","data_source":{"type":"object","name":"ColumnDataSource","id":"0fbd36db-669b-459f-9e0a-29688fd249e4","attributes":{"selected":{"type":"object","name":"Selection","id":"1347d0d7-fb94-40b4-a1b3-778e91e1c309","attributes":{"indices":[],"line_indices":[]}},"selection_policy":{"type":"object","name":"UnionRenderers","id":"2a64ce97-479b-4044-9f00-f05c56d27a4c"},"data":{"type":"map","entries":[["DATE OCC",{"type":"ndarray","array":{"type":"bytes","data":"H4sIAAEAAAAA/2NgaMh79rXMiYHhwIEH/0F0g7sZZzmIP9NAGEQ7tN2QAdENNy6pgWiGo1UGYHHxUiuweGa+C1g8TNwPLL5CMAKsf8rORLD4883ZYHHLdaVgOmpjHVjfmtUdYPmZwZPA4q9954D1Xf+6FCyu9WE9WLzm1U6weMakw2Dx3T1nwfqXm1wHi//UewgW99F8DaZzdb6A9e1X+weWX32OvQIk/u+EIIhueFUgDaIP2GSrgsX7U/XB4tW8lmDxs+zOINph13ofsDjPqjCweNySBDBdvzwTrO/SwmKw/D7PWrC4gEs7WN/f1xPA4v7PZoHFFz5YAhbv61gHFn/QtAOs/6zWIbC4vOoZsHih/DUw/0fJfTDfK/8lWJ25+GeweKfgXxB9oHQnWyVI/MRmARDtILVOCkQfYAtTAYtHBuiB6AbXH+aVTgAoTkso4AEAAA=="},"shape":[60],"dtype":"float64","order":"little"}],["Mission",{"type":"ndarray","array":{"type":"bytes","data":"H4sIAAEAAAAA/y3OywqDMBRF0cylilDFVyVtqYqCTrT//2nuDRks8tBzbq4QwoENIxZMmNHjiTc+2DEgpjv3Zjz73cyKP36w84Q5O7+oYG8H82aydOfZ/+x0X8D5OWK6M+ss3+SMF1o0MGe/HnBGndaS1b4bNFIudfAAAAA="},"shape":[60],"dtype":"uint32","order":"little"}],["DATE_OCC",{"type":"ndarray","array":{"type":"bytes","data":"H4sIAAEAAAAA/2NgaMh79rXMiYHhwIEH/0F0g7sZZzmIP9NAGEQ7tN2QAdENNy6pgWiGo1UGYHHxUiuweGa+C1g8TNwPLL5CMAKsf8rORLD4883ZYHHLdaVgOmpjHVjfmtUdYPmZwZPA4q9954D1Xf+6FCyu9WE9WLzm1U6weMakw2Dx3T1nwfqXm1wHi//UewgW99F8DaZzdb6A9e1X+weWX32OvQIk/u+EIIhueFUgDaIP2GSrgsX7U/XB4tW8lmDxs+zOINph13ofsDjPqjCweNySBDBdvzwTrO/SwmKw/D7PWrC4gEs7WN/f1xPA4v7PZoHFFz5YAhbv61gHFn/QtAOs/6zWIbC4vOoZsHih/DUw/0fJfTDfK/8lWJ25+GeweKfgXxB9oHQnWyVI/MRmARDtILVOCkQfYAtTAYtHBuiB6AbXH+aVTgAoTkso4AEAAA=="},"shape":[60],"dtype":"float64","order":"little"}],["Variable",["Mission","Mission","Mission","Mission","Mission","Mission","Mission","Mission","Mission","Mission","Mission","Mission","Mission","Mission","Mission","Mission","Mission","Mission","Mission","Mission","Mission","Mission","Mission","Mission","Mission","Mission","Mission","Mission","Mission","Mission","Mission","Mission","Mission","Mission","Mission","Mission","Mission","Mission","Mission","Mission","Mission","Mission","Mission","Mission","Mission","Mission","Mission","Mission","Mission","Mission","Mission","Mission","Mission","Mission","Mission","Mission","Mission","Mission","Mission","Mission"]]]}}},"view":{"type":"object","name":"CDSView","id":"c3255390-1904-496a-9dd3-0fd51f668686","attributes":{"filter":{"type":"object","name":"AllIndices","id":"75c26ce5-0d29-488b-a177-95761bc339bb"}}},"glyph":{"type":"object","name":"Line","id":"c4328cb7-5c2b-463c-9e53-687c552d7c3b","attributes":{"tags":["apply_ranges"],"x":{"type":"field","field":"DATE OCC"},"y":{"type":"field","field":"Mission"},"line_color":"#999999","line_width":2}},"selection_glyph":{"type":"object","name":"Line","id":"78516c52-987c-4e5a-b45e-6ac55350b788","attributes":{"tags":["apply_ranges"],"x":{"type":"field","field":"DATE OCC"},"y":{"type":"field","field":"Mission"},"line_color":"#999999","line_width":2}},"nonselection_glyph":{"type":"object","name":"Line","id":"3aae1d99-6cca-4969-9b26-a98a8480a8a0","attributes":{"tags":["apply_ranges"],"x":{"type":"field","field":"DATE OCC"},"y":{"type":"field","field":"Mission"},"line_color":"#999999","line_alpha":0.1,"line_width":2}},"muted_glyph":{"type":"object","name":"Line","id":"81507951-6039-44ab-a0d1-85fb4f344140","attributes":{"tags":["apply_ranges"],"x":{"type":"field","field":"DATE OCC"},"y":{"type":"field","field":"Mission"},"line_color":"#999999","line_alpha":0.2,"line_width":2}}}},{"type":"object","name":"GlyphRenderer","id":"e3211d35-7647-4102-9d28-2598442e7910","attributes":{"name":"Olympic","data_source":{"type":"object","name":"ColumnDataSource","id":"891cce7e-dc0e-4718-bfee-2cddc775b0e8","attributes":{"selected":{"type":"object","name":"Selection","id":"0e554ff6-190a-4834-98b0-ccdeb5aa30ee","attributes":{"indices":[],"line_indices":[]}},"selection_policy":{"type":"object","name":"UnionRenderers","id":"c4b6aa8c-525c-44fe-8240-f60dce9b4c4b"},"data":{"type":"map","entries":[["DATE OCC",{"type":"ndarray","array":{"type":"bytes","data":"H4sIAAEAAAAA/2NgaMh79rXMiYHhwIEH/0F0g7sZZzmIP9NAGEQ7tN2QAdENNy6pgWiGo1UGYHHxUiuweGa+C1g8TNwPLL5CMAKsf8rORLD4883ZYHHLdaVgOmpjHVjfmtUdYPmZwZPA4q9954D1Xf+6FCyu9WE9WLzm1U6weMakw2Dx3T1nwfqXm1wHi//UewgW99F8DaZzdb6A9e1X+weWX32OvQIk/u+EIIhueFUgDaIP2GSrgsX7U/XB4tW8lmDxs+zOINph13ofsDjPqjCweNySBDBdvzwTrO/SwmKw/D7PWrC4gEs7WN/f1xPA4v7PZoHFFz5YAhbv61gHFn/QtAOs/6zWIbC4vOoZsHih/DUw/0fJfTDfK/8lWJ25+GeweKfgXxB9oHQnWyVI/MRmARDtILVOCkQfYAtTAYtHBuiB6AbXH+aVTgAoTkso4AEAAA=="},"shape":[60],"dtype":"float64","order":"little"}],["Olympic",{"type":"ndarray","array":{"type":"bytes","data":"H4sIAAEAAAAA/03PywqDMBCF4bxINyLaqq29INpWBfFGC9aNi+L7P4j/gVm4+JgkZzIkk3PuighPFLjjhQtiy89UDwlOqPC2TH217W/UD0b8sKCHZqe2Vm8G3VdWYkADZTrTfM3Iob4WnZmpK7677M/6gRB6n/5zQIAj9HYfG+IqdV7wAAAA"},"shape":[60],"dtype":"uint32","order":"little"}],["DATE_OCC",{"type":"ndarray","array":{"type":"bytes","data":"H4sIAAEAAAAA/2NgaMh79rXMiYHhwIEH/0F0g7sZZzmIP9NAGEQ7tN2QAdENNy6pgWiGo1UGYHHxUiuweGa+C1g8TNwPLL5CMAKsf8rORLD4883ZYHHLdaVgOmpjHVjfmtUdYPmZwZPA4q9954D1Xf+6FCyu9WE9WLzm1U6weMakw2Dx3T1nwfqXm1wHi//UewgW99F8DaZzdb6A9e1X+weWX32OvQIk/u+EIIhueFUgDaIP2GSrgsX7U/XB4tW8lmDxs+zOINph13ofsDjPqjCweNySBDBdvzwTrO/SwmKw/D7PWrC4gEs7WN/f1xPA4v7PZoHFFz5YAhbv61gHFn/QtAOs/6zWIbC4vOoZsHih/DUw/0fJfTDfK/8lWJ25+GeweKfgXxB9oHQnWyVI/MRmARDtILVOCkQfYAtTAYtHBuiB6AbXH+aVTgAoTkso4AEAAA=="},"shape":[60],"dtype":"float64","order":"little"}],["Variable",["Olympic","Olympic","Olympic","Olympic","Olympic","Olympic","Olympic","Olympic","Olympic","Olympic","Olympic","Olympic","Olympic","Olympic","Olympic","Olympic","Olympic","Olympic","Olympic","Olympic","Olympic","Olympic","Olympic","Olympic","Olympic","Olympic","Olympic","Olympic","Olympic","Olympic","Olympic","Olympic","Olympic","Olympic","Olympic","Olympic","Olympic","Olympic","Olympic","Olympic","Olympic","Olympic","Olympic","Olympic","Olympic","Olympic","Olympic","Olympic","Olympic","Olympic","Olympic","Olympic","Olympic","Olympic","Olympic","Olympic","Olympic","Olympic","Olympic","Olympic"]]]}}},"view":{"type":"object","name":"CDSView","id":"d4a1c135-6de1-4fb2-a557-5e9a6ee3cdea","attributes":{"filter":{"type":"object","name":"AllIndices","id":"f125afd3-5098-4a8a-adfe-9ee2baf690b6"}}},"glyph":{"type":"object","name":"Line","id":"9dfe7a6b-16eb-4ff0-b947-28ffe7ce38e1","attributes":{"tags":["apply_ranges"],"x":{"type":"field","field":"DATE OCC"},"y":{"type":"field","field":"Olympic"},"line_color":"#999999","line_width":2}},"selection_glyph":{"type":"object","name":"Line","id":"1bd084cf-cdbb-4a61-bf00-5b1bc0be7c9b","attributes":{"tags":["apply_ranges"],"x":{"type":"field","field":"DATE OCC"},"y":{"type":"field","field":"Olympic"},"line_color":"#999999","line_width":2}},"nonselection_glyph":{"type":"object","name":"Line","id":"1d750cd6-ecff-49b5-ace9-2b107b3dab4a","attributes":{"tags":["apply_ranges"],"x":{"type":"field","field":"DATE OCC"},"y":{"type":"field","field":"Olympic"},"line_color":"#999999","line_alpha":0.1,"line_width":2}},"muted_glyph":{"type":"object","name":"Line","id":"ddf0c46a-fc7f-461c-a057-fd1126105654","attributes":{"tags":["apply_ranges"],"x":{"type":"field","field":"DATE OCC"},"y":{"type":"field","field":"Olympic"},"line_color":"#999999","line_alpha":0.2,"line_width":2}}}},{"type":"object","name":"GlyphRenderer","id":"88a5f445-b9b6-438c-92af-46e578d06b88","attributes":{"name":"Pacific","data_source":{"type":"object","name":"ColumnDataSource","id":"9d6af2e0-e77b-431a-aa0f-b07c4facba57","attributes":{"selected":{"type":"object","name":"Selection","id":"ce184092-13f3-4808-b62e-3739182cb06c","attributes":{"indices":[],"line_indices":[]}},"selection_policy":{"type":"object","name":"UnionRenderers","id":"45b2d0c7-207f-4c5f-867a-4b86087da7d1"},"data":{"type":"map","entries":[["DATE OCC",{"type":"ndarray","array":{"type":"bytes","data":"H4sIAAEAAAAA/2NgaMh79rXMiYHhwIEH/0F0g7sZZzmIP9NAGEQ7tN2QAdENNy6pgWiGo1UGYHHxUiuweGa+C1g8TNwPLL5CMAKsf8rORLD4883ZYHHLdaVgOmpjHVjfmtUdYPmZwZPA4q9954D1Xf+6FCyu9WE9WLzm1U6weMakw2Dx3T1nwfqXm1wHi//UewgW99F8DaZzdb6A9e1X+weWX32OvQIk/u+EIIhueFUgDaIP2GSrgsX7U/XB4tW8lmDxs+zOINph13ofsDjPqjCweNySBDBdvzwTrO/SwmKw/D7PWrC4gEs7WN/f1xPA4v7PZoHFFz5YAhbv61gHFn/QtAOs/6zWIbC4vOoZsHih/DUw/0fJfTDfK/8lWJ25+GeweKfgXxB9oHQnWyVI/MRmARDtILVOCkQfYAtTAYtHBuiB6AbXH+aVTgAoTkso4AEAAA=="},"shape":[60],"dtype":"float64","order":"little"}],["Pacific",{"type":"ndarray","array":{"type":"bytes","data":"H4sIAAEAAAAA/y3NuQ7CMBBFUf8JXVqgCFsUsoDMIkUKChRU0NHk/2vulaY4suOZ95JTSje8MKJHxhEtlqiwxQlfDNhhwgzzzh5w14423j+cHX54444n7D2gRANz/rPGFfad49uMe+7bZY8zM84u2MPcAu6usI57wbmJ2R8W/FOV8AAAAA=="},"shape":[60],"dtype":"uint32","order":"little"}],["DATE_OCC",{"type":"ndarray","array":{"type":"bytes","data":"H4sIAAEAAAAA/2NgaMh79rXMiYHhwIEH/0F0g7sZZzmIP9NAGEQ7tN2QAdENNy6pgWiGo1UGYHHxUiuweGa+C1g8TNwPLL5CMAKsf8rORLD4883ZYHHLdaVgOmpjHVjfmtUdYPmZwZPA4q9954D1Xf+6FCyu9WE9WLzm1U6weMakw2Dx3T1nwfqXm1wHi//UewgW99F8DaZzdb6A9e1X+weWX32OvQIk/u+EIIhueFUgDaIP2GSrgsX7U/XB4tW8lmDxs+zOINph13ofsDjPqjCweNySBDBdvzwTrO/SwmKw/D7PWrC4gEs7WN/f1xPA4v7PZoHFFz5YAhbv61gHFn/QtAOs/6zWIbC4vOoZsHih/DUw/0fJfTDfK/8lWJ25+GeweKfgXxB9oHQnWyVI/MRmARDtILVOCkQfYAtTAYtHBuiB6AbXH+aVTgAoTkso4AEAAA=="},"shape":[60],"dtype":"float64","order":"little"}],["Variable",["Pacific","Pacific","Pacific","Pacific","Pacific","Pacific","Pacific","Pacific","Pacific","Pacific","Pacific","Pacific","Pacific","Pacific","Pacific","Pacific","Pacific","Pacific","Pacific","Pacific","Pacific","Pacific","Pacific","Pacific","Pacific","Pacific","Pacific","Pacific","Pacific","Pacific","Pacific","Pacific","Pacific","Pacific","Pacific","Pacific","Pacific","Pacific","Pacific","Pacific","Pacific","Pacific","Pacific","Pacific","Pacific","Pacific","Pacific","Pacific","Pacific","Pacific","Pacific","Pacific","Pacific","Pacific","Pacific","Pacific","Pacific","Pacific","Pacific","Pacific"]]]}}},"view":{"type":"object","name":"CDSView","id":"105d4e3d-446e-477a-a4e2-49da10e51ee2","attributes":{"filter":{"type":"object","name":"AllIndices","id":"d1f4958c-8dcd-41f3-a84f-facd9036996d"}}},"glyph":{"type":"object","name":"Line","id":"ac93235f-e28c-482c-9850-45821fd8646c","attributes":{"tags":["apply_ranges"],"x":{"type":"field","field":"DATE OCC"},"y":{"type":"field","field":"Pacific"},"line_color":"#999999","line_width":2}},"selection_glyph":{"type":"object","name":"Line","id":"a634495b-de22-46b1-8fde-b16d745a29d5","attributes":{"tags":["apply_ranges"],"x":{"type":"field","field":"DATE OCC"},"y":{"type":"field","field":"Pacific"},"line_color":"#999999","line_width":2}},"nonselection_glyph":{"type":"object","name":"Line","id":"563fa7c6-d69c-48a3-ba1f-89110a204ae5","attributes":{"tags":["apply_ranges"],"x":{"type":"field","field":"DATE OCC"},"y":{"type":"field","field":"Pacific"},"line_color":"#999999","line_alpha":0.1,"line_width":2}},"muted_glyph":{"type":"object","name":"Line","id":"64b09688-0f87-45d0-81d7-19ac6ec6a011","attributes":{"tags":["apply_ranges"],"x":{"type":"field","field":"DATE OCC"},"y":{"type":"field","field":"Pacific"},"line_color":"#999999","line_alpha":0.2,"line_width":2}}}},{"type":"object","name":"GlyphRenderer","id":"23f56845-133d-4794-918e-5bbb0b9270cc","attributes":{"name":"Rampart","data_source":{"type":"object","name":"ColumnDataSource","id":"0c2983dc-a905-48b0-9f7c-3e59274cfccc","attributes":{"selected":{"type":"object","name":"Selection","id":"c32d1042-6fed-47b5-9990-6cc26c370836","attributes":{"indices":[],"line_indices":[]}},"selection_policy":{"type":"object","name":"UnionRenderers","id":"b73a9de1-08b0-4dde-a851-ed0054738ff2"},"data":{"type":"map","entries":[["DATE OCC",{"type":"ndarray","array":{"type":"bytes","data":"H4sIAAEAAAAA/2NgaMh79rXMiYHhwIEH/0F0g7sZZzmIP9NAGEQ7tN2QAdENNy6pgWiGo1UGYHHxUiuweGa+C1g8TNwPLL5CMAKsf8rORLD4883ZYHHLdaVgOmpjHVjfmtUdYPmZwZPA4q9954D1Xf+6FCyu9WE9WLzm1U6weMakw2Dx3T1nwfqXm1wHi//UewgW99F8DaZzdb6A9e1X+weWX32OvQIk/u+EIIhueFUgDaIP2GSrgsX7U/XB4tW8lmDxs+zOINph13ofsDjPqjCweNySBDBdvzwTrO/SwmKw/D7PWrC4gEs7WN/f1xPA4v7PZoHFFz5YAhbv61gHFn/QtAOs/6zWIbC4vOoZsHih/DUw/0fJfTDfK/8lWJ25+GeweKfgXxB9oHQnWyVI/MRmARDtILVOCkQfYAtTAYtHBuiB6AbXH+aVTgAoTkso4AEAAA=="},"shape":[60],"dtype":"float64","order":"little"}],["Rampart",{"type":"ndarray","array":{"type":"bytes","data":"H4sIAAEAAAAA/zXOSQrCQBBG4T5Dli6EBDMhDomZENHoyoX3P0/eg3LxUQ31V3V9U0p3lHjiEe+a2uGKA0acsMTbXAHnquiZNbNihll3T7hF70Xt0eIMd6xwj3+Yy3HEHma8yxsaDOFH/eAC77Q6k2EHZ//3OfuO/gZ49qtD8AAAAA=="},"shape":[60],"dtype":"uint32","order":"little"}],["DATE_OCC",{"type":"ndarray","array":{"type":"bytes","data":"H4sIAAEAAAAA/2NgaMh79rXMiYHhwIEH/0F0g7sZZzmIP9NAGEQ7tN2QAdENNy6pgWiGo1UGYHHxUiuweGa+C1g8TNwPLL5CMAKsf8rORLD4883ZYHHLdaVgOmpjHVjfmtUdYPmZwZPA4q9954D1Xf+6FCyu9WE9WLzm1U6weMakw2Dx3T1nwfqXm1wHi//UewgW99F8DaZzdb6A9e1X+weWX32OvQIk/u+EIIhueFUgDaIP2GSrgsX7U/XB4tW8lmDxs+zOINph13ofsDjPqjCweNySBDBdvzwTrO/SwmKw/D7PWrC4gEs7WN/f1xPA4v7PZoHFFz5YAhbv61gHFn/QtAOs/6zWIbC4vOoZsHih/DUw/0fJfTDfK/8lWJ25+GeweKfgXxB9oHQnWyVI/MRmARDtILVOCkQfYAtTAYtHBuiB6AbXH+aVTgAoTkso4AEAAA=="},"shape":[60],"dtype":"float64","order":"little"}],["Variable",["Rampart","Rampart","Rampart","Rampart","Rampart","Rampart","Rampart","Rampart","Rampart","Rampart","Rampart","Rampart","Rampart","Rampart","Rampart","Rampart","Rampart","Rampart","Rampart","Rampart","Rampart","Rampart","Rampart","Rampart","Rampart","Rampart","Rampart","Rampart","Rampart","Rampart","Rampart","Rampart","Rampart","Rampart","Rampart","Rampart","Rampart","Rampart","Rampart","Rampart","Rampart","Rampart","Rampart","Rampart","Rampart","Rampart","Rampart","Rampart","Rampart","Rampart","Rampart","Rampart","Rampart","Rampart","Rampart","Rampart","Rampart","Rampart","Rampart","Rampart"]]]}}},"view":{"type":"object","name":"CDSView","id":"e5f67f8a-eeff-4f84-b253-7eaa91f3e281","attributes":{"filter":{"type":"object","name":"AllIndices","id":"63da72ad-1e94-4a60-8538-6aee89903be2"}}},"glyph":{"type":"object","name":"Line","id":"319f36ae-23d2-49a0-803a-f887f95a3333","attributes":{"tags":["apply_ranges"],"x":{"type":"field","field":"DATE OCC"},"y":{"type":"field","field":"Rampart"},"line_color":"#999999","line_width":2}},"selection_glyph":{"type":"object","name":"Line","id":"03508b20-4c76-4797-a52b-a2e6f80fcc8e","attributes":{"tags":["apply_ranges"],"x":{"type":"field","field":"DATE OCC"},"y":{"type":"field","field":"Rampart"},"line_color":"#999999","line_width":2}},"nonselection_glyph":{"type":"object","name":"Line","id":"a93edcae-64f8-466d-a988-2ddfa96e6b44","attributes":{"tags":["apply_ranges"],"x":{"type":"field","field":"DATE OCC"},"y":{"type":"field","field":"Rampart"},"line_color":"#999999","line_alpha":0.1,"line_width":2}},"muted_glyph":{"type":"object","name":"Line","id":"e2414587-bd99-4428-b500-5434ee2a87b1","attributes":{"tags":["apply_ranges"],"x":{"type":"field","field":"DATE OCC"},"y":{"type":"field","field":"Rampart"},"line_color":"#999999","line_alpha":0.2,"line_width":2}}}},{"type":"object","name":"GlyphRenderer","id":"edba83b2-87a9-49a1-b0b1-9663b619ade9","attributes":{"name":"Topanga","data_source":{"type":"object","name":"ColumnDataSource","id":"3c8be80e-2300-4c37-a980-f699708d02cc","attributes":{"selected":{"type":"object","name":"Selection","id":"00300adc-7a78-4704-9001-e300a53b9689","attributes":{"indices":[],"line_indices":[]}},"selection_policy":{"type":"object","name":"UnionRenderers","id":"b8973f0c-ff7e-481e-98f4-30eaa0eb9059"},"data":{"type":"map","entries":[["DATE OCC",{"type":"ndarray","array":{"type":"bytes","data":"H4sIAAEAAAAA/2NgaMh79rXMiYHhwIEH/0F0g7sZZzmIP9NAGEQ7tN2QAdENNy6pgWiGo1UGYHHxUiuweGa+C1g8TNwPLL5CMAKsf8rORLD4883ZYHHLdaVgOmpjHVjfmtUdYPmZwZPA4q9954D1Xf+6FCyu9WE9WLzm1U6weMakw2Dx3T1nwfqXm1wHi//UewgW99F8DaZzdb6A9e1X+weWX32OvQIk/u+EIIhueFUgDaIP2GSrgsX7U/XB4tW8lmDxs+zOINph13ofsDjPqjCweNySBDBdvzwTrO/SwmKw/D7PWrC4gEs7WN/f1xPA4v7PZoHFFz5YAhbv61gHFn/QtAOs/6zWIbC4vOoZsHih/DUw/0fJfTDfK/8lWJ25+GeweKfgXxB9oHQnWyVI/MRmARDtILVOCkQfYAtTAYtHBuiB6AbXH+aVTgAoTkso4AEAAA=="},"shape":[60],"dtype":"float64","order":"little"}],["Topanga",{"type":"ndarray","array":{"type":"bytes","data":"H4sIAAEAAAAA/03O2QqCUBRA0fsJQighYSlqWhENkGj50Gv//0HuDVfoYXHucKYxhFDjggpPDPHeEov41hNnvOG5wwl3nP8cOY+w9osr7OkM828wZ4sdmvh+IJZwhxz29M8+1rnHHi988MOEB8xdd7PWuhT2d06CDBssYlXhCvAAAAA="},"shape":[60],"dtype":"uint32","order":"little"}],["DATE_OCC",{"type":"ndarray","array":{"type":"bytes","data":"H4sIAAEAAAAA/2NgaMh79rXMiYHhwIEH/0F0g7sZZzmIP9NAGEQ7tN2QAdENNy6pgWiGo1UGYHHxUiuweGa+C1g8TNwPLL5CMAKsf8rORLD4883ZYHHLdaVgOmpjHVjfmtUdYPmZwZPA4q9954D1Xf+6FCyu9WE9WLzm1U6weMakw2Dx3T1nwfqXm1wHi//UewgW99F8DaZzdb6A9e1X+weWX32OvQIk/u+EIIhueFUgDaIP2GSrgsX7U/XB4tW8lmDxs+zOINph13ofsDjPqjCweNySBDBdvzwTrO/SwmKw/D7PWrC4gEs7WN/f1xPA4v7PZoHFFz5YAhbv61gHFn/QtAOs/6zWIbC4vOoZsHih/DUw/0fJfTDfK/8lWJ25+GeweKfgXxB9oHQnWyVI/MRmARDtILVOCkQfYAtTAYtHBuiB6AbXH+aVTgAoTkso4AEAAA=="},"shape":[60],"dtype":"float64","order":"little"}],["Variable",["Topanga","Topanga","Topanga","Topanga","Topanga","Topanga","Topanga","Topanga","Topanga","Topanga","Topanga","Topanga","Topanga","Topanga","Topanga","Topanga","Topanga","Topanga","Topanga","Topanga","Topanga","Topanga","Topanga","Topanga","Topanga","Topanga","Topanga","Topanga","Topanga","Topanga","Topanga","Topanga","Topanga","Topanga","Topanga","Topanga","Topanga","Topanga","Topanga","Topanga","Topanga","Topanga","Topanga","Topanga","Topanga","Topanga","Topanga","Topanga","Topanga","Topanga","Topanga","Topanga","Topanga","Topanga","Topanga","Topanga","Topanga","Topanga","Topanga","Topanga"]]]}}},"view":{"type":"object","name":"CDSView","id":"741065d6-9552-496c-b3fb-5118b637fe24","attributes":{"filter":{"type":"object","name":"AllIndices","id":"31f2a3a4-5d0a-42fe-be48-ff6f10913f7f"}}},"glyph":{"type":"object","name":"Line","id":"acc2c991-d40d-4fe1-8f34-4825845a0b38","attributes":{"tags":["apply_ranges"],"x":{"type":"field","field":"DATE OCC"},"y":{"type":"field","field":"Topanga"},"line_color":"#999999","line_width":2}},"selection_glyph":{"type":"object","name":"Line","id":"b4af5d25-fe28-454e-a3b7-6e36cb03d147","attributes":{"tags":["apply_ranges"],"x":{"type":"field","field":"DATE OCC"},"y":{"type":"field","field":"Topanga"},"line_color":"#999999","line_width":2}},"nonselection_glyph":{"type":"object","name":"Line","id":"f77a390d-ee96-41f5-87ca-6a373981a271","attributes":{"tags":["apply_ranges"],"x":{"type":"field","field":"DATE OCC"},"y":{"type":"field","field":"Topanga"},"line_color":"#999999","line_alpha":0.1,"line_width":2}},"muted_glyph":{"type":"object","name":"Line","id":"c772a731-a516-4d42-8d56-01aa815f4fab","attributes":{"tags":["apply_ranges"],"x":{"type":"field","field":"DATE OCC"},"y":{"type":"field","field":"Topanga"},"line_color":"#999999","line_alpha":0.2,"line_width":2}}}},{"type":"object","name":"GlyphRenderer","id":"df83776f-fcc5-4468-aab4-abe36c68f524","attributes":{"name":"West LA","data_source":{"type":"object","name":"ColumnDataSource","id":"70d120e8-116a-42b2-abfb-c4fc902b97e8","attributes":{"selected":{"type":"object","name":"Selection","id":"e30aae13-1e46-4237-9e33-788b379dbe84","attributes":{"indices":[],"line_indices":[]}},"selection_policy":{"type":"object","name":"UnionRenderers","id":"ba3eab55-1ab0-4200-8371-c68854326565"},"data":{"type":"map","entries":[["DATE OCC",{"type":"ndarray","array":{"type":"bytes","data":"H4sIAAEAAAAA/2NgaMh79rXMiYHhwIEH/0F0g7sZZzmIP9NAGEQ7tN2QAdENNy6pgWiGo1UGYHHxUiuweGa+C1g8TNwPLL5CMAKsf8rORLD4883ZYHHLdaVgOmpjHVjfmtUdYPmZwZPA4q9954D1Xf+6FCyu9WE9WLzm1U6weMakw2Dx3T1nwfqXm1wHi//UewgW99F8DaZzdb6A9e1X+weWX32OvQIk/u+EIIhueFUgDaIP2GSrgsX7U/XB4tW8lmDxs+zOINph13ofsDjPqjCweNySBDBdvzwTrO/SwmKw/D7PWrC4gEs7WN/f1xPA4v7PZoHFFz5YAhbv61gHFn/QtAOs/6zWIbC4vOoZsHih/DUw/0fJfTDfK/8lWJ25+GeweKfgXxB9oHQnWyVI/MRmARDtILVOCkQfYAtTAYtHBuiB6AbXH+aVTgAoTkso4AEAAA=="},"shape":[60],"dtype":"float64","order":"little"}],["West LA",{"type":"ndarray","array":{"type":"bytes","data":"H4sIAAEAAAAA/zXOTQuCUBCF4bt3LxS5cNGmQEmUSPOr1EIXCuK2//8zeg+Mi4ezmHvPzOqcq3BHjzcWNMgQYcKIzcw270gpLB9kjRf0Z8AXe+/H5upNESMx2v+E9qtHnSG0/wLNG7T4QTeW0PscNxxxMFfSxxkBTvDwB1podI7wAAAA"},"shape":[60],"dtype":"uint32","order":"little"}],["DATE_OCC",{"type":"ndarray","array":{"type":"bytes","data":"H4sIAAEAAAAA/2NgaMh79rXMiYHhwIEH/0F0g7sZZzmIP9NAGEQ7tN2QAdENNy6pgWiGo1UGYHHxUiuweGa+C1g8TNwPLL5CMAKsf8rORLD4883ZYHHLdaVgOmpjHVjfmtUdYPmZwZPA4q9954D1Xf+6FCyu9WE9WLzm1U6weMakw2Dx3T1nwfqXm1wHi//UewgW99F8DaZzdb6A9e1X+weWX32OvQIk/u+EIIhueFUgDaIP2GSrgsX7U/XB4tW8lmDxs+zOINph13ofsDjPqjCweNySBDBdvzwTrO/SwmKw/D7PWrC4gEs7WN/f1xPA4v7PZoHFFz5YAhbv61gHFn/QtAOs/6zWIbC4vOoZsHih/DUw/0fJfTDfK/8lWJ25+GeweKfgXxB9oHQnWyVI/MRmARDtILVOCkQfYAtTAYtHBuiB6AbXH+aVTgAoTkso4AEAAA=="},"shape":[60],"dtype":"float64","order":"little"}],["West_LA",{"type":"ndarray","array":{"type":"bytes","data":"H4sIAAEAAAAA/zXOTQuCUBCF4bt3LxS5cNGmQEmUSPOr1EIXCuK2//8zeg+Mi4ezmHvPzOqcq3BHjzcWNMgQYcKIzcw270gpLB9kjRf0Z8AXe+/H5upNESMx2v+E9qtHnSG0/wLNG7T4QTeW0PscNxxxMFfSxxkBTvDwB1podI7wAAAA"},"shape":[60],"dtype":"uint32","order":"little"}],["Variable",["West LA","West LA","West LA","West LA","West LA","West LA","West LA","West LA","West LA","West LA","West LA","West LA","West LA","West LA","West LA","West LA","West LA","West LA","West LA","West LA","West LA","West LA","West LA","West LA","West LA","West LA","West LA","West LA","West LA","West LA","West LA","West LA","West LA","West LA","West LA","West LA","West LA","West LA","West LA","West LA","West LA","West LA","West LA","West LA","West LA","West LA","West LA","West LA","West LA","West LA","West LA","West LA","West LA","West LA","West LA","West LA","West LA","West LA","West LA","West LA"]]]}}},"view":{"type":"object","name":"CDSView","id":"ee9d7dae-406b-4dc5-ac9f-8f946de1bceb","attributes":{"filter":{"type":"object","name":"AllIndices","id":"120e7d32-f393-42a1-b33a-4453e59a8291"}}},"glyph":{"type":"object","name":"Line","id":"3fc480ab-5845-4adf-bed1-e7cc38a10e4d","attributes":{"tags":["apply_ranges"],"x":{"type":"field","field":"DATE OCC"},"y":{"type":"field","field":"West LA"},"line_color":"#999999","line_width":2}},"selection_glyph":{"type":"object","name":"Line","id":"abc9f1c5-76e5-4753-8b63-609c7accf9a4","attributes":{"tags":["apply_ranges"],"x":{"type":"field","field":"DATE OCC"},"y":{"type":"field","field":"West LA"},"line_color":"#999999","line_width":2}},"nonselection_glyph":{"type":"object","name":"Line","id":"d5ce5269-9f3c-4c3a-b629-bb350755ff09","attributes":{"tags":["apply_ranges"],"x":{"type":"field","field":"DATE OCC"},"y":{"type":"field","field":"West LA"},"line_color":"#999999","line_alpha":0.1,"line_width":2}},"muted_glyph":{"type":"object","name":"Line","id":"4782c7e6-53e5-4ea7-aace-207ffb8e2fef","attributes":{"tags":["apply_ranges"],"x":{"type":"field","field":"DATE OCC"},"y":{"type":"field","field":"West LA"},"line_color":"#999999","line_alpha":0.2,"line_width":2}}}},{"type":"object","name":"GlyphRenderer","id":"8c60e991-77ce-4218-a2e7-4031e21b17b1","attributes":{"name":"Foothill","data_source":{"type":"object","name":"ColumnDataSource","id":"1186cca3-248b-43d5-9146-661c2853ef23","attributes":{"selected":{"type":"object","name":"Selection","id":"f3d91041-d735-410e-82eb-94865aacb718","attributes":{"indices":[],"line_indices":[]}},"selection_policy":{"type":"object","name":"UnionRenderers","id":"e7ccb596-b1c9-4b39-8837-d4b2b768ade9"},"data":{"type":"map","entries":[["DATE OCC",{"type":"ndarray","array":{"type":"bytes","data":"H4sIAAEAAAAA/2NgaMh79rXMiYHhwIEH/0F0g7sZZzmIP9NAGEQ7tN2QAdENNy6pgWiGo1UGYHHxUiuweGa+C1g8TNwPLL5CMAKsf8rORLD4883ZYHHLdaVgOmpjHVjfmtUdYPmZwZPA4q9954D1Xf+6FCyu9WE9WLzm1U6weMakw2Dx3T1nwfqXm1wHi//UewgW99F8DaZzdb6A9e1X+weWX32OvQIk/u+EIIhueFUgDaIP2GSrgsX7U/XB4tW8lmDxs+zOINph13ofsDjPqjCweNySBDBdvzwTrO/SwmKw/D7PWrC4gEs7WN/f1xPA4v7PZoHFFz5YAhbv61gHFn/QtAOs/6zWIbC4vOoZsHih/DUw/0fJfTDfK/8lWJ25+GeweKfgXxB9oHQnWyVI/MRmARDtILVOCkQfYAtTAYtHBuiB6AbXH+aVTgAoTkso4AEAAA=="},"shape":[60],"dtype":"float64","order":"little"}],["Foothill",{"type":"ndarray","array":{"type":"bytes","data":"H4sIAAEAAAAA/zWOyQqEQBBD+yJz8KDjMu6iYsMo/v/3+QLpwyNVJJ2uGEL4wwWz5wMVFTTQwWZue5P3E92h9K6OFgazohF671K9la83P1B+BHU9UED6W17tTJp1j/LqUV+6cWGWp3wO6vlaP2gGL36l3wjwAAAA"},"shape":[60],"dtype":"uint32","order":"little"}],["DATE_OCC",{"type":"ndarray","array":{"type":"bytes","data":"H4sIAAEAAAAA/2NgaMh79rXMiYHhwIEH/0F0g7sZZzmIP9NAGEQ7tN2QAdENNy6pgWiGo1UGYHHxUiuweGa+C1g8TNwPLL5CMAKsf8rORLD4883ZYHHLdaVgOmpjHVjfmtUdYPmZwZPA4q9954D1Xf+6FCyu9WE9WLzm1U6weMakw2Dx3T1nwfqXm1wHi//UewgW99F8DaZzdb6A9e1X+weWX32OvQIk/u+EIIhueFUgDaIP2GSrgsX7U/XB4tW8lmDxs+zOINph13ofsDjPqjCweNySBDBdvzwTrO/SwmKw/D7PWrC4gEs7WN/f1xPA4v7PZoHFFz5YAhbv61gHFn/QtAOs/6zWIbC4vOoZsHih/DUw/0fJfTDfK/8lWJ25+GeweKfgXxB9oHQnWyVI/MRmARDtILVOCkQfYAtTAYtHBuiB6AbXH+aVTgAoTkso4AEAAA=="},"shape":[60],"dtype":"float64","order":"little"}],["Variable",["Foothill","Foothill","Foothill","Foothill","Foothill","Foothill","Foothill","Foothill","Foothill","Foothill","Foothill","Foothill","Foothill","Foothill","Foothill","Foothill","Foothill","Foothill","Foothill","Foothill","Foothill","Foothill","Foothill","Foothill","Foothill","Foothill","Foothill","Foothill","Foothill","Foothill","Foothill","Foothill","Foothill","Foothill","Foothill","Foothill","Foothill","Foothill","Foothill","Foothill","Foothill","Foothill","Foothill","Foothill","Foothill","Foothill","Foothill","Foothill","Foothill","Foothill","Foothill","Foothill","Foothill","Foothill","Foothill","Foothill","Foothill","Foothill","Foothill","Foothill"]]]}}},"view":{"type":"object","name":"CDSView","id":"2654a324-ce63-4b1a-97d1-cbdfeb417851","attributes":{"filter":{"type":"object","name":"AllIndices","id":"bbef19a5-8453-440d-b7fe-e25793a0553e"}}},"glyph":{"type":"object","name":"Line","id":"1e48f99e-344a-49ce-a45a-1b6a27e86084","attributes":{"tags":["apply_ranges"],"x":{"type":"field","field":"DATE OCC"},"y":{"type":"field","field":"Foothill"},"line_color":"#999999","line_width":2}},"selection_glyph":{"type":"object","name":"Line","id":"7d4927b5-6e08-4193-8a93-141f18955c10","attributes":{"tags":["apply_ranges"],"x":{"type":"field","field":"DATE OCC"},"y":{"type":"field","field":"Foothill"},"line_color":"#999999","line_width":2}},"nonselection_glyph":{"type":"object","name":"Line","id":"57bbb48b-8c0e-4f4d-9fa4-49f8fbe9d916","attributes":{"tags":["apply_ranges"],"x":{"type":"field","field":"DATE OCC"},"y":{"type":"field","field":"Foothill"},"line_color":"#999999","line_alpha":0.1,"line_width":2}},"muted_glyph":{"type":"object","name":"Line","id":"8e94e667-f1fe-4777-8dc0-b8c8b2d48d28","attributes":{"tags":["apply_ranges"],"x":{"type":"field","field":"DATE OCC"},"y":{"type":"field","field":"Foothill"},"line_color":"#999999","line_alpha":0.2,"line_width":2}}}},{"type":"object","name":"GlyphRenderer","id":"cc92fa76-fffd-4124-b82e-263684e29f4a","attributes":{"name":"Van Nuys","data_source":{"type":"object","name":"ColumnDataSource","id":"308c32d2-5fc5-417d-bb2a-3b6642d428a7","attributes":{"selected":{"type":"object","name":"Selection","id":"a4d17735-7626-499f-b20a-ca8019ab2a2b","attributes":{"indices":[],"line_indices":[]}},"selection_policy":{"type":"object","name":"UnionRenderers","id":"d12e3e1d-55b4-4db8-8d80-205e3dbd9efe"},"data":{"type":"map","entries":[["DATE OCC",{"type":"ndarray","array":{"type":"bytes","data":"H4sIAAEAAAAA/2NgaMh79rXMiYHhwIEH/0F0g7sZZzmIP9NAGEQ7tN2QAdENNy6pgWiGo1UGYHHxUiuweGa+C1g8TNwPLL5CMAKsf8rORLD4883ZYHHLdaVgOmpjHVjfmtUdYPmZwZPA4q9954D1Xf+6FCyu9WE9WLzm1U6weMakw2Dx3T1nwfqXm1wHi//UewgW99F8DaZzdb6A9e1X+weWX32OvQIk/u+EIIhueFUgDaIP2GSrgsX7U/XB4tW8lmDxs+zOINph13ofsDjPqjCweNySBDBdvzwTrO/SwmKw/D7PWrC4gEs7WN/f1xPA4v7PZoHFFz5YAhbv61gHFn/QtAOs/6zWIbC4vOoZsHih/DUw/0fJfTDfK/8lWJ25+GeweKfgXxB9oHQnWyVI/MRmARDtILVOCkQfYAtTAYtHBuiB6AbXH+aVTgAoTkso4AEAAA=="},"shape":[60],"dtype":"float64","order":"little"}],["Van Nuys",{"type":"ndarray","array":{"type":"bytes","data":"H4sIAAEAAAAA/03OSQqDQBCF4b6A4MaFYBwwaIJzkCg4EBAPkPtfJv+DCrj4eFV0FdWLc27Eio/ll9xx4HXJirpHa+/qJzzxr9Wf6LDYXGYzM6ndGg/k0LxuKCWFbjdIEOIO7ZS4QfNv6C8DCmzQTgzfeGSAyFL1D5Yg90DwAAAA"},"shape":[60],"dtype":"uint32","order":"little"}],["DATE_OCC",{"type":"ndarray","array":{"type":"bytes","data":"H4sIAAEAAAAA/2NgaMh79rXMiYHhwIEH/0F0g7sZZzmIP9NAGEQ7tN2QAdENNy6pgWiGo1UGYHHxUiuweGa+C1g8TNwPLL5CMAKsf8rORLD4883ZYHHLdaVgOmpjHVjfmtUdYPmZwZPA4q9954D1Xf+6FCyu9WE9WLzm1U6weMakw2Dx3T1nwfqXm1wHi//UewgW99F8DaZzdb6A9e1X+weWX32OvQIk/u+EIIhueFUgDaIP2GSrgsX7U/XB4tW8lmDxs+zOINph13ofsDjPqjCweNySBDBdvzwTrO/SwmKw/D7PWrC4gEs7WN/f1xPA4v7PZoHFFz5YAhbv61gHFn/QtAOs/6zWIbC4vOoZsHih/DUw/0fJfTDfK/8lWJ25+GeweKfgXxB9oHQnWyVI/MRmARDtILVOCkQfYAtTAYtHBuiB6AbXH+aVTgAoTkso4AEAAA=="},"shape":[60],"dtype":"float64","order":"little"}],["Van_Nuys",{"type":"ndarray","array":{"type":"bytes","data":"H4sIAAEAAAAA/03OSQqDQBCF4b6A4MaFYBwwaIJzkCg4EBAPkPtfJv+DCrj4eFV0FdWLc27Eio/ll9xx4HXJirpHa+/qJzzxr9Wf6LDYXGYzM6ndGg/k0LxuKCWFbjdIEOIO7ZS4QfNv6C8DCmzQTgzfeGSAyFL1D5Yg90DwAAAA"},"shape":[60],"dtype":"uint32","order":"little"}],["Variable",["Van Nuys","Van Nuys","Van Nuys","Van Nuys","Van Nuys","Van Nuys","Van Nuys","Van Nuys","Van Nuys","Van Nuys","Van Nuys","Van Nuys","Van Nuys","Van Nuys","Van Nuys","Van Nuys","Van Nuys","Van Nuys","Van Nuys","Van Nuys","Van Nuys","Van Nuys","Van Nuys","Van Nuys","Van Nuys","Van Nuys","Van Nuys","Van Nuys","Van Nuys","Van Nuys","Van Nuys","Van Nuys","Van Nuys","Van Nuys","Van Nuys","Van Nuys","Van Nuys","Van Nuys","Van Nuys","Van Nuys","Van Nuys","Van Nuys","Van Nuys","Van Nuys","Van Nuys","Van Nuys","Van Nuys","Van Nuys","Van Nuys","Van Nuys","Van Nuys","Van Nuys","Van Nuys","Van Nuys","Van Nuys","Van Nuys","Van Nuys","Van Nuys","Van Nuys","Van Nuys"]]]}}},"view":{"type":"object","name":"CDSView","id":"a774550b-f819-4c39-b34b-9d80e2be3d06","attributes":{"filter":{"type":"object","name":"AllIndices","id":"df6c5c7e-81c0-4e5b-9465-6d3daebc9540"}}},"glyph":{"type":"object","name":"Line","id":"9b716334-2e08-45bb-b535-83fe2e911a92","attributes":{"tags":["apply_ranges"],"x":{"type":"field","field":"DATE OCC"},"y":{"type":"field","field":"Van Nuys"},"line_color":"#999999","line_width":2}},"selection_glyph":{"type":"object","name":"Line","id":"3e0766b0-55a1-4e73-9d6e-3827bd97796f","attributes":{"tags":["apply_ranges"],"x":{"type":"field","field":"DATE OCC"},"y":{"type":"field","field":"Van Nuys"},"line_color":"#999999","line_width":2}},"nonselection_glyph":{"type":"object","name":"Line","id":"01e27c66-1729-4641-af9c-f0994ff74798","attributes":{"tags":["apply_ranges"],"x":{"type":"field","field":"DATE OCC"},"y":{"type":"field","field":"Van Nuys"},"line_color":"#999999","line_alpha":0.1,"line_width":2}},"muted_glyph":{"type":"object","name":"Line","id":"beae5ed3-1106-47be-9154-49f6d5117190","attributes":{"tags":["apply_ranges"],"x":{"type":"field","field":"DATE OCC"},"y":{"type":"field","field":"Van Nuys"},"line_color":"#999999","line_alpha":0.2,"line_width":2}}}},{"type":"object","name":"GlyphRenderer","id":"4f3bbbaa-fc78-465e-9245-ce7d12709a96","attributes":{"name":"Wilshire","data_source":{"type":"object","name":"ColumnDataSource","id":"289ed5a5-054a-4b36-97e8-641279e94cbc","attributes":{"selected":{"type":"object","name":"Selection","id":"d6de6d6a-df8b-4b26-8ec7-be0a6b9caee4","attributes":{"indices":[],"line_indices":[]}},"selection_policy":{"type":"object","name":"UnionRenderers","id":"fac1befa-69c5-4429-8e2e-7943e8cd0c75"},"data":{"type":"map","entries":[["DATE OCC",{"type":"ndarray","array":{"type":"bytes","data":"H4sIAAEAAAAA/2NgaMh79rXMiYHhwIEH/0F0g7sZZzmIP9NAGEQ7tN2QAdENNy6pgWiGo1UGYHHxUiuweGa+C1g8TNwPLL5CMAKsf8rORLD4883ZYHHLdaVgOmpjHVjfmtUdYPmZwZPA4q9954D1Xf+6FCyu9WE9WLzm1U6weMakw2Dx3T1nwfqXm1wHi//UewgW99F8DaZzdb6A9e1X+weWX32OvQIk/u+EIIhueFUgDaIP2GSrgsX7U/XB4tW8lmDxs+zOINph13ofsDjPqjCweNySBDBdvzwTrO/SwmKw/D7PWrC4gEs7WN/f1xPA4v7PZoHFFz5YAhbv61gHFn/QtAOs/6zWIbC4vOoZsHih/DUw/0fJfTDfK/8lWJ25+GeweKfgXxB9oHQnWyVI/MRmARDtILVOCkQfYAtTAYtHBuiB6AbXH+aVTgAoTkso4AEAAA=="},"shape":[60],"dtype":"float64","order":"little"}],["Wilshire",{"type":"ndarray","array":{"type":"bytes","data":"H4sIAAEAAAAA/03PSwqDQBCE4bmIoAujqBBfiS8CGgQFQVcKuf9F8hf0wsVHTeHYrbtz7kBtCrJEixgREus9+cYAnTN8UOGFFDk6zNiw43vruqfZIzRLu57QHvUGel9zdNb9xVzkitOe/axPpHbpe0ME0H9opmf9Qfr4A2U0pqvwAAAA"},"shape":[60],"dtype":"uint32","order":"little"}],["DATE_OCC",{"type":"ndarray","array":{"type":"bytes","data":"H4sIAAEAAAAA/2NgaMh79rXMiYHhwIEH/0F0g7sZZzmIP9NAGEQ7tN2QAdENNy6pgWiGo1UGYHHxUiuweGa+C1g8TNwPLL5CMAKsf8rORLD4883ZYHHLdaVgOmpjHVjfmtUdYPmZwZPA4q9954D1Xf+6FCyu9WE9WLzm1U6weMakw2Dx3T1nwfqXm1wHi//UewgW99F8DaZzdb6A9e1X+weWX32OvQIk/u+EIIhueFUgDaIP2GSrgsX7U/XB4tW8lmDxs+zOINph13ofsDjPqjCweNySBDBdvzwTrO/SwmKw/D7PWrC4gEs7WN/f1xPA4v7PZoHFFz5YAhbv61gHFn/QtAOs/6zWIbC4vOoZsHih/DUw/0fJfTDfK/8lWJ25+GeweKfgXxB9oHQnWyVI/MRmARDtILVOCkQfYAtTAYtHBuiB6AbXH+aVTgAoTkso4AEAAA=="},"shape":[60],"dtype":"float64","order":"little"}],["Variable",["Wilshire","Wilshire","Wilshire","Wilshire","Wilshire","Wilshire","Wilshire","Wilshire","Wilshire","Wilshire","Wilshire","Wilshire","Wilshire","Wilshire","Wilshire","Wilshire","Wilshire","Wilshire","Wilshire","Wilshire","Wilshire","Wilshire","Wilshire","Wilshire","Wilshire","Wilshire","Wilshire","Wilshire","Wilshire","Wilshire","Wilshire","Wilshire","Wilshire","Wilshire","Wilshire","Wilshire","Wilshire","Wilshire","Wilshire","Wilshire","Wilshire","Wilshire","Wilshire","Wilshire","Wilshire","Wilshire","Wilshire","Wilshire","Wilshire","Wilshire","Wilshire","Wilshire","Wilshire","Wilshire","Wilshire","Wilshire","Wilshire","Wilshire","Wilshire","Wilshire"]]]}}},"view":{"type":"object","name":"CDSView","id":"72e63f2e-8503-484b-8772-467f9c162764","attributes":{"filter":{"type":"object","name":"AllIndices","id":"d477cf55-791e-4c11-830c-67b91953a05b"}}},"glyph":{"type":"object","name":"Line","id":"b84427b3-0f00-4f85-9ecb-5ac505dff2cf","attributes":{"tags":["apply_ranges"],"x":{"type":"field","field":"DATE OCC"},"y":{"type":"field","field":"Wilshire"},"line_color":"#999999","line_width":2}},"selection_glyph":{"type":"object","name":"Line","id":"200d1a12-f812-4ff1-be56-f98ffb1fef9f","attributes":{"tags":["apply_ranges"],"x":{"type":"field","field":"DATE OCC"},"y":{"type":"field","field":"Wilshire"},"line_color":"#999999","line_width":2}},"nonselection_glyph":{"type":"object","name":"Line","id":"a5489450-d1de-4095-b95b-8986394414b9","attributes":{"tags":["apply_ranges"],"x":{"type":"field","field":"DATE OCC"},"y":{"type":"field","field":"Wilshire"},"line_color":"#999999","line_alpha":0.1,"line_width":2}},"muted_glyph":{"type":"object","name":"Line","id":"4fb6a31e-3773-4bd7-a768-c5401148bb65","attributes":{"tags":["apply_ranges"],"x":{"type":"field","field":"DATE OCC"},"y":{"type":"field","field":"Wilshire"},"line_color":"#999999","line_alpha":0.2,"line_width":2}}}},{"type":"object","name":"GlyphRenderer","id":"3242f3df-9b45-41fb-b9ad-d4b53657bfea","attributes":{"name":"Northeast","data_source":{"type":"object","name":"ColumnDataSource","id":"1676cc15-9027-42ce-9225-55e10d92a027","attributes":{"selected":{"type":"object","name":"Selection","id":"57e1451d-eb48-45ff-9705-4479bc4c1c6f","attributes":{"indices":[],"line_indices":[]}},"selection_policy":{"type":"object","name":"UnionRenderers","id":"ba15c2df-8fff-4370-b102-bd5e1d772d4f"},"data":{"type":"map","entries":[["DATE OCC",{"type":"ndarray","array":{"type":"bytes","data":"H4sIAAEAAAAA/2NgaMh79rXMiYHhwIEH/0F0g7sZZzmIP9NAGEQ7tN2QAdENNy6pgWiGo1UGYHHxUiuweGa+C1g8TNwPLL5CMAKsf8rORLD4883ZYHHLdaVgOmpjHVjfmtUdYPmZwZPA4q9954D1Xf+6FCyu9WE9WLzm1U6weMakw2Dx3T1nwfqXm1wHi//UewgW99F8DaZzdb6A9e1X+weWX32OvQIk/u+EIIhueFUgDaIP2GSrgsX7U/XB4tW8lmDxs+zOINph13ofsDjPqjCweNySBDBdvzwTrO/SwmKw/D7PWrC4gEs7WN/f1xPA4v7PZoHFFz5YAhbv61gHFn/QtAOs/6zWIbC4vOoZsHih/DUw/0fJfTDfK/8lWJ25+GeweKfgXxB9oHQnWyVI/MRmARDtILVOCkQfYAtTAYtHBuiB6AbXH+aVTgAoTkso4AEAAA=="},"shape":[60],"dtype":"float64","order":"little"}],["Northeast",{"type":"ndarray","array":{"type":"bytes","data":"H4sIAAEAAAAA/y3O2wqCQBSF4XkNFW9CBS0PeIxMEZUig+j9n8Z/wb74WMPMPszfOffBYR7kiBoebggRo7e3jLxDOeAK1Vd21t1qNS+ywYwFO3T3hHaJelOo54sfOrSWqpmwYIPm6/0NzdbeEhEKBMiR4AL9U7N8nDsndM7wAAAA"},"shape":[60],"dtype":"uint32","order":"little"}],["DATE_OCC",{"type":"ndarray","array":{"type":"bytes","data":"H4sIAAEAAAAA/2NgaMh79rXMiYHhwIEH/0F0g7sZZzmIP9NAGEQ7tN2QAdENNy6pgWiGo1UGYHHxUiuweGa+C1g8TNwPLL5CMAKsf8rORLD4883ZYHHLdaVgOmpjHVjfmtUdYPmZwZPA4q9954D1Xf+6FCyu9WE9WLzm1U6weMakw2Dx3T1nwfqXm1wHi//UewgW99F8DaZzdb6A9e1X+weWX32OvQIk/u+EIIhueFUgDaIP2GSrgsX7U/XB4tW8lmDxs+zOINph13ofsDjPqjCweNySBDBdvzwTrO/SwmKw/D7PWrC4gEs7WN/f1xPA4v7PZoHFFz5YAhbv61gHFn/QtAOs/6zWIbC4vOoZsHih/DUw/0fJfTDfK/8lWJ25+GeweKfgXxB9oHQnWyVI/MRmARDtILVOCkQfYAtTAYtHBuiB6AbXH+aVTgAoTkso4AEAAA=="},"shape":[60],"dtype":"float64","order":"little"}],["Variable",["Northeast","Northeast","Northeast","Northeast","Northeast","Northeast","Northeast","Northeast","Northeast","Northeast","Northeast","Northeast","Northeast","Northeast","Northeast","Northeast","Northeast","Northeast","Northeast","Northeast","Northeast","Northeast","Northeast","Northeast","Northeast","Northeast","Northeast","Northeast","Northeast","Northeast","Northeast","Northeast","Northeast","Northeast","Northeast","Northeast","Northeast","Northeast","Northeast","Northeast","Northeast","Northeast","Northeast","Northeast","Northeast","Northeast","Northeast","Northeast","Northeast","Northeast","Northeast","Northeast","Northeast","Northeast","Northeast","Northeast","Northeast","Northeast","Northeast","Northeast"]]]}}},"view":{"type":"object","name":"CDSView","id":"af91e6f4-c715-4ab2-acd2-9878759d464d","attributes":{"filter":{"type":"object","name":"AllIndices","id":"3a74ea24-bab0-47b4-8686-16a68a97b880"}}},"glyph":{"type":"object","name":"Line","id":"9a025e49-2391-4f81-9e95-291220821952","attributes":{"tags":["apply_ranges"],"x":{"type":"field","field":"DATE OCC"},"y":{"type":"field","field":"Northeast"},"line_color":"#999999","line_width":2}},"selection_glyph":{"type":"object","name":"Line","id":"26468186-4360-44c2-8912-e733075f1993","attributes":{"tags":["apply_ranges"],"x":{"type":"field","field":"DATE OCC"},"y":{"type":"field","field":"Northeast"},"line_color":"#999999","line_width":2}},"nonselection_glyph":{"type":"object","name":"Line","id":"2f89cfa6-5c67-47af-9525-65dd0bd13984","attributes":{"tags":["apply_ranges"],"x":{"type":"field","field":"DATE OCC"},"y":{"type":"field","field":"Northeast"},"line_color":"#999999","line_alpha":0.1,"line_width":2}},"muted_glyph":{"type":"object","name":"Line","id":"e134a956-6d2f-4343-8d5f-2c3ae0c72edf","attributes":{"tags":["apply_ranges"],"x":{"type":"field","field":"DATE OCC"},"y":{"type":"field","field":"Northeast"},"line_color":"#999999","line_alpha":0.2,"line_width":2}}}},{"type":"object","name":"GlyphRenderer","id":"a6fd096c-e094-423c-95ea-9d48f2949523","attributes":{"name":"Southeast","data_source":{"type":"object","name":"ColumnDataSource","id":"459dd380-b3f3-49e4-b558-c39181b6e00b","attributes":{"selected":{"type":"object","name":"Selection","id":"48ca7b42-e37a-4f42-b5bc-d645e1117905","attributes":{"indices":[],"line_indices":[]}},"selection_policy":{"type":"object","name":"UnionRenderers","id":"930709e7-4797-4aeb-b297-5b8535630b5f"},"data":{"type":"map","entries":[["DATE OCC",{"type":"ndarray","array":{"type":"bytes","data":"H4sIAAEAAAAA/2NgaMh79rXMiYHhwIEH/0F0g7sZZzmIP9NAGEQ7tN2QAdENNy6pgWiGo1UGYHHxUiuweGa+C1g8TNwPLL5CMAKsf8rORLD4883ZYHHLdaVgOmpjHVjfmtUdYPmZwZPA4q9954D1Xf+6FCyu9WE9WLzm1U6weMakw2Dx3T1nwfqXm1wHi//UewgW99F8DaZzdb6A9e1X+weWX32OvQIk/u+EIIhueFUgDaIP2GSrgsX7U/XB4tW8lmDxs+zOINph13ofsDjPqjCweNySBDBdvzwTrO/SwmKw/D7PWrC4gEs7WN/f1xPA4v7PZoHFFz5YAhbv61gHFn/QtAOs/6zWIbC4vOoZsHih/DUw/0fJfTDfK/8lWJ25+GeweKfgXxB9oHQnWyVI/MRmARDtILVOCkQfYAtTAYtHBuiB6AbXH+aVTgAoTkso4AEAAA=="},"shape":[60],"dtype":"float64","order":"little"}],["Southeast",{"type":"ndarray","array":{"type":"bytes","data":"H4sIAAEAAAAA/zXNyw6CQAxG4dkQRQyiXEQBCQuIMfr+r8c5SV18aafzT+eTUvpiwwtz9NZnnFfqL+YTdQzev7FE9h7Vs/0/d6G/osUDDTqYq+DOHv45xMycM9/4jxn7G9xr1nvfu99a44gzShyQ4YQcBXYPBIFK8AAAAA=="},"shape":[60],"dtype":"uint32","order":"little"}],["DATE_OCC",{"type":"ndarray","array":{"type":"bytes","data":"H4sIAAEAAAAA/2NgaMh79rXMiYHhwIEH/0F0g7sZZzmIP9NAGEQ7tN2QAdENNy6pgWiGo1UGYHHxUiuweGa+C1g8TNwPLL5CMAKsf8rORLD4883ZYHHLdaVgOmpjHVjfmtUdYPmZwZPA4q9954D1Xf+6FCyu9WE9WLzm1U6weMakw2Dx3T1nwfqXm1wHi//UewgW99F8DaZzdb6A9e1X+weWX32OvQIk/u+EIIhueFUgDaIP2GSrgsX7U/XB4tW8lmDxs+zOINph13ofsDjPqjCweNySBDBdvzwTrO/SwmKw/D7PWrC4gEs7WN/f1xPA4v7PZoHFFz5YAhbv61gHFn/QtAOs/6zWIbC4vOoZsHih/DUw/0fJfTDfK/8lWJ25+GeweKfgXxB9oHQnWyVI/MRmARDtILVOCkQfYAtTAYtHBuiB6AbXH+aVTgAoTkso4AEAAA=="},"shape":[60],"dtype":"float64","order":"little"}],["Variable",["Southeast","Southeast","Southeast","Southeast","Southeast","Southeast","Southeast","Southeast","Southeast","Southeast","Southeast","Southeast","Southeast","Southeast","Southeast","Southeast","Southeast","Southeast","Southeast","Southeast","Southeast","Southeast","Southeast","Southeast","Southeast","Southeast","Southeast","Southeast","Southeast","Southeast","Southeast","Southeast","Southeast","Southeast","Southeast","Southeast","Southeast","Southeast","Southeast","Southeast","Southeast","Southeast","Southeast","Southeast","Southeast","Southeast","Southeast","Southeast","Southeast","Southeast","Southeast","Southeast","Southeast","Southeast","Southeast","Southeast","Southeast","Southeast","Southeast","Southeast"]]]}}},"view":{"type":"object","name":"CDSView","id":"ff830159-7dda-4230-8741-0619a8c7f248","attributes":{"filter":{"type":"object","name":"AllIndices","id":"6871bdf7-85f8-49fb-958a-e9b7c4233875"}}},"glyph":{"type":"object","name":"Line","id":"e7f4d674-15d4-4a71-a0ac-1e78ba570f0d","attributes":{"tags":["apply_ranges"],"x":{"type":"field","field":"DATE OCC"},"y":{"type":"field","field":"Southeast"},"line_color":"#999999","line_width":2}},"selection_glyph":{"type":"object","name":"Line","id":"d90dee31-b623-48eb-ac10-0b455ac2df8b","attributes":{"tags":["apply_ranges"],"x":{"type":"field","field":"DATE OCC"},"y":{"type":"field","field":"Southeast"},"line_color":"#999999","line_width":2}},"nonselection_glyph":{"type":"object","name":"Line","id":"71796e0c-59fb-436e-ac45-ff2e81815e2f","attributes":{"tags":["apply_ranges"],"x":{"type":"field","field":"DATE OCC"},"y":{"type":"field","field":"Southeast"},"line_color":"#999999","line_alpha":0.1,"line_width":2}},"muted_glyph":{"type":"object","name":"Line","id":"ee1f117f-4bea-462c-84e7-844f5fe95691","attributes":{"tags":["apply_ranges"],"x":{"type":"field","field":"DATE OCC"},"y":{"type":"field","field":"Southeast"},"line_color":"#999999","line_alpha":0.2,"line_width":2}}}},{"type":"object","name":"GlyphRenderer","id":"48a302c8-f6d3-43d4-bb13-a12f882e2aa2","attributes":{"name":"Southwest","data_source":{"type":"object","name":"ColumnDataSource","id":"093123d6-b721-43ff-99cb-d3ece4403136","attributes":{"selected":{"type":"object","name":"Selection","id":"b9463acd-faaa-4c8f-8634-8cf88514b81a","attributes":{"indices":[],"line_indices":[]}},"selection_policy":{"type":"object","name":"UnionRenderers","id":"e494838c-4ec8-4a3c-ab35-ff11a7d6aae0"},"data":{"type":"map","entries":[["DATE OCC",{"type":"ndarray","array":{"type":"bytes","data":"H4sIAAEAAAAA/2NgaMh79rXMiYHhwIEH/0F0g7sZZzmIP9NAGEQ7tN2QAdENNy6pgWiGo1UGYHHxUiuweGa+C1g8TNwPLL5CMAKsf8rORLD4883ZYHHLdaVgOmpjHVjfmtUdYPmZwZPA4q9954D1Xf+6FCyu9WE9WLzm1U6weMakw2Dx3T1nwfqXm1wHi//UewgW99F8DaZzdb6A9e1X+weWX32OvQIk/u+EIIhueFUgDaIP2GSrgsX7U/XB4tW8lmDxs+zOINph13ofsDjPqjCweNySBDBdvzwTrO/SwmKw/D7PWrC4gEs7WN/f1xPA4v7PZoHFFz5YAhbv61gHFn/QtAOs/6zWIbC4vOoZsHih/DUw/0fJfTDfK/8lWJ25+GeweKfgXxB9oHQnWyVI/MRmARDtILVOCkQfYAtTAYtHBuiB6AbXH+aVTgAoTkso4AEAAA=="},"shape":[60],"dtype":"float64","order":"little"}],["Southwest",{"type":"ndarray","array":{"type":"bytes","data":"H4sIAAEAAAAA/zXOWQ6DMAxF0SyCFsrUSVCmzupf978u7pXMx5EdK/HLL6U04oE/znH+UAc0eOKAEjO+MbPWyOGOKe7cqFfcY95RL9jmZvimQIsjTsE7C/qYu3ePN8x+wf+43zzP9v5125PR+6aCOfY7mLcC5XcPGvAAAAA="},"shape":[60],"dtype":"uint32","order":"little"}],["DATE_OCC",{"type":"ndarray","array":{"type":"bytes","data":"H4sIAAEAAAAA/2NgaMh79rXMiYHhwIEH/0F0g7sZZzmIP9NAGEQ7tN2QAdENNy6pgWiGo1UGYHHxUiuweGa+C1g8TNwPLL5CMAKsf8rORLD4883ZYHHLdaVgOmpjHVjfmtUdYPmZwZPA4q9954D1Xf+6FCyu9WE9WLzm1U6weMakw2Dx3T1nwfqXm1wHi//UewgW99F8DaZzdb6A9e1X+weWX32OvQIk/u+EIIhueFUgDaIP2GSrgsX7U/XB4tW8lmDxs+zOINph13ofsDjPqjCweNySBDBdvzwTrO/SwmKw/D7PWrC4gEs7WN/f1xPA4v7PZoHFFz5YAhbv61gHFn/QtAOs/6zWIbC4vOoZsHih/DUw/0fJfTDfK/8lWJ25+GeweKfgXxB9oHQnWyVI/MRmARDtILVOCkQfYAtTAYtHBuiB6AbXH+aVTgAoTkso4AEAAA=="},"shape":[60],"dtype":"float64","order":"little"}],["Variable",["Southwest","Southwest","Southwest","Southwest","Southwest","Southwest","Southwest","Southwest","Southwest","Southwest","Southwest","Southwest","Southwest","Southwest","Southwest","Southwest","Southwest","Southwest","Southwest","Southwest","Southwest","Southwest","Southwest","Southwest","Southwest","Southwest","Southwest","Southwest","Southwest","Southwest","Southwest","Southwest","Southwest","Southwest","Southwest","Southwest","Southwest","Southwest","Southwest","Southwest","Southwest","Southwest","Southwest","Southwest","Southwest","Southwest","Southwest","Southwest","Southwest","Southwest","Southwest","Southwest","Southwest","Southwest","Southwest","Southwest","Southwest","Southwest","Southwest","Southwest"]]]}}},"view":{"type":"object","name":"CDSView","id":"a8c91da9-90ce-43b1-8abd-0de876811d03","attributes":{"filter":{"type":"object","name":"AllIndices","id":"6a404c41-e792-4e57-b082-ca9ecdff21ee"}}},"glyph":{"type":"object","name":"Line","id":"cc1e02fb-155e-44a7-91f3-143560490583","attributes":{"tags":["apply_ranges"],"x":{"type":"field","field":"DATE OCC"},"y":{"type":"field","field":"Southwest"},"line_color":"#999999","line_width":2}},"selection_glyph":{"type":"object","name":"Line","id":"15be642a-57e2-4597-baa2-7432653403d6","attributes":{"tags":["apply_ranges"],"x":{"type":"field","field":"DATE OCC"},"y":{"type":"field","field":"Southwest"},"line_color":"#999999","line_width":2}},"nonselection_glyph":{"type":"object","name":"Line","id":"339bfa93-1a72-439f-842d-6fda35ffc400","attributes":{"tags":["apply_ranges"],"x":{"type":"field","field":"DATE OCC"},"y":{"type":"field","field":"Southwest"},"line_color":"#999999","line_alpha":0.1,"line_width":2}},"muted_glyph":{"type":"object","name":"Line","id":"a9696999-353d-4358-a8c1-3372467a2a43","attributes":{"tags":["apply_ranges"],"x":{"type":"field","field":"DATE OCC"},"y":{"type":"field","field":"Southwest"},"line_color":"#999999","line_alpha":0.2,"line_width":2}}}},{"type":"object","name":"GlyphRenderer","id":"eaf2362f-c0fd-48fa-8703-a855969edba0","attributes":{"name":"Devonshire","data_source":{"type":"object","name":"ColumnDataSource","id":"2d98c0f6-841b-40c3-9af5-4e7713102a30","attributes":{"selected":{"type":"object","name":"Selection","id":"bea292f4-5c96-4333-9077-719dcf3d4484","attributes":{"indices":[],"line_indices":[]}},"selection_policy":{"type":"object","name":"UnionRenderers","id":"c3eec9f8-0979-48b5-b9bf-bc6dfa07584b"},"data":{"type":"map","entries":[["DATE OCC",{"type":"ndarray","array":{"type":"bytes","data":"H4sIAAEAAAAA/2NgaMh79rXMiYHhwIEH/0F0g7sZZzmIP9NAGEQ7tN2QAdENNy6pgWiGo1UGYHHxUiuweGa+C1g8TNwPLL5CMAKsf8rORLD4883ZYHHLdaVgOmpjHVjfmtUdYPmZwZPA4q9954D1Xf+6FCyu9WE9WLzm1U6weMakw2Dx3T1nwfqXm1wHi//UewgW99F8DaZzdb6A9e1X+weWX32OvQIk/u+EIIhueFUgDaIP2GSrgsX7U/XB4tW8lmDxs+zOINph13ofsDjPqjCweNySBDBdvzwTrO/SwmKw/D7PWrC4gEs7WN/f1xPA4v7PZoHFFz5YAhbv61gHFn/QtAOs/6zWIbC4vOoZsHih/DUw/0fJfTDfK/8lWJ25+GeweKfgXxB9oHQnWyVI/MRmARDtILVOCkQfYAtTAYtHBuiB6AbXH+aVTgAoTkso4AEAAA=="},"shape":[60],"dtype":"float64","order":"little"}],["Devonshire",{"type":"ndarray","array":{"type":"bytes","data":"H4sIAAEAAAAA/y3O3QqCQBCG4b2DDhRBpfwrMyqL8kAUIvCs+7+g3hf24GF24NuZ2UIICybMGPGLdaV2aPHEBTdUuOIR+w/1ixecs8GZ78hsAXO+azhjwAnutJ7hviN6+MfdB5jNYMYZd7jLW317u/0eJczmSNFghwR/b7Kck/AAAAA="},"shape":[60],"dtype":"uint32","order":"little"}],["DATE_OCC",{"type":"ndarray","array":{"type":"bytes","data":"H4sIAAEAAAAA/2NgaMh79rXMiYHhwIEH/0F0g7sZZzmIP9NAGEQ7tN2QAdENNy6pgWiGo1UGYHHxUiuweGa+C1g8TNwPLL5CMAKsf8rORLD4883ZYHHLdaVgOmpjHVjfmtUdYPmZwZPA4q9954D1Xf+6FCyu9WE9WLzm1U6weMakw2Dx3T1nwfqXm1wHi//UewgW99F8DaZzdb6A9e1X+weWX32OvQIk/u+EIIhueFUgDaIP2GSrgsX7U/XB4tW8lmDxs+zOINph13ofsDjPqjCweNySBDBdvzwTrO/SwmKw/D7PWrC4gEs7WN/f1xPA4v7PZoHFFz5YAhbv61gHFn/QtAOs/6zWIbC4vOoZsHih/DUw/0fJfTDfK/8lWJ25+GeweKfgXxB9oHQnWyVI/MRmARDtILVOCkQfYAtTAYtHBuiB6AbXH+aVTgAoTkso4AEAAA=="},"shape":[60],"dtype":"float64","order":"little"}],["Variable",["Devonshire","Devonshire","Devonshire","Devonshire","Devonshire","Devonshire","Devonshire","Devonshire","Devonshire","Devonshire","Devonshire","Devonshire","Devonshire","Devonshire","Devonshire","Devonshire","Devonshire","Devonshire","Devonshire","Devonshire","Devonshire","Devonshire","Devonshire","Devonshire","Devonshire","Devonshire","Devonshire","Devonshire","Devonshire","Devonshire","Devonshire","Devonshire","Devonshire","Devonshire","Devonshire","Devonshire","Devonshire","Devonshire","Devonshire","Devonshire","Devonshire","Devonshire","Devonshire","Devonshire","Devonshire","Devonshire","Devonshire","Devonshire","Devonshire","Devonshire","Devonshire","Devonshire","Devonshire","Devonshire","Devonshire","Devonshire","Devonshire","Devonshire","Devonshire","Devonshire"]]]}}},"view":{"type":"object","name":"CDSView","id":"e9e8dff8-2153-4133-9d04-87a47294c30e","attributes":{"filter":{"type":"object","name":"AllIndices","id":"8c6e2622-c310-49b8-ba8f-4f045beb018f"}}},"glyph":{"type":"object","name":"Line","id":"a32f40d8-13c9-4b97-a1b5-7f6694d8823f","attributes":{"tags":["apply_ranges"],"x":{"type":"field","field":"DATE OCC"},"y":{"type":"field","field":"Devonshire"},"line_color":"#999999","line_width":2}},"selection_glyph":{"type":"object","name":"Line","id":"f1bdfb7a-95f3-4f41-a445-6c910aeb13fa","attributes":{"tags":["apply_ranges"],"x":{"type":"field","field":"DATE OCC"},"y":{"type":"field","field":"Devonshire"},"line_color":"#999999","line_width":2}},"nonselection_glyph":{"type":"object","name":"Line","id":"2e384310-1184-428a-a477-e6b41c176cd1","attributes":{"tags":["apply_ranges"],"x":{"type":"field","field":"DATE OCC"},"y":{"type":"field","field":"Devonshire"},"line_color":"#999999","line_alpha":0.1,"line_width":2}},"muted_glyph":{"type":"object","name":"Line","id":"3bf2cdd0-cac5-4193-9b61-0ac181f8adf8","attributes":{"tags":["apply_ranges"],"x":{"type":"field","field":"DATE OCC"},"y":{"type":"field","field":"Devonshire"},"line_color":"#999999","line_alpha":0.2,"line_width":2}}}},{"type":"object","name":"GlyphRenderer","id":"16e91840-b212-421f-a43b-8b5d592fd057","attributes":{"name":"Hollenbeck","data_source":{"type":"object","name":"ColumnDataSource","id":"f3d9e61f-e5b5-4707-9010-8e2bade79bda","attributes":{"selected":{"type":"object","name":"Selection","id":"eee40e92-15d2-44f3-8fbe-ed1bfbeba815","attributes":{"indices":[],"line_indices":[]}},"selection_policy":{"type":"object","name":"UnionRenderers","id":"35225f3b-ab7f-4d31-9936-0056da255e40"},"data":{"type":"map","entries":[["DATE OCC",{"type":"ndarray","array":{"type":"bytes","data":"H4sIAAEAAAAA/2NgaMh79rXMiYHhwIEH/0F0g7sZZzmIP9NAGEQ7tN2QAdENNy6pgWiGo1UGYHHxUiuweGa+C1g8TNwPLL5CMAKsf8rORLD4883ZYHHLdaVgOmpjHVjfmtUdYPmZwZPA4q9954D1Xf+6FCyu9WE9WLzm1U6weMakw2Dx3T1nwfqXm1wHi//UewgW99F8DaZzdb6A9e1X+weWX32OvQIk/u+EIIhueFUgDaIP2GSrgsX7U/XB4tW8lmDxs+zOINph13ofsDjPqjCweNySBDBdvzwTrO/SwmKw/D7PWrC4gEs7WN/f1xPA4v7PZoHFFz5YAhbv61gHFn/QtAOs/6zWIbC4vOoZsHih/DUw/0fJfTDfK/8lWJ25+GeweKfgXxB9oHQnWyVI/MRmARDtILVOCkQfYAtTAYtHBuiB6AbXH+aVTgAoTkso4AEAAA=="},"shape":[60],"dtype":"float64","order":"little"}],["Hollenbeck",{"type":"ndarray","array":{"type":"bytes","data":"H4sIAAEAAAAA/zWOOQ7DMAwE1aVwEB/wfcSyK///hZ4BqGKwS3FJMaeUTnhghglu6KGGJXyDZjBrTtrof9EVDviH7ugV9RhvZZ9ZvfP6Acz7l77sd847zOhL3vty5DrUm5xVN3CHcz+wX8En6hceJPBb8AAAAA=="},"shape":[60],"dtype":"uint32","order":"little"}],["DATE_OCC",{"type":"ndarray","array":{"type":"bytes","data":"H4sIAAEAAAAA/2NgaMh79rXMiYHhwIEH/0F0g7sZZzmIP9NAGEQ7tN2QAdENNy6pgWiGo1UGYHHxUiuweGa+C1g8TNwPLL5CMAKsf8rORLD4883ZYHHLdaVgOmpjHVjfmtUdYPmZwZPA4q9954D1Xf+6FCyu9WE9WLzm1U6weMakw2Dx3T1nwfqXm1wHi//UewgW99F8DaZzdb6A9e1X+weWX32OvQIk/u+EIIhueFUgDaIP2GSrgsX7U/XB4tW8lmDxs+zOINph13ofsDjPqjCweNySBDBdvzwTrO/SwmKw/D7PWrC4gEs7WN/f1xPA4v7PZoHFFz5YAhbv61gHFn/QtAOs/6zWIbC4vOoZsHih/DUw/0fJfTDfK/8lWJ25+GeweKfgXxB9oHQnWyVI/MRmARDtILVOCkQfYAtTAYtHBuiB6AbXH+aVTgAoTkso4AEAAA=="},"shape":[60],"dtype":"float64","order":"little"}],["Variable",["Hollenbeck","Hollenbeck","Hollenbeck","Hollenbeck","Hollenbeck","Hollenbeck","Hollenbeck","Hollenbeck","Hollenbeck","Hollenbeck","Hollenbeck","Hollenbeck","Hollenbeck","Hollenbeck","Hollenbeck","Hollenbeck","Hollenbeck","Hollenbeck","Hollenbeck","Hollenbeck","Hollenbeck","Hollenbeck","Hollenbeck","Hollenbeck","Hollenbeck","Hollenbeck","Hollenbeck","Hollenbeck","Hollenbeck","Hollenbeck","Hollenbeck","Hollenbeck","Hollenbeck","Hollenbeck","Hollenbeck","Hollenbeck","Hollenbeck","Hollenbeck","Hollenbeck","Hollenbeck","Hollenbeck","Hollenbeck","Hollenbeck","Hollenbeck","Hollenbeck","Hollenbeck","Hollenbeck","Hollenbeck","Hollenbeck","Hollenbeck","Hollenbeck","Hollenbeck","Hollenbeck","Hollenbeck","Hollenbeck","Hollenbeck","Hollenbeck","Hollenbeck","Hollenbeck","Hollenbeck"]]]}}},"view":{"type":"object","name":"CDSView","id":"23ed2057-71f0-4daf-8536-e70ea4c4d1f7","attributes":{"filter":{"type":"object","name":"AllIndices","id":"faf8c7fd-6758-4fd8-adb4-04e8b314b4b9"}}},"glyph":{"type":"object","name":"Line","id":"0849ddd9-818d-4e0b-b458-4a0b8da6704c","attributes":{"tags":["apply_ranges"],"x":{"type":"field","field":"DATE OCC"},"y":{"type":"field","field":"Hollenbeck"},"line_color":"#999999","line_width":2}},"selection_glyph":{"type":"object","name":"Line","id":"402ce8ef-a6d5-4138-a1d1-db8e06db7e30","attributes":{"tags":["apply_ranges"],"x":{"type":"field","field":"DATE OCC"},"y":{"type":"field","field":"Hollenbeck"},"line_color":"#999999","line_width":2}},"nonselection_glyph":{"type":"object","name":"Line","id":"e86cbe5a-2364-4182-ad8d-392d7a4bb297","attributes":{"tags":["apply_ranges"],"x":{"type":"field","field":"DATE OCC"},"y":{"type":"field","field":"Hollenbeck"},"line_color":"#999999","line_alpha":0.1,"line_width":2}},"muted_glyph":{"type":"object","name":"Line","id":"2d754dd4-8c0a-468c-839a-7a1fb681d8b8","attributes":{"tags":["apply_ranges"],"x":{"type":"field","field":"DATE OCC"},"y":{"type":"field","field":"Hollenbeck"},"line_color":"#999999","line_alpha":0.2,"line_width":2}}}},{"type":"object","name":"GlyphRenderer","id":"9bab5c86-b73f-42ba-91ec-346bbd1018d2","attributes":{"name":"77th Street","data_source":{"type":"object","name":"ColumnDataSource","id":"9edfbaf9-487e-408c-8d0b-f9623b635448","attributes":{"selected":{"type":"object","name":"Selection","id":"f235666e-c8da-476f-9b32-7b37e426f57f","attributes":{"indices":[],"line_indices":[]}},"selection_policy":{"type":"object","name":"UnionRenderers","id":"f417b63a-5371-4c7a-b81e-deeea5a1fa76"},"data":{"type":"map","entries":[["DATE OCC",{"type":"ndarray","array":{"type":"bytes","data":"H4sIAAEAAAAA/2NgaMh79rXMiYHhwIEH/0F0g7sZZzmIP9NAGEQ7tN2QAdENNy6pgWiGo1UGYHHxUiuweGa+C1g8TNwPLL5CMAKsf8rORLD4883ZYHHLdaVgOmpjHVjfmtUdYPmZwZPA4q9954D1Xf+6FCyu9WE9WLzm1U6weMakw2Dx3T1nwfqXm1wHi//UewgW99F8DaZzdb6A9e1X+weWX32OvQIk/u+EIIhueFUgDaIP2GSrgsX7U/XB4tW8lmDxs+zOINph13ofsDjPqjCweNySBDBdvzwTrO/SwmKw/D7PWrC4gEs7WN/f1xPA4v7PZoHFFz5YAhbv61gHFn/QtAOs/6zWIbC4vOoZsHih/DUw/0fJfTDfK/8lWJ25+GeweKfgXxB9oHQnWyVI/MRmARDtILVOCkQfYAtTAYtHBuiB6AbXH+aVTgAoTkso4AEAAA=="},"shape":[60],"dtype":"float64","order":"little"}],["77th Street",{"type":"ndarray","array":{"type":"bytes","data":"H4sIAAEAAAAA/y3OOw6CQBRG4ektIIgGkAgaKDRSaWLlCtj/fjwn+Ysv987MfcxeStnwxQ8PzHjjhQs6PLHgik/iSFyjz3uTs3XnMHfGDHtuyQfiHS3c49sEZxiPsEbut9Y/2O/Z3d4533rnuPOEQ3J7a1SJf6W9rn3wAAAA"},"shape":[60],"dtype":"uint32","order":"little"}],["DATE_OCC",{"type":"ndarray","array":{"type":"bytes","data":"H4sIAAEAAAAA/2NgaMh79rXMiYHhwIEH/0F0g7sZZzmIP9NAGEQ7tN2QAdENNy6pgWiGo1UGYHHxUiuweGa+C1g8TNwPLL5CMAKsf8rORLD4883ZYHHLdaVgOmpjHVjfmtUdYPmZwZPA4q9954D1Xf+6FCyu9WE9WLzm1U6weMakw2Dx3T1nwfqXm1wHi//UewgW99F8DaZzdb6A9e1X+weWX32OvQIk/u+EIIhueFUgDaIP2GSrgsX7U/XB4tW8lmDxs+zOINph13ofsDjPqjCweNySBDBdvzwTrO/SwmKw/D7PWrC4gEs7WN/f1xPA4v7PZoHFFz5YAhbv61gHFn/QtAOs/6zWIbC4vOoZsHih/DUw/0fJfTDfK/8lWJ25+GeweKfgXxB9oHQnWyVI/MRmARDtILVOCkQfYAtTAYtHBuiB6AbXH+aVTgAoTkso4AEAAA=="},"shape":[60],"dtype":"float64","order":"little"}],["A_77th_Street",{"type":"ndarray","array":{"type":"bytes","data":"H4sIAAEAAAAA/y3OOw6CQBRG4ektIIgGkAgaKDRSaWLlCtj/fjwn+Ysv987MfcxeStnwxQ8PzHjjhQs6PLHgik/iSFyjz3uTs3XnMHfGDHtuyQfiHS3c49sEZxiPsEbut9Y/2O/Z3d4533rnuPOEQ3J7a1SJf6W9rn3wAAAA"},"shape":[60],"dtype":"uint32","order":"little"}],["Variable",["77th Street","77th Street","77th Street","77th Street","77th Street","77th Street","77th Street","77th Street","77th Street","77th Street","77th Street","77th Street","77th Street","77th Street","77th Street","77th Street","77th Street","77th Street","77th Street","77th Street","77th Street","77th Street","77th Street","77th Street","77th Street","77th Street","77th Street","77th Street","77th Street","77th Street","77th Street","77th Street","77th Street","77th Street","77th Street","77th Street","77th Street","77th Street","77th Street","77th Street","77th Street","77th Street","77th Street","77th Street","77th Street","77th Street","77th Street","77th Street","77th Street","77th Street","77th Street","77th Street","77th Street","77th Street","77th Street","77th Street","77th Street","77th Street","77th Street","77th Street"]]]}}},"view":{"type":"object","name":"CDSView","id":"ae107d8c-462a-4942-acb7-a90b9a239284","attributes":{"filter":{"type":"object","name":"AllIndices","id":"0fc3ba5d-fb17-41a6-a711-46ea62fcfa16"}}},"glyph":{"type":"object","name":"Line","id":"8f6de707-3c2a-4cef-a0e6-8087f96980ef","attributes":{"tags":["apply_ranges"],"x":{"type":"field","field":"DATE OCC"},"y":{"type":"field","field":"77th Street"},"line_color":"#999999","line_width":2}},"selection_glyph":{"type":"object","name":"Line","id":"6bcaaa48-9815-4d14-a300-38930510976d","attributes":{"tags":["apply_ranges"],"x":{"type":"field","field":"DATE OCC"},"y":{"type":"field","field":"77th Street"},"line_color":"#999999","line_width":2}},"nonselection_glyph":{"type":"object","name":"Line","id":"9f91e2e6-0dcc-48a8-a05d-bc0dcbda6cf9","attributes":{"tags":["apply_ranges"],"x":{"type":"field","field":"DATE OCC"},"y":{"type":"field","field":"77th Street"},"line_color":"#999999","line_alpha":0.1,"line_width":2}},"muted_glyph":{"type":"object","name":"Line","id":"79063ed9-012f-424d-8b10-2552c3e0ed18","attributes":{"tags":["apply_ranges"],"x":{"type":"field","field":"DATE OCC"},"y":{"type":"field","field":"77th Street"},"line_color":"#999999","line_alpha":0.2,"line_width":2}}}},{"type":"object","name":"GlyphRenderer","id":"35388d54-679c-46a4-9a69-7829e89d308d","attributes":{"name":"N Hollywood","data_source":{"type":"object","name":"ColumnDataSource","id":"2e39a248-0ecd-4461-9bbe-d7b2b0891571","attributes":{"selected":{"type":"object","name":"Selection","id":"56f0fd79-93fe-495c-9159-cf6ccd60d6bf","attributes":{"indices":[],"line_indices":[]}},"selection_policy":{"type":"object","name":"UnionRenderers","id":"d33532ba-7449-42f1-907d-a777a99f7055"},"data":{"type":"map","entries":[["DATE OCC",{"type":"ndarray","array":{"type":"bytes","data":"H4sIAAEAAAAA/2NgaMh79rXMiYHhwIEH/0F0g7sZZzmIP9NAGEQ7tN2QAdENNy6pgWiGo1UGYHHxUiuweGa+C1g8TNwPLL5CMAKsf8rORLD4883ZYHHLdaVgOmpjHVjfmtUdYPmZwZPA4q9954D1Xf+6FCyu9WE9WLzm1U6weMakw2Dx3T1nwfqXm1wHi//UewgW99F8DaZzdb6A9e1X+weWX32OvQIk/u+EIIhueFUgDaIP2GSrgsX7U/XB4tW8lmDxs+zOINph13ofsDjPqjCweNySBDBdvzwTrO/SwmKw/D7PWrC4gEs7WN/f1xPA4v7PZoHFFz5YAhbv61gHFn/QtAOs/6zWIbC4vOoZsHih/DUw/0fJfTDfK/8lWJ25+GeweKfgXxB9oHQnWyVI/MRmARDtILVOCkQfYAtTAYtHBuiB6AbXH+aVTgAoTkso4AEAAA=="},"shape":[60],"dtype":"float64","order":"little"}],["N Hollywood",{"type":"ndarray","array":{"type":"bytes","data":"H4sIAAEAAAAA/zXOwQqCQBRG4XkQIUISxVWapYk4aFgEiQgivYCr3n/tufC3+DgXL87Mzzk3wqsfWqKQjN7lS59o0WNWF9poN9ENK1761mke6P+sM3MOu8fmGh4VYjxw1e5GL7C32N529g775w07J0GKCEc1oAeEOKk72ZPk1vAAAAA="},"shape":[60],"dtype":"uint32","order":"little"}],["DATE_OCC",{"type":"ndarray","array":{"type":"bytes","data":"H4sIAAEAAAAA/2NgaMh79rXMiYHhwIEH/0F0g7sZZzmIP9NAGEQ7tN2QAdENNy6pgWiGo1UGYHHxUiuweGa+C1g8TNwPLL5CMAKsf8rORLD4883ZYHHLdaVgOmpjHVjfmtUdYPmZwZPA4q9954D1Xf+6FCyu9WE9WLzm1U6weMakw2Dx3T1nwfqXm1wHi//UewgW99F8DaZzdb6A9e1X+weWX32OvQIk/u+EIIhueFUgDaIP2GSrgsX7U/XB4tW8lmDxs+zOINph13ofsDjPqjCweNySBDBdvzwTrO/SwmKw/D7PWrC4gEs7WN/f1xPA4v7PZoHFFz5YAhbv61gHFn/QtAOs/6zWIbC4vOoZsHih/DUw/0fJfTDfK/8lWJ25+GeweKfgXxB9oHQnWyVI/MRmARDtILVOCkQfYAtTAYtHBuiB6AbXH+aVTgAoTkso4AEAAA=="},"shape":[60],"dtype":"float64","order":"little"}],["N_Hollywood",{"type":"ndarray","array":{"type":"bytes","data":"H4sIAAEAAAAA/zXOwQqCQBRG4XkQIUISxVWapYk4aFgEiQgivYCr3n/tufC3+DgXL87Mzzk3wqsfWqKQjN7lS59o0WNWF9poN9ENK1761mke6P+sM3MOu8fmGh4VYjxw1e5GL7C32N529g775w07J0GKCEc1oAeEOKk72ZPk1vAAAAA="},"shape":[60],"dtype":"uint32","order":"little"}],["Variable",["N Hollywood","N Hollywood","N Hollywood","N Hollywood","N Hollywood","N Hollywood","N Hollywood","N Hollywood","N Hollywood","N Hollywood","N Hollywood","N Hollywood","N Hollywood","N Hollywood","N Hollywood","N Hollywood","N Hollywood","N Hollywood","N Hollywood","N Hollywood","N Hollywood","N Hollywood","N Hollywood","N Hollywood","N Hollywood","N Hollywood","N Hollywood","N Hollywood","N Hollywood","N Hollywood","N Hollywood","N Hollywood","N Hollywood","N Hollywood","N Hollywood","N Hollywood","N Hollywood","N Hollywood","N Hollywood","N Hollywood","N Hollywood","N Hollywood","N Hollywood","N Hollywood","N Hollywood","N Hollywood","N Hollywood","N Hollywood","N Hollywood","N Hollywood","N Hollywood","N Hollywood","N Hollywood","N Hollywood","N Hollywood","N Hollywood","N Hollywood","N Hollywood","N Hollywood","N Hollywood"]]]}}},"view":{"type":"object","name":"CDSView","id":"08277d7f-7644-414f-bcb5-8d8de6ef333f","attributes":{"filter":{"type":"object","name":"AllIndices","id":"2f46527c-1afc-4432-98f1-aba0089f1c33"}}},"glyph":{"type":"object","name":"Line","id":"d1d592e6-a706-4157-8a13-10affad3f7fd","attributes":{"tags":["apply_ranges"],"x":{"type":"field","field":"DATE OCC"},"y":{"type":"field","field":"N Hollywood"},"line_color":"#999999","line_width":2}},"selection_glyph":{"type":"object","name":"Line","id":"b4c5273f-7087-4794-9b94-dea94bab6616","attributes":{"tags":["apply_ranges"],"x":{"type":"field","field":"DATE OCC"},"y":{"type":"field","field":"N Hollywood"},"line_color":"#999999","line_width":2}},"nonselection_glyph":{"type":"object","name":"Line","id":"d48e7fbb-a162-4674-8479-f0fe8b12095f","attributes":{"tags":["apply_ranges"],"x":{"type":"field","field":"DATE OCC"},"y":{"type":"field","field":"N Hollywood"},"line_color":"#999999","line_alpha":0.1,"line_width":2}},"muted_glyph":{"type":"object","name":"Line","id":"6b775533-7867-4a5a-b57f-a556d4c19020","attributes":{"tags":["apply_ranges"],"x":{"type":"field","field":"DATE OCC"},"y":{"type":"field","field":"N Hollywood"},"line_color":"#999999","line_alpha":0.2,"line_width":2}}}},{"type":"object","name":"GlyphRenderer","id":"18cc894d-fba0-4d10-ae91-98aca15f54c8","attributes":{"name":"West Valley","data_source":{"type":"object","name":"ColumnDataSource","id":"255ecd9c-9212-4104-8c6e-a724f8086205","attributes":{"selected":{"type":"object","name":"Selection","id":"7899701f-e954-43fc-b01e-43e774f33910","attributes":{"indices":[],"line_indices":[]}},"selection_policy":{"type":"object","name":"UnionRenderers","id":"4d4fa96d-bc2f-46bb-9ca5-275e1af74747"},"data":{"type":"map","entries":[["DATE OCC",{"type":"ndarray","array":{"type":"bytes","data":"H4sIAAEAAAAA/2NgaMh79rXMiYHhwIEH/0F0g7sZZzmIP9NAGEQ7tN2QAdENNy6pgWiGo1UGYHHxUiuweGa+C1g8TNwPLL5CMAKsf8rORLD4883ZYHHLdaVgOmpjHVjfmtUdYPmZwZPA4q9954D1Xf+6FCyu9WE9WLzm1U6weMakw2Dx3T1nwfqXm1wHi//UewgW99F8DaZzdb6A9e1X+weWX32OvQIk/u+EIIhueFUgDaIP2GSrgsX7U/XB4tW8lmDxs+zOINph13ofsDjPqjCweNySBDBdvzwTrO/SwmKw/D7PWrC4gEs7WN/f1xPA4v7PZoHFFz5YAhbv61gHFn/QtAOs/6zWIbC4vOoZsHih/DUw/0fJfTDfK/8lWJ25+GeweKfgXxB9oHQnWyVI/MRmARDtILVOCkQfYAtTAYtHBuiB6AbXH+aVTgAoTkso4AEAAA=="},"shape":[60],"dtype":"float64","order":"little"}],["West Valley",{"type":"ndarray","array":{"type":"bytes","data":"H4sIAAEAAAAA/zXOyQqDQBCE4XmK5CBRcAODGy6QgMGIl+DF938b/4LK4aNn6ameM4SwIkXjOlJ7qBZ4osWECg+oP0fsO/XXpvUXbyhDuXr/wYwBCUqfH9SX75Spfs3qEHmvrAyL+/TnHRt+ULZm6T93u7n+Z+n8AoQpw0zwAAAA"},"shape":[60],"dtype":"uint32","order":"little"}],["DATE_OCC",{"type":"ndarray","array":{"type":"bytes","data":"H4sIAAEAAAAA/2NgaMh79rXMiYHhwIEH/0F0g7sZZzmIP9NAGEQ7tN2QAdENNy6pgWiGo1UGYHHxUiuweGa+C1g8TNwPLL5CMAKsf8rORLD4883ZYHHLdaVgOmpjHVjfmtUdYPmZwZPA4q9954D1Xf+6FCyu9WE9WLzm1U6weMakw2Dx3T1nwfqXm1wHi//UewgW99F8DaZzdb6A9e1X+weWX32OvQIk/u+EIIhueFUgDaIP2GSrgsX7U/XB4tW8lmDxs+zOINph13ofsDjPqjCweNySBDBdvzwTrO/SwmKw/D7PWrC4gEs7WN/f1xPA4v7PZoHFFz5YAhbv61gHFn/QtAOs/6zWIbC4vOoZsHih/DUw/0fJfTDfK/8lWJ25+GeweKfgXxB9oHQnWyVI/MRmARDtILVOCkQfYAtTAYtHBuiB6AbXH+aVTgAoTkso4AEAAA=="},"shape":[60],"dtype":"float64","order":"little"}],["West_Valley",{"type":"ndarray","array":{"type":"bytes","data":"H4sIAAEAAAAA/zXOyQqDQBCE4XmK5CBRcAODGy6QgMGIl+DF938b/4LK4aNn6ameM4SwIkXjOlJ7qBZ4osWECg+oP0fsO/XXpvUXbyhDuXr/wYwBCUqfH9SX75Spfs3qEHmvrAyL+/TnHRt+ULZm6T93u7n+Z+n8AoQpw0zwAAAA"},"shape":[60],"dtype":"uint32","order":"little"}],["Variable",["West Valley","West Valley","West Valley","West Valley","West Valley","West Valley","West Valley","West Valley","West Valley","West Valley","West Valley","West Valley","West Valley","West Valley","West Valley","West Valley","West Valley","West Valley","West Valley","West Valley","West Valley","West Valley","West Valley","West Valley","West Valley","West Valley","West Valley","West Valley","West Valley","West Valley","West Valley","West Valley","West Valley","West Valley","West Valley","West Valley","West Valley","West Valley","West Valley","West Valley","West Valley","West Valley","West Valley","West Valley","West Valley","West Valley","West Valley","West Valley","West Valley","West Valley","West Valley","West Valley","West Valley","West Valley","West Valley","West Valley","West Valley","West Valley","West Valley","West Valley"]]]}}},"view":{"type":"object","name":"CDSView","id":"2e91ade1-065b-4c35-9c28-145223b4240c","attributes":{"filter":{"type":"object","name":"AllIndices","id":"fc01f962-a082-4ba5-b0eb-6c9fc01872c5"}}},"glyph":{"type":"object","name":"Line","id":"96578b95-2005-41f6-a345-f8230d3d1867","attributes":{"tags":["apply_ranges"],"x":{"type":"field","field":"DATE OCC"},"y":{"type":"field","field":"West Valley"},"line_color":"#999999","line_width":2}},"selection_glyph":{"type":"object","name":"Line","id":"c4e0c0a0-d6ca-479f-a17c-f6239083ea33","attributes":{"tags":["apply_ranges"],"x":{"type":"field","field":"DATE OCC"},"y":{"type":"field","field":"West Valley"},"line_color":"#999999","line_width":2}},"nonselection_glyph":{"type":"object","name":"Line","id":"972755d6-e225-4c51-9fe6-51ea4f7725a7","attributes":{"tags":["apply_ranges"],"x":{"type":"field","field":"DATE OCC"},"y":{"type":"field","field":"West Valley"},"line_color":"#999999","line_alpha":0.1,"line_width":2}},"muted_glyph":{"type":"object","name":"Line","id":"58b307a3-9e18-4c1f-bc4d-24da78a2bcd5","attributes":{"tags":["apply_ranges"],"x":{"type":"field","field":"DATE OCC"},"y":{"type":"field","field":"West Valley"},"line_color":"#999999","line_alpha":0.2,"line_width":2}}}},{"type":"object","name":"GlyphRenderer","id":"73c11890-ff16-401c-a035-da0c82d6cf07","attributes":{"name":"Hollywood","data_source":{"type":"object","name":"ColumnDataSource","id":"4ad90caa-01ad-4acf-bb85-308223dfb8b9","attributes":{"selected":{"type":"object","name":"Selection","id":"c3a0387e-5091-4517-a823-1d26c1b68f5f","attributes":{"indices":[],"line_indices":[]}},"selection_policy":{"type":"object","name":"UnionRenderers","id":"6e1dceca-380a-41e2-a580-66e37a767ecd"},"data":{"type":"map","entries":[["DATE OCC",{"type":"ndarray","array":{"type":"bytes","data":"H4sIAAEAAAAA/2NgaMh79rXMiYHhwIEH/0F0g7sZZzmIP9NAGEQ7tN2QAdENNy6pgWiGo1UGYHHxUiuweGa+C1g8TNwPLL5CMAKsf8rORLD4883ZYHHLdaVgOmpjHVjfmtUdYPmZwZPA4q9954D1Xf+6FCyu9WE9WLzm1U6weMakw2Dx3T1nwfqXm1wHi//UewgW99F8DaZzdb6A9e1X+weWX32OvQIk/u+EIIhueFUgDaIP2GSrgsX7U/XB4tW8lmDxs+zOINph13ofsDjPqjCweNySBDBdvzwTrO/SwmKw/D7PWrC4gEs7WN/f1xPA4v7PZoHFFz5YAhbv61gHFn/QtAOs/6zWIbC4vOoZsHih/DUw/0fJfTDfK/8lWJ25+GeweKfgXxB9oHQnWyVI/MRmARDtILVOCkQfYAtTAYtHBuiB6AbXH+aVTgAoTkso4AEAAA=="},"shape":[60],"dtype":"float64","order":"little"}],["Hollywood",{"type":"ndarray","array":{"type":"bytes","data":"H4sIAAEAAAAA/y3OzQqBURAG4O9W7FAoUWLhp/wUEpEksbGws7BwKS7X89ZZPM10Zs70bquqmjKnw4A6Exq02ZbZUN0w48qeHSfuPLnw4cWRN4/SZ+/Lj+zm7o0zY1asy3vuJk+PJV0WZC+zZM7+ofS53SfZ8y91RPK3aFLjD7pTH87wAAAA"},"shape":[60],"dtype":"uint32","order":"little"}],["DATE_OCC",{"type":"ndarray","array":{"type":"bytes","data":"H4sIAAEAAAAA/2NgaMh79rXMiYHhwIEH/0F0g7sZZzmIP9NAGEQ7tN2QAdENNy6pgWiGo1UGYHHxUiuweGa+C1g8TNwPLL5CMAKsf8rORLD4883ZYHHLdaVgOmpjHVjfmtUdYPmZwZPA4q9954D1Xf+6FCyu9WE9WLzm1U6weMakw2Dx3T1nwfqXm1wHi//UewgW99F8DaZzdb6A9e1X+weWX32OvQIk/u+EIIhueFUgDaIP2GSrgsX7U/XB4tW8lmDxs+zOINph13ofsDjPqjCweNySBDBdvzwTrO/SwmKw/D7PWrC4gEs7WN/f1xPA4v7PZoHFFz5YAhbv61gHFn/QtAOs/6zWIbC4vOoZsHih/DUw/0fJfTDfK/8lWJ25+GeweKfgXxB9oHQnWyVI/MRmARDtILVOCkQfYAtTAYtHBuiB6AbXH+aVTgAoTkso4AEAAA=="},"shape":[60],"dtype":"float64","order":"little"}],["Variable",["Hollywood","Hollywood","Hollywood","Hollywood","Hollywood","Hollywood","Hollywood","Hollywood","Hollywood","Hollywood","Hollywood","Hollywood","Hollywood","Hollywood","Hollywood","Hollywood","Hollywood","Hollywood","Hollywood","Hollywood","Hollywood","Hollywood","Hollywood","Hollywood","Hollywood","Hollywood","Hollywood","Hollywood","Hollywood","Hollywood","Hollywood","Hollywood","Hollywood","Hollywood","Hollywood","Hollywood","Hollywood","Hollywood","Hollywood","Hollywood","Hollywood","Hollywood","Hollywood","Hollywood","Hollywood","Hollywood","Hollywood","Hollywood","Hollywood","Hollywood","Hollywood","Hollywood","Hollywood","Hollywood","Hollywood","Hollywood","Hollywood","Hollywood","Hollywood","Hollywood"]]]}}},"view":{"type":"object","name":"CDSView","id":"d9d71b42-7539-4625-8318-3dbdb94390ed","attributes":{"filter":{"type":"object","name":"AllIndices","id":"93d082d3-e96b-4989-8653-ff815c493e56"}}},"glyph":{"type":"object","name":"Line","id":"ce26fd08-674d-4499-9e19-d636a243295a","attributes":{"tags":["apply_ranges"],"x":{"type":"field","field":"DATE OCC"},"y":{"type":"field","field":"Hollywood"},"line_color":"#991111","line_width":2}},"selection_glyph":{"type":"object","name":"Line","id":"db5e826d-c571-4359-8edf-02c42343e264","attributes":{"tags":["apply_ranges"],"x":{"type":"field","field":"DATE OCC"},"y":{"type":"field","field":"Hollywood"},"line_color":"#991111","line_width":2}},"nonselection_glyph":{"type":"object","name":"Line","id":"b88e79a2-70f3-44a2-b152-81efd663693c","attributes":{"tags":["apply_ranges"],"x":{"type":"field","field":"DATE OCC"},"y":{"type":"field","field":"Hollywood"},"line_color":"#991111","line_alpha":0.1,"line_width":2}},"muted_glyph":{"type":"object","name":"Line","id":"61b9d32c-cd24-4934-9ce8-30346592ed7a","attributes":{"tags":["apply_ranges"],"x":{"type":"field","field":"DATE OCC"},"y":{"type":"field","field":"Hollywood"},"line_color":"#991111","line_alpha":0.2,"line_width":2}}}}],"toolbar":{"type":"object","name":"Toolbar","id":"bdf8eb85-f34c-434d-8176-8394c2f1e0e8","attributes":{"tools":[{"type":"object","name":"WheelZoomTool","id":"c84ace3e-3a9c-44a0-bdae-ffeec427a58b","attributes":{"tags":["hv_created"],"renderers":"auto","zoom_together":"none"}},{"type":"object","name":"HoverTool","id":"d873fd83-889e-4079-9e21-d1e9e5a2b6eb","attributes":{"tags":["hv_created"],"renderers":[{"id":"5840b27e-3979-4854-bfd8-acd24ba97c9d"}],"tooltips":[["Variable","@{Variable}"],["DATE OCC","@{DATE_OCC}{%F %T}"],["value","@{Harbor}"]],"formatters":{"type":"map","entries":[["@{DATE OCC}","datetime"],["@{DATE_OCC}","datetime"]]},"sort_by":null}},{"type":"object","name":"HoverTool","id":"abfd15d9-36b6-4527-9838-1e516233653c","attributes":{"tags":["hv_created"],"renderers":[{"id":"ef567337-369c-440d-9f5a-33fff6967841"}],"tooltips":[["Variable","@{Variable}"],["DATE OCC","@{DATE_OCC}{%F %T}"],["value","@{Newton}"]],"formatters":{"type":"map","entries":[["@{DATE OCC}","datetime"],["@{DATE_OCC}","datetime"]]},"sort_by":null}},{"type":"object","name":"HoverTool","id":"be0bf25d-ba0b-467c-acf6-0117b187da12","attributes":{"tags":["hv_created"],"renderers":[{"id":"19fbd806-72e7-4ae4-a41b-8061386068fc"}],"tooltips":[["Variable","@{Variable}"],["DATE OCC","@{DATE_OCC}{%F %T}"],["value","@{Central}"]],"formatters":{"type":"map","entries":[["@{DATE OCC}","datetime"],["@{DATE_OCC}","datetime"]]},"sort_by":null}},{"type":"object","name":"HoverTool","id":"7c43b8b5-1560-4877-9dab-d0ccfbb88263","attributes":{"tags":["hv_created"],"renderers":[{"id":"9fd93b43-0478-4f3f-8491-a5ba5dd1b4fc"}],"tooltips":[["Variable","@{Variable}"],["DATE OCC","@{DATE_OCC}{%F %T}"],["value","@{Mission}"]],"formatters":{"type":"map","entries":[["@{DATE OCC}","datetime"],["@{DATE_OCC}","datetime"]]},"sort_by":null}},{"type":"object","name":"HoverTool","id":"76b411d6-3b35-4d67-9ae2-9ce89d6431f5","attributes":{"tags":["hv_created"],"renderers":[{"id":"e3211d35-7647-4102-9d28-2598442e7910"}],"tooltips":[["Variable","@{Variable}"],["DATE OCC","@{DATE_OCC}{%F %T}"],["value","@{Olympic}"]],"formatters":{"type":"map","entries":[["@{DATE OCC}","datetime"],["@{DATE_OCC}","datetime"]]},"sort_by":null}},{"type":"object","name":"HoverTool","id":"7e01895a-0e33-4b25-b722-170de8910d8b","attributes":{"tags":["hv_created"],"renderers":[{"id":"88a5f445-b9b6-438c-92af-46e578d06b88"}],"tooltips":[["Variable","@{Variable}"],["DATE OCC","@{DATE_OCC}{%F %T}"],["value","@{Pacific}"]],"formatters":{"type":"map","entries":[["@{DATE OCC}","datetime"],["@{DATE_OCC}","datetime"]]},"sort_by":null}},{"type":"object","name":"HoverTool","id":"c13786c2-f438-4f2b-90f2-34de39cbf21b","attributes":{"tags":["hv_created"],"renderers":[{"id":"23f56845-133d-4794-918e-5bbb0b9270cc"}],"tooltips":[["Variable","@{Variable}"],["DATE OCC","@{DATE_OCC}{%F %T}"],["value","@{Rampart}"]],"formatters":{"type":"map","entries":[["@{DATE OCC}","datetime"],["@{DATE_OCC}","datetime"]]},"sort_by":null}},{"type":"object","name":"HoverTool","id":"e9d3643f-6934-438a-be31-265a8776d03e","attributes":{"tags":["hv_created"],"renderers":[{"id":"edba83b2-87a9-49a1-b0b1-9663b619ade9"}],"tooltips":[["Variable","@{Variable}"],["DATE OCC","@{DATE_OCC}{%F %T}"],["value","@{Topanga}"]],"formatters":{"type":"map","entries":[["@{DATE OCC}","datetime"],["@{DATE_OCC}","datetime"]]},"sort_by":null}},{"type":"object","name":"HoverTool","id":"72c1f93d-4d98-479d-9611-05d192758578","attributes":{"tags":["hv_created"],"renderers":[{"id":"df83776f-fcc5-4468-aab4-abe36c68f524"}],"tooltips":[["Variable","@{Variable}"],["DATE OCC","@{DATE_OCC}{%F %T}"],["value","@{West_LA}"]],"formatters":{"type":"map","entries":[["@{DATE OCC}","datetime"],["@{DATE_OCC}","datetime"]]},"sort_by":null}},{"type":"object","name":"HoverTool","id":"2fc1134f-a79e-44af-85a0-4d025581819a","attributes":{"tags":["hv_created"],"renderers":[{"id":"8c60e991-77ce-4218-a2e7-4031e21b17b1"}],"tooltips":[["Variable","@{Variable}"],["DATE OCC","@{DATE_OCC}{%F %T}"],["value","@{Foothill}"]],"formatters":{"type":"map","entries":[["@{DATE OCC}","datetime"],["@{DATE_OCC}","datetime"]]},"sort_by":null}},{"type":"object","name":"HoverTool","id":"96d3f43c-5673-478a-a6b5-a385f1146f21","attributes":{"tags":["hv_created"],"renderers":[{"id":"cc92fa76-fffd-4124-b82e-263684e29f4a"}],"tooltips":[["Variable","@{Variable}"],["DATE OCC","@{DATE_OCC}{%F %T}"],["value","@{Van_Nuys}"]],"formatters":{"type":"map","entries":[["@{DATE OCC}","datetime"],["@{DATE_OCC}","datetime"]]},"sort_by":null}},{"type":"object","name":"HoverTool","id":"60a397ec-ef98-4bfa-b486-a69420696615","attributes":{"tags":["hv_created"],"renderers":[{"id":"4f3bbbaa-fc78-465e-9245-ce7d12709a96"}],"tooltips":[["Variable","@{Variable}"],["DATE OCC","@{DATE_OCC}{%F %T}"],["value","@{Wilshire}"]],"formatters":{"type":"map","entries":[["@{DATE OCC}","datetime"],["@{DATE_OCC}","datetime"]]},"sort_by":null}},{"type":"object","name":"HoverTool","id":"80fb0050-e906-459d-a5c1-90bc96cf4d31","attributes":{"tags":["hv_created"],"renderers":[{"id":"3242f3df-9b45-41fb-b9ad-d4b53657bfea"}],"tooltips":[["Variable","@{Variable}"],["DATE OCC","@{DATE_OCC}{%F %T}"],["value","@{Northeast}"]],"formatters":{"type":"map","entries":[["@{DATE OCC}","datetime"],["@{DATE_OCC}","datetime"]]},"sort_by":null}},{"type":"object","name":"HoverTool","id":"b47180d9-8137-4687-8302-03ba0baba92e","attributes":{"tags":["hv_created"],"renderers":[{"id":"a6fd096c-e094-423c-95ea-9d48f2949523"}],"tooltips":[["Variable","@{Variable}"],["DATE OCC","@{DATE_OCC}{%F %T}"],["value","@{Southeast}"]],"formatters":{"type":"map","entries":[["@{DATE OCC}","datetime"],["@{DATE_OCC}","datetime"]]},"sort_by":null}},{"type":"object","name":"HoverTool","id":"e06c4118-821a-4ab7-a98f-c4571094f239","attributes":{"tags":["hv_created"],"renderers":[{"id":"48a302c8-f6d3-43d4-bb13-a12f882e2aa2"}],"tooltips":[["Variable","@{Variable}"],["DATE OCC","@{DATE_OCC}{%F %T}"],["value","@{Southwest}"]],"formatters":{"type":"map","entries":[["@{DATE OCC}","datetime"],["@{DATE_OCC}","datetime"]]},"sort_by":null}},{"type":"object","name":"HoverTool","id":"07e66ba2-3be2-40e5-ab84-ee75df3fbe75","attributes":{"tags":["hv_created"],"renderers":[{"id":"eaf2362f-c0fd-48fa-8703-a855969edba0"}],"tooltips":[["Variable","@{Variable}"],["DATE OCC","@{DATE_OCC}{%F %T}"],["value","@{Devonshire}"]],"formatters":{"type":"map","entries":[["@{DATE OCC}","datetime"],["@{DATE_OCC}","datetime"]]},"sort_by":null}},{"type":"object","name":"HoverTool","id":"29d09775-6d06-47fd-a960-70fa5ea01708","attributes":{"tags":["hv_created"],"renderers":[{"id":"16e91840-b212-421f-a43b-8b5d592fd057"}],"tooltips":[["Variable","@{Variable}"],["DATE OCC","@{DATE_OCC}{%F %T}"],["value","@{Hollenbeck}"]],"formatters":{"type":"map","entries":[["@{DATE OCC}","datetime"],["@{DATE_OCC}","datetime"]]},"sort_by":null}},{"type":"object","name":"HoverTool","id":"bb2edfa4-e67b-46be-8807-61654b198cd1","attributes":{"tags":["hv_created"],"renderers":[{"id":"9bab5c86-b73f-42ba-91ec-346bbd1018d2"}],"tooltips":[["Variable","@{Variable}"],["DATE OCC","@{DATE_OCC}{%F %T}"],["value","@{A_77th_Street}"]],"formatters":{"type":"map","entries":[["@{DATE OCC}","datetime"],["@{DATE_OCC}","datetime"]]},"sort_by":null}},{"type":"object","name":"HoverTool","id":"315bba1d-dd40-4f83-82c8-1717c6583b69","attributes":{"tags":["hv_created"],"renderers":[{"id":"35388d54-679c-46a4-9a69-7829e89d308d"}],"tooltips":[["Variable","@{Variable}"],["DATE OCC","@{DATE_OCC}{%F %T}"],["value","@{N_Hollywood}"]],"formatters":{"type":"map","entries":[["@{DATE OCC}","datetime"],["@{DATE_OCC}","datetime"]]},"sort_by":null}},{"type":"object","name":"HoverTool","id":"3f30e825-3eb7-4924-81c7-00c97c47c4dd","attributes":{"tags":["hv_created"],"renderers":[{"id":"18cc894d-fba0-4d10-ae91-98aca15f54c8"}],"tooltips":[["Variable","@{Variable}"],["DATE OCC","@{DATE_OCC}{%F %T}"],["value","@{West_Valley}"]],"formatters":{"type":"map","entries":[["@{DATE OCC}","datetime"],["@{DATE_OCC}","datetime"]]},"sort_by":null}},{"type":"object","name":"HoverTool","id":"2c157817-91d5-4a78-ac8a-6eba92714347","attributes":{"tags":["hv_created"],"renderers":[{"id":"73c11890-ff16-401c-a035-da0c82d6cf07"}],"tooltips":[["Variable","@{Variable}"],["DATE OCC","@{DATE_OCC}{%F %T}"],["value","@{Hollywood}"]],"formatters":{"type":"map","entries":[["@{DATE OCC}","datetime"],["@{DATE_OCC}","datetime"]]},"sort_by":null}},{"type":"object","name":"SaveTool","id":"73cb69a0-827f-4231-83f4-1f3419f58849"},{"type":"object","name":"PanTool","id":"5132286c-07d3-4b9b-ae5f-79911b089acc"},{"type":"object","name":"BoxZoomTool","id":"aefbfa09-5e52-456c-911f-f84adf9b154f","attributes":{"overlay":{"type":"object","name":"BoxAnnotation","id":"15aa4f11-c100-4ac8-ba23-56c471b59031","attributes":{"syncable":false,"line_color":"black","line_alpha":1.0,"line_width":2,"line_dash":[4,4],"fill_color":"lightgrey","fill_alpha":0.5,"level":"overlay","visible":false,"left":{"type":"number","value":"nan"},"right":{"type":"number","value":"nan"},"top":{"type":"number","value":"nan"},"bottom":{"type":"number","value":"nan"},"left_units":"canvas","right_units":"canvas","top_units":"canvas","bottom_units":"canvas","handles":{"type":"object","name":"BoxInteractionHandles","id":"efcd3ab1-6f41-4b8c-8a75-af54b2b26004","attributes":{"all":{"type":"object","name":"AreaVisuals","id":"2d46aa5c-1e2a-4fb5-8470-8868381c151d","attributes":{"fill_color":"white","hover_fill_color":"lightgray"}}}}}}}},{"type":"object","name":"ResetTool","id":"4442edb1-6832-429c-940b-9cab7bbf34d4"}],"active_drag":{"id":"5132286c-07d3-4b9b-ae5f-79911b089acc"},"active_scroll":{"id":"c84ace3e-3a9c-44a0-bdae-ffeec427a58b"}}},"left":[{"type":"object","name":"LinearAxis","id":"1a4b39a7-536e-44b5-bec7-06292d295f9b","attributes":{"ticker":{"type":"object","name":"BasicTicker","id":"6309442a-9bbc-4f3a-8227-9f07881c6fda","attributes":{"mantissas":[1,2,5]}},"formatter":{"type":"object","name":"BasicTickFormatter","id":"53ebb17f-3375-48de-8497-a1332573194b"},"axis_label":"","major_label_policy":{"type":"object","name":"AllLabels","id":"c84a67c7-3f48-45da-a45c-a4064ef3f6af"}}}],"below":[{"type":"object","name":"DatetimeAxis","id":"cb5ebe84-4ac2-4d0d-822d-62edf6c5bc2c","attributes":{"ticker":{"type":"object","name":"DatetimeTicker","id":"a8406dca-c53b-49f4-ac34-89c706562d5a","attributes":{"num_minor_ticks":5,"tickers":[{"type":"object","name":"AdaptiveTicker","id":"a1ccdbf2-9fde-476c-bb3d-4196a49ed877","attributes":{"num_minor_ticks":0,"mantissas":[1,2,5],"max_interval":500.0}},{"type":"object","name":"AdaptiveTicker","id":"20333b98-8223-4603-8f0d-76f7eafc3962","attributes":{"num_minor_ticks":0,"base":60,"mantissas":[1,2,5,10,15,20,30],"min_interval":1000.0,"max_interval":1800000.0}},{"type":"object","name":"AdaptiveTicker","id":"5b19ae03-bbb3-4931-985b-27164bcd1c17","attributes":{"num_minor_ticks":0,"base":24,"mantissas":[1,2,4,6,8,12],"min_interval":3600000.0,"max_interval":43200000.0}},{"type":"object","name":"DaysTicker","id":"831a74b7-1b24-4f13-837a-3b409e70bbee","attributes":{"days":[1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31]}},{"type":"object","name":"DaysTicker","id":"b4aa0e7c-604d-4d07-8e74-1b225f982815","attributes":{"days":[1,4,7,10,13,16,19,22,25,28]}},{"type":"object","name":"DaysTicker","id":"a41271b7-1b0a-45ce-9310-cae39955e8aa","attributes":{"days":[1,8,15,22]}},{"type":"object","name":"DaysTicker","id":"78130fcc-b72a-4f01-9bc8-923c7f3df5a2","attributes":{"days":[1,15]}},{"type":"object","name":"MonthsTicker","id":"84afbd59-645a-4f2b-9af8-5a25626d6f1f","attributes":{"months":[0,1,2,3,4,5,6,7,8,9,10,11]}},{"type":"object","name":"MonthsTicker","id":"16f03bb3-b699-45f5-b081-25e462d26a21","attributes":{"months":[0,2,4,6,8,10]}},{"type":"object","name":"MonthsTicker","id":"dd0d172e-e2ad-4957-899c-7c0fe95eda52","attributes":{"months":[0,4,8]}},{"type":"object","name":"MonthsTicker","id":"c4f0f1a0-caf3-4c07-8bbc-1d1fea987544","attributes":{"months":[0,6]}},{"type":"object","name":"YearsTicker","id":"0dd965dc-6f83-4c2d-96f5-754e28396810"}]}},"formatter":{"type":"object","name":"DatetimeTickFormatter","id":"a144c474-4eb9-42e6-b779-66142c3460c0","attributes":{"seconds":"%T","minsec":"%T","minutes":"%H:%M","hours":"%H:%M","days":"%b %d","months":"%b %Y","strip_leading_zeros":["microseconds","milliseconds","seconds"],"boundary_scaling":false,"context":{"type":"object","name":"DatetimeTickFormatter","id":"3b2f054d-c5a7-4dfa-b5c2-85b18c531bc4","attributes":{"microseconds":"%T","milliseconds":"%T","seconds":"%b %d, %Y","minsec":"%b %d, %Y","minutes":"%b %d, %Y","hourmin":"%b %d, %Y","hours":"%b %d, %Y","days":"%Y","months":"","years":"","boundary_scaling":false,"hide_repeats":true,"context":{"type":"object","name":"DatetimeTickFormatter","id":"2cbcce83-991c-4cf2-853f-124f13a1e0ca","attributes":{"microseconds":"%b %d, %Y","milliseconds":"%b %d, %Y","seconds":"","minsec":"","minutes":"","hourmin":"","hours":"","days":"","months":"","years":"","boundary_scaling":false,"hide_repeats":true}},"context_which":"all"}},"context_which":"all"}},"axis_label":"DATE OCC","major_label_policy":{"type":"object","name":"AllLabels","id":"87362578-d8fc-4fe8-a60a-1733ffa4d794"}}}],"center":[{"type":"object","name":"Grid","id":"f2113328-c69e-4ac6-b7db-8bf369bb87da","attributes":{"axis":{"id":"cb5ebe84-4ac2-4d0d-822d-62edf6c5bc2c"},"grid_line_color":null}},{"type":"object","name":"Grid","id":"c2bc7fab-f650-40c0-a9b9-c2ee7c244059","attributes":{"dimension":1,"axis":{"id":"1a4b39a7-536e-44b5-bec7-06292d295f9b"},"grid_line_color":null}},{"type":"object","name":"Legend","id":"cd631ce9-5c4d-4689-9ee4-051b9d2058fd","attributes":{"location":"top_left","ncols":3,"title":"Neighborhood","click_policy":"mute","items":[{"type":"object","name":"LegendItem","id":"4b47bb3f-053d-4abf-bac7-e0d313d0653a","attributes":{"label":{"type":"value","value":"Harbor"},"renderers":[{"id":"5840b27e-3979-4854-bfd8-acd24ba97c9d"}]}},{"type":"object","name":"LegendItem","id":"e7799e1e-4bc5-4050-8c6f-51f445bcb5d1","attributes":{"label":{"type":"value","value":"Newton"},"renderers":[{"id":"ef567337-369c-440d-9f5a-33fff6967841"}]}},{"type":"object","name":"LegendItem","id":"188f41d6-cf1b-498d-9d98-c8ded019f9e4","attributes":{"label":{"type":"value","value":"Central"},"renderers":[{"id":"19fbd806-72e7-4ae4-a41b-8061386068fc"}]}},{"type":"object","name":"LegendItem","id":"edd7766e-c1d2-4316-900a-d2e134b656dc","attributes":{"label":{"type":"value","value":"Mission"},"renderers":[{"id":"9fd93b43-0478-4f3f-8491-a5ba5dd1b4fc"}]}},{"type":"object","name":"LegendItem","id":"b1374fe5-7101-4cbd-8726-c29be918d62c","attributes":{"label":{"type":"value","value":"Olympic"},"renderers":[{"id":"e3211d35-7647-4102-9d28-2598442e7910"}]}},{"type":"object","name":"LegendItem","id":"f180863d-6857-46e6-b7cb-9413c446b211","attributes":{"label":{"type":"value","value":"Pacific"},"renderers":[{"id":"88a5f445-b9b6-438c-92af-46e578d06b88"}]}},{"type":"object","name":"LegendItem","id":"67da0998-1643-4e09-ba16-8e54741da32a","attributes":{"label":{"type":"value","value":"Rampart"},"renderers":[{"id":"23f56845-133d-4794-918e-5bbb0b9270cc"}]}},{"type":"object","name":"LegendItem","id":"208347d6-11e3-4396-a8ca-62e1a5e1b302","attributes":{"label":{"type":"value","value":"Topanga"},"renderers":[{"id":"edba83b2-87a9-49a1-b0b1-9663b619ade9"}]}},{"type":"object","name":"LegendItem","id":"918518b1-5181-432c-bae3-c13fcb41bf34","attributes":{"label":{"type":"value","value":"West LA"},"renderers":[{"id":"df83776f-fcc5-4468-aab4-abe36c68f524"}]}},{"type":"object","name":"LegendItem","id":"f187d3d3-19bf-49b8-a42b-92a1cba9bf1f","attributes":{"label":{"type":"value","value":"Foothill"},"renderers":[{"id":"8c60e991-77ce-4218-a2e7-4031e21b17b1"}]}},{"type":"object","name":"LegendItem","id":"0673e235-0e3e-48f3-b624-cbc9c9d62728","attributes":{"label":{"type":"value","value":"Van Nuys"},"renderers":[{"id":"cc92fa76-fffd-4124-b82e-263684e29f4a"}]}},{"type":"object","name":"LegendItem","id":"efe8f6f0-1a2b-4c92-acbc-f929d222fdd1","attributes":{"label":{"type":"value","value":"Wilshire"},"renderers":[{"id":"4f3bbbaa-fc78-465e-9245-ce7d12709a96"}]}},{"type":"object","name":"LegendItem","id":"7b09af7e-cbe0-4af7-a6a9-55ac673b58c6","attributes":{"label":{"type":"value","value":"Northeast"},"renderers":[{"id":"3242f3df-9b45-41fb-b9ad-d4b53657bfea"}]}},{"type":"object","name":"LegendItem","id":"c8957711-f8f7-4d92-9355-167fcc3eeb8e","attributes":{"label":{"type":"value","value":"Southeast"},"renderers":[{"id":"a6fd096c-e094-423c-95ea-9d48f2949523"}]}},{"type":"object","name":"LegendItem","id":"2c712a82-09ca-4775-9cc7-d162cfc6cf01","attributes":{"label":{"type":"value","value":"Southwest"},"renderers":[{"id":"48a302c8-f6d3-43d4-bb13-a12f882e2aa2"}]}},{"type":"object","name":"LegendItem","id":"648bfbba-113b-4c78-9df3-b64592c7bb84","attributes":{"label":{"type":"value","value":"Devonshire"},"renderers":[{"id":"eaf2362f-c0fd-48fa-8703-a855969edba0"}]}},{"type":"object","name":"LegendItem","id":"217f9caf-f26d-46b8-80d2-b9c2d763cb73","attributes":{"label":{"type":"value","value":"Hollenbeck"},"renderers":[{"id":"16e91840-b212-421f-a43b-8b5d592fd057"}]}},{"type":"object","name":"LegendItem","id":"9dd07179-c1c4-42c9-939f-cdb20a510a50","attributes":{"label":{"type":"value","value":"77th Street"},"renderers":[{"id":"9bab5c86-b73f-42ba-91ec-346bbd1018d2"}]}},{"type":"object","name":"LegendItem","id":"0ca1ceec-202e-42ed-b359-2911cfdc7131","attributes":{"label":{"type":"value","value":"N Hollywood"},"renderers":[{"id":"35388d54-679c-46a4-9a69-7829e89d308d"}]}},{"type":"object","name":"LegendItem","id":"38e0f950-ad15-40f7-9af2-7dc4c54564a6","attributes":{"label":{"type":"value","value":"West Valley"},"renderers":[{"id":"18cc894d-fba0-4d10-ae91-98aca15f54c8"}]}},{"type":"object","name":"LegendItem","id":"e31c086b-7636-47b1-9b7b-9b493e9ace30","attributes":{"label":{"type":"value","value":"Hollywood"},"renderers":[{"id":"73c11890-ff16-401c-a035-da0c82d6cf07"}]}}]}}],"min_border_top":10,"min_border_bottom":10,"min_border_left":10,"min_border_right":10,"output_backend":"webgl"}},{"type":"object","name":"Spacer","id":"a47fdff2-6e12-43b6-97a4-dad2a09605fa","attributes":{"name":"HSpacer00418","stylesheets":["\n:host(.pn-loading):before, .pn-loading:before {\n  background-color: #c3c3c3;\n  mask-size: auto calc(min(50%, 300px));\n  -webkit-mask-size: auto calc(min(50%, 300px));\n}",{"id":"1c5e152d-4ce1-499e-85b1-f7f89307bf87"},{"id":"2f1a158b-bded-482e-91f5-9c90d3c27d01"},{"id":"b7c05c82-e2a9-4fcf-bb86-7c1ca2981f7b"}],"min_width":0,"margin":0,"sizing_mode":"stretch_width","align":"start"}}]}}],"defs":[{"type":"model","name":"ReactiveHTML1"},{"type":"model","name":"FlexBox1","properties":[{"name":"align_content","kind":"Any","default":"flex-start"},{"name":"align_items","kind":"Any","default":"flex-start"},{"name":"flex_direction","kind":"Any","default":"row"},{"name":"flex_wrap","kind":"Any","default":"wrap"},{"name":"gap","kind":"Any","default":""},{"name":"justify_content","kind":"Any","default":"flex-start"}]},{"type":"model","name":"FloatPanel1","properties":[{"name":"config","kind":"Any","default":{"type":"map"}},{"name":"contained","kind":"Any","default":true},{"name":"position","kind":"Any","default":"right-top"},{"name":"offsetx","kind":"Any","default":null},{"name":"offsety","kind":"Any","default":null},{"name":"theme","kind":"Any","default":"primary"},{"name":"status","kind":"Any","default":"normalized"}]},{"type":"model","name":"GridStack1","properties":[{"name":"ncols","kind":"Any","default":null},{"name":"nrows","kind":"Any","default":null},{"name":"allow_resize","kind":"Any","default":true},{"name":"allow_drag","kind":"Any","default":true},{"name":"state","kind":"Any","default":[]}]},{"type":"model","name":"drag1","properties":[{"name":"slider_width","kind":"Any","default":5},{"name":"slider_color","kind":"Any","default":"black"},{"name":"start","kind":"Any","default":0},{"name":"end","kind":"Any","default":100},{"name":"value","kind":"Any","default":50}]},{"type":"model","name":"click1","properties":[{"name":"terminal_output","kind":"Any","default":""},{"name":"debug_name","kind":"Any","default":""},{"name":"clears","kind":"Any","default":0}]},{"type":"model","name":"ReactiveESM1","properties":[{"name":"esm_constants","kind":"Any","default":{"type":"map"}}]},{"type":"model","name":"JSComponent1","properties":[{"name":"esm_constants","kind":"Any","default":{"type":"map"}}]},{"type":"model","name":"ReactComponent1","properties":[{"name":"use_shadow_dom","kind":"Any","default":true},{"name":"esm_constants","kind":"Any","default":{"type":"map"}}]},{"type":"model","name":"AnyWidgetComponent1","properties":[{"name":"use_shadow_dom","kind":"Any","default":true},{"name":"esm_constants","kind":"Any","default":{"type":"map"}}]},{"type":"model","name":"FastWrapper1","properties":[{"name":"object","kind":"Any","default":null},{"name":"style","kind":"Any","default":null}]},{"type":"model","name":"NotificationArea1","properties":[{"name":"js_events","kind":"Any","default":{"type":"map"}},{"name":"max_notifications","kind":"Any","default":5},{"name":"notifications","kind":"Any","default":[]},{"name":"position","kind":"Any","default":"bottom-right"},{"name":"_clear","kind":"Any","default":0},{"name":"types","kind":"Any","default":[{"type":"map","entries":[["type","warning"],["background","#ffc107"],["icon",{"type":"map","entries":[["className","fas fa-exclamation-triangle"],["tagName","i"],["color","white"]]}]]},{"type":"map","entries":[["type","info"],["background","#007bff"],["icon",{"type":"map","entries":[["className","fas fa-info-circle"],["tagName","i"],["color","white"]]}]]}]}]},{"type":"model","name":"Notification","properties":[{"name":"background","kind":"Any","default":null},{"name":"duration","kind":"Any","default":3000},{"name":"icon","kind":"Any","default":null},{"name":"message","kind":"Any","default":""},{"name":"notification_type","kind":"Any","default":null},{"name":"_rendered","kind":"Any","default":false},{"name":"_destroyed","kind":"Any","default":false}]},{"type":"model","name":"TemplateActions1","properties":[{"name":"open_modal","kind":"Any","default":0},{"name":"close_modal","kind":"Any","default":0}]},{"type":"model","name":"BootstrapTemplateActions1","properties":[{"name":"open_modal","kind":"Any","default":0},{"name":"close_modal","kind":"Any","default":0}]},{"type":"model","name":"TemplateEditor1","properties":[{"name":"layout","kind":"Any","default":[]}]},{"type":"model","name":"MaterialTemplateActions1","properties":[{"name":"open_modal","kind":"Any","default":0},{"name":"close_modal","kind":"Any","default":0}]},{"type":"model","name":"request_value1","properties":[{"name":"fill","kind":"Any","default":"none"},{"name":"_synced","kind":"Any","default":null},{"name":"_request_sync","kind":"Any","default":0}]},{"type":"model","name":"holoviews.plotting.bokeh.raster.HoverModel","properties":[{"name":"xy","kind":"Any","default":null},{"name":"data","kind":"Any","default":null}]}]}};
  var render_items = [{"docid":"e47d94c3-11ef-40fe-81a4-2e2ed31cb21e","roots":{"0de10545-12ed-4c5d-b443-60fbd103c6b2":"d3542f75-d4b9-412c-888a-22813b9a965d"},"root_ids":["0de10545-12ed-4c5d-b443-60fbd103c6b2"]}];
  var docs = Object.values(docs_json)
  if (!docs) {
    return
  }
  const version = docs[0].version.replace('rc', '-rc.').replace('.dev', '-dev.')
  async function embed_document(root) {
    var Bokeh = get_bokeh(root)
    await Bokeh.embed.embed_items_notebook(docs_json, render_items);
    for (const render_item of render_items) {
      for (const root_id of render_item.root_ids) {
    const id_el = document.getElementById(root_id)
    if (id_el.children.length && id_el.children[0].hasAttribute('data-root-id')) {
      const root_el = id_el.children[0]
      root_el.id = root_el.id + '-rendered'
      for (const child of root_el.children) {
            // Ensure JupyterLab does not capture keyboard shortcuts
            // see: https://jupyterlab.readthedocs.io/en/4.1.x/extension/notebook.html#keyboard-interaction-model
        child.setAttribute('data-lm-suppress-shortcuts', 'true')
      }
    }
      }
    }
  }
  function get_bokeh(root) {
    if (root.Bokeh === undefined) {
      return null
    } else if (root.Bokeh.version !== version) {
      if (root.Bokeh.versions === undefined || !root.Bokeh.versions.has(version)) {
    return null
      }
      return root.Bokeh.versions.get(version);
    } else if (root.Bokeh.version === version) {
      return root.Bokeh
    }
    return null
  }
  function is_loaded(root) {
    var Bokeh = get_bokeh(root)
    return (Bokeh != null && Bokeh.Panel !== undefined)
  }
  if (is_loaded(root)) {
    embed_document(root);
  } else {
    var attempts = 0;
    var timer = setInterval(function(root) {
      if (is_loaded(root)) {
        clearInterval(timer);
        embed_document(root);
      } else if (document.readyState == "complete") {
        attempts++;
        if (attempts > 200) {
          clearInterval(timer);
      var Bokeh = get_bokeh(root)
      if (Bokeh == null || Bokeh.Panel == null) {
            console.warn("Panel: ERROR: Unable to run Panel code because Bokeh or Panel library is missing");
      } else {
        console.warn("Panel: WARNING: Attempting to render but not all required libraries could be resolved.")
        embed_document(root)
      }
        }
      }
    }, 25, root)
  }
})(window);</script>
</div>
</div>
<p><strong>With glyphx</strong></p>
<p>I’ve been experimenting with the Glyphx charting library after hearing about it from Christopher Bailey on <em>The Real Python Podcast</em>. It captured my interest because the charts created with this library are in SVG format. This is handy because you can export the chart and enhance it in a tool like Inkscape.</p>
<p>However, Glyphx currently does not support Polars dataframes. We have to pass a list to the x-axis or y-axis to create the chart.</p>
<div id="0961942b" class="cell" data-execution_count="37">
<div class="code-copy-outer-scaffold"><div class="sourceCode cell-code" id="cb42" style="background: #f1f3f5;"><pre class="sourceCode python code-with-copy"><code class="sourceCode python"><span id="cb42-1"><span class="im" style="color: #00769E;
background-color: null;
font-style: inherit;">from</span> glyphx <span class="im" style="color: #00769E;
background-color: null;
font-style: inherit;">import</span> Figure</span>
<span id="cb42-2"><span class="im" style="color: #00769E;
background-color: null;
font-style: inherit;">from</span> glyphx.series <span class="im" style="color: #00769E;
background-color: null;
font-style: inherit;">import</span> LineSeries</span>
<span id="cb42-3"></span>
<span id="cb42-4">non_hollywood <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span> [col <span class="cf" style="color: #003B4F;
background-color: null;
font-weight: bold;
font-style: inherit;">for</span> col <span class="kw" style="color: #003B4F;
background-color: null;
font-weight: bold;
font-style: inherit;">in</span> to_plot.columns[<span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">1</span>:] <span class="cf" style="color: #003B4F;
background-color: null;
font-weight: bold;
font-style: inherit;">if</span> col <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">!=</span> <span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">'Hollywood'</span>]</span>
<span id="cb42-5"></span>
<span id="cb42-6">dates <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span> to_plot[<span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">'DATE OCC'</span>].to_list()</span>
<span id="cb42-7"></span>
<span id="cb42-8">fig <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span> Figure(width<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span><span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">800</span>, height<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span><span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">450</span>).set_title(<span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">'BURGLARY FROM VEHICLE in LA'</span>)</span>
<span id="cb42-9"></span>
<span id="cb42-10"><span class="cf" style="color: #003B4F;
background-color: null;
font-weight: bold;
font-style: inherit;">for</span> col <span class="kw" style="color: #003B4F;
background-color: null;
font-weight: bold;
font-style: inherit;">in</span> non_hollywood:</span>
<span id="cb42-11">    fig.add(LineSeries(dates, to_plot[col].to_list(), color<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span><span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">'#bbbbbb'</span>, label<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span>col))</span>
<span id="cb42-12"></span>
<span id="cb42-13">fig.add(LineSeries(dates, to_plot[<span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">'Hollywood'</span>].to_list(), color<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span><span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">'red'</span>, label<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span><span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">'Hollywood'</span>))</span>
<span id="cb42-14"></span>
<span id="cb42-15">fig.set_legend(<span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">'right'</span>).tight_layout()</span>
<span id="cb42-16">fig.show()<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">;</span></span></code></pre></div></div>
<div class="cell-output cell-output-display">
<div>
<figure class="figure">
<p><img src="https://www.conterval.com/blog/select-subsets-of-rows-and-columns-pandas-polars/index_files/figure-html/cell-38-output-1.svg" class="img-fluid figure-img"></p>
</figure>
</div>
</div>
</div>
<p>Other limitations I encountered are:</p>
<ol type="1">
<li>The circle markers on the lines cannot be removed. Because the data points are very close to each other in the lower part of the chart, the markers make the chart look more like a scatterplot than a line chart.</li>
<li>It’s not possible to display the legend in a three-column layout like in the HvPlot chart. I do not like the long list of neighborhoods, so I ended up listing only the neighborhood of interest in the legend.</li>
</ol>
<div id="013b0903" class="cell" data-execution_count="38">
<div class="code-copy-outer-scaffold"><div class="sourceCode cell-code" id="cb43" style="background: #f1f3f5;"><pre class="sourceCode python code-with-copy"><code class="sourceCode python"><span id="cb43-1"><span class="im" style="color: #00769E;
background-color: null;
font-style: inherit;">from</span> glyphx <span class="im" style="color: #00769E;
background-color: null;
font-style: inherit;">import</span> Figure</span>
<span id="cb43-2"><span class="im" style="color: #00769E;
background-color: null;
font-style: inherit;">from</span> glyphx.series <span class="im" style="color: #00769E;
background-color: null;
font-style: inherit;">import</span> LineSeries</span>
<span id="cb43-3"></span>
<span id="cb43-4">non_hollywood <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span> [col <span class="cf" style="color: #003B4F;
background-color: null;
font-weight: bold;
font-style: inherit;">for</span> col <span class="kw" style="color: #003B4F;
background-color: null;
font-weight: bold;
font-style: inherit;">in</span> to_plot.columns[<span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">1</span>:] <span class="cf" style="color: #003B4F;
background-color: null;
font-weight: bold;
font-style: inherit;">if</span> col <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">!=</span> <span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">'Hollywood'</span>]</span>
<span id="cb43-5"></span>
<span id="cb43-6">dates <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span> to_plot[<span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">'DATE OCC'</span>].to_list()</span>
<span id="cb43-7"></span>
<span id="cb43-8">fig <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span> Figure(width<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span><span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">800</span>, height<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span><span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">450</span>).set_title(<span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">'BURGLARY FROM VEHICLE in LA'</span>)</span>
<span id="cb43-9"></span>
<span id="cb43-10"><span class="cf" style="color: #003B4F;
background-color: null;
font-weight: bold;
font-style: inherit;">for</span> col <span class="kw" style="color: #003B4F;
background-color: null;
font-weight: bold;
font-style: inherit;">in</span> non_hollywood:</span>
<span id="cb43-11">    fig.add(LineSeries(dates, to_plot[col].to_list(), color<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span><span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">'#bbbbbb'</span>))</span>
<span id="cb43-12"></span>
<span id="cb43-13">fig.add(LineSeries(dates, to_plot[<span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">'Hollywood'</span>].to_list(), color<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span><span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">'red'</span>, label<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span><span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">'Hollywood'</span>))</span>
<span id="cb43-14"></span>
<span id="cb43-15">fig.set_legend(<span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">'right'</span>).tight_layout()</span>
<span id="cb43-16">fig.show()<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">;</span></span></code></pre></div></div>
<div class="cell-output cell-output-display">
<div>
<figure class="figure">
<p><img src="https://www.conterval.com/blog/select-subsets-of-rows-and-columns-pandas-polars/index_files/figure-html/cell-39-output-1.svg" class="img-fluid figure-img"></p>
</figure>
</div>
</div>
</div>
<p>Thanks for reading. To improve your data analysis skill using the Polars library, check out my book <a href="https://www.amazon.com/dp/B0GXG1BHG6/">Deep Analysis with Polars</a>.</p>


</section>

 ]]></description>
  <category>data analysis</category>
  <guid>https://www.conterval.com/blog/select-subsets-of-rows-and-columns-pandas-polars/</guid>
  <pubDate>Mon, 08 Jun 2026 05:00:00 GMT</pubDate>
</item>
<item>
  <title></title>
  <link>https://www.conterval.com/blog/pycon-usa/</link>
  <description><![CDATA[ undefined ]]></description>
  <guid>https://www.conterval.com/blog/pycon-usa/</guid>
  <pubDate>Sat, 16 May 2026 05:00:00 GMT</pubDate>
</item>
<item>
  <title>Convert quarto revealjs slides to pdf</title>
  <dc:creator>Joram Mutenge</dc:creator>
  <link>https://www.conterval.com/blog/quarto-revealjs-slides-to-pdf/</link>
  <description><![CDATA[ 




<p>A few days ago, I needed to create slides for a PyCon talk I’ll be giving on May 16 in Long Beach, California. Since I was going to be showing a lot of code in my talk, I didn’t want to use PowerPoint to create the slides because that would have been too tedious. Instead, I opted for Quarto, a publishing system that is particularly suitable for scientific and technical writing. I’m already familiar with Quarto because I use it to write all my blog content, so using it to create slides didn’t require much learning. However, there was one problem.</p>
<section id="submitting-the-slides-to-pycon" class="level2">
<h2 data-anchor-id="submitting-the-slides-to-pycon">Submitting the slides to pycon</h2>
<p>The RevealJS slides I created with Quarto looked beautiful when rendered as HTML, but PyCon required me to submit either a PDF or PPTX file. Although I liked the HTML output and planned to use it during the actual talk, I still needed to convert the slides into an acceptable submission format.</p>
<p>Quarto can export to multiple formats, so I first tried converting my <code>slides.qmd</code> file to a <em>pptx</em> file. However, the output wasn’t nearly as aesthetically pleasing as the original HTML version. I then tried exporting the slides to a <em>pdf</em> file, but the result looked even worse. I needed to find a better way to create the required file formats.</p>
</section>
<section id="the-solution-that-worked" class="level2">
<h2 data-anchor-id="the-solution-that-worked">The solution that worked</h2>
<p>Unhappy with the appearance of the PDF and PPTX files generated by Quarto, I almost resorted to recreating the slides from scratch in Microsoft PowerPoint. Still, I wasn’t enthusiastic about doing that. I had a strong feeling there had to be a better solution.</p>
<p>While searching for alternatives, I tried rendering the slides in the browser and using the browser’s “Print to PDF” option. Again, the downloaded PDF slides left much to be desired. The whole process felt impossible until I discovered <strong>DeckTape</strong>, a high-quality PDF exporter for HTML presentation frameworks.</p>
<p>Desperate to solve my problem, I installed DeckTape globally with the following command:</p>
<div class="code-copy-outer-scaffold"><div class="sourceCode" id="cb1" style="background: #f1f3f5;"><pre class="sourceCode bash code-with-copy"><code class="sourceCode bash"><span id="cb1-1"><span class="ex" style="color: null;
background-color: null;
font-style: inherit;">npm</span> install <span class="at" style="color: #657422;
background-color: null;
font-style: inherit;">-g</span> decktape</span></code></pre></div></div>
<p>I then used it to convert my rendered Quarto slides into a PDF:</p>
<div class="code-copy-outer-scaffold"><div class="sourceCode" id="cb2" style="background: #f1f3f5;"><pre class="sourceCode bash code-with-copy"><code class="sourceCode bash"><span id="cb2-1"><span class="ex" style="color: null;
background-color: null;
font-style: inherit;">decktape</span> http://localhost:4407/blog/pycon-usa/#/title-slide pycon_slides.pdf</span></code></pre></div></div>
<p>The structure of the command can be broken down as follows:</p>
<div class="code-copy-outer-scaffold"><div class="sourceCode" id="cb3" style="background: #f1f3f5;"><pre class="sourceCode bash code-with-copy"><code class="sourceCode bash"><span id="cb3-1"><span class="ex" style="color: null;
background-color: null;
font-style: inherit;">decktape</span> <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">&lt;</span>URL to your Quarto RevealJS slides<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">&gt;</span> <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">&lt;</span>name_of_output_file<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">&gt;</span>.pdf</span></code></pre></div></div>
<p>The generated PDF slides looked exactly the same as the rendered HTML slides. DeckTape will definitely be my go-to tool for creating PDF slides as I make speaking a regular part of my career.</p>


</section>

 ]]></description>
  <guid>https://www.conterval.com/blog/quarto-revealjs-slides-to-pdf/</guid>
  <pubDate>Sun, 10 May 2026 05:00:00 GMT</pubDate>
</item>
<item>
  <title>Writing my polars book</title>
  <dc:creator>Joram Mutenge</dc:creator>
  <link>https://www.conterval.com/blog/writing-my-polars-book/</link>
  <description><![CDATA[ 




<p>I’ve written a few <a href="https://www.jorammutenge.com/books.html">books under my name</a>, but <em><a href="https://www.amazon.com/dp/B0GXG1BHG6/">Deep Analysis with Polars</a></em> is the first technical book I’ve ever written. Let’s just say I didn’t know what I was getting myself into.</p>
<div class="gray-text center-text">
<div class="quarto-figure quarto-figure-center">
<figure class="figure">
<p><img src="https://www.conterval.com/blog/writing-my-polars-book/image.png" class="img-fluid figure-img"></p>
<figcaption>me holding a proof copy of the book</figcaption>
</figure>
</div>
</div>
<section id="why-i-wrote-the-book" class="level2">
<h2 data-anchor-id="why-i-wrote-the-book">Why I wrote the book</h2>
<p>This book is not an introduction to Polars; there are many books about that. Rather, it is intended to demonstrate to readers who are already familiar with Polars that the library is mature enough to support <strong>deep analysis</strong>, including the kind typically handled with complex SQL queries.</p>
<p>I’ve been using Polars in production for years, and the fact that everything runs as expected is a testament to its capability as a tool for both analytical and data transformation tasks.</p>
<p>Most of the Polars code I encounter in blog posts and tutorials is written with a <em>pandas accent</em>. Much of it is full of anti-patterns carried over from pandas, such as using square bracket notation and overusing intermediate variables. <em><a href="https://www.amazon.com/dp/B0GXG1BHG6/">Deep Analysis with Polars</a></em> introduces a method-chaining style that takes advantage of the query optimizer. More importantly, it emphasizes the use of expressions, which are the building blocks of Polars code. Put simply, this book offers an opinionated approach to writing Polars code.</p>
</section>
<section id="tools-used" class="level2">
<h2 data-anchor-id="tools-used">Tools used</h2>
<p>Initially, I didn’t know which tools were best for writing a technical book, but I knew for sure that Google Docs or Microsoft Word weren’t going to cut it. To learn about available tools, I listened to podcast episodes featuring technical book authors I respect, such as Matt Harrison, who discussed Jupyter Book.</p>
<p>I almost considered this tool, having used Jupyter notebooks for years. Other authors talked about using Markdown, but that felt too limiting for me. Then it dawned on me: I already create my blog posts using Quarto, why not use it for my book? It may not surprise you to learn that I used multiple tools to create <em><a href="https://www.amazon.com/dp/B0GXG1BHG6/">Deep Analysis with Polars</a></em>.</p>
<section id="vs-code-as-text-editor" class="level3">
<h3 data-anchor-id="vs-code-as-text-editor">VS code as text editor</h3>
<p>All the writing for this book was done in VS Code. People often swear by their favorite editors and claim theirs is the best, but the reality is that VS Code won the editor wars. Fortunately, it’s also my preferred editor, so I have no qualms about that.</p>
<p>What I especially appreciate is the availability of extensions and plug-ins that make it even more powerful. Most of the other tools I used were simply extensions within VS Code.</p>
</section>
<section id="quarto-for-first-draft" class="level3">
<h3 data-anchor-id="quarto-for-first-draft">Quarto for first draft</h3>
<p>I wrote the first draft of the book using Quarto. I wanted a tool that allowed me to execute code and generate results automatically, avoiding the need to paste outputs manually. This ensured that the code included in the book not only ran but also produced the intended results.</p>
<p>What made Quarto especially convenient was that the Polars library was updated multiple times during the writing process. Since I wanted to use the latest version, I needed to ensure that previously written chapters still ran without errors or warnings. With Quarto, all I had to do was render the entire project and verify that it completed successfully.</p>
<p>Having the book as a website was useful, but I also wanted <em><a href="https://www.amazon.com/dp/B0GXG1BHG6/">Deep Analysis with Polars</a></em> to exist as a physical book. Since PDF is the preferred format for print, I tried rendering a PDF using Quarto, but the result wasn’t aesthetically pleasing enough for me. I have a strong eye for design, so I quickly decided to use a different tool.</p>
</section>
<section id="asciidoctor-for-paperback-and-ebook" class="level3">
<h3 data-anchor-id="asciidoctor-for-paperback-and-ebook">Asciidoctor for paperback and ebook</h3>
<p>I once heard from an O’Reilly author that O’Reilly accepts manuscripts in <em>.adoc</em> format. I wasn’t familiar with it at the time, so I looked it up and learned that it is produced by Asciidoctor. I admire the typesetting used in O’Reilly books and wanted my book to have a similar style.</p>
<p>Further research led me to a repository called <a href="https://github.com/lirantal/asciidoc-book-starter">asciidoc-book-starter</a>, created by a GitHub user named lirantal. This became the foundation for generating the print and EPUB versions of my book. Of course, I modified the repository and wrote custom code to tailor the design to my preferences.</p>
</section>
<section id="inkscape-for-book-cover" class="level3">
<h3 data-anchor-id="inkscape-for-book-cover">Inkscape for book cover</h3>
<p>Several people have told me that the book cover looks beautiful. I happily accept the compliment, as I designed it myself using the open-source software Inkscape. I was already familiar with Adobe Illustrator (which I could no longer use after my student subscription expired), so learning Inkscape was straightforward.</p>
</section>
</section>
<section id="making-the-book-better" class="level2">
<h2 data-anchor-id="making-the-book-better">Making the book better</h2>
<p>Technical books, unlike novels, have a high standard for correctness. The code must run, and more importantly, the explanations must be accurate. To gather feedback, I published the entire book on this very website. This was easy to do since the first draft was written in Quarto, which makes it simple to convert <em>.qmd</em> documents into web pages.</p>
<p>Many people reached out with suggestions, which I incorporated to improve the book. I’m grateful to everyone who provided feedback. I even learned new ways to use Polars that I wouldn’t have discovered otherwise.</p>
<p>Additionally, I proofread the book from beginning to end, correcting typos and improving unclear sentences. While I can’t guarantee that the book is completely free of errors, I’m confident that any remaining issues are minimal. But should you find any, please create an issue on the <a href="https://github.com/jorammutenge/deep-analysis-with-polars-book/issues">book’s GitHub page</a>.</p>
</section>
<section id="where-you-can-buy-the-book" class="level2">
<h2 data-anchor-id="where-you-can-buy-the-book">Where you can buy the book</h2>
<p>I’m an independent author, so you can support my work by purchasing the book on the following marketplaces:</p>
<ul>
<li><a href="https://www.amazon.com/dp/B0GXG1BHG6/">Amazon</a> for Kindle and paperback</li>
<li><a href="https://leanpub.com/deep-analysis-with-polars">Leanpub</a> for eBook and PDF</li>
</ul>
<p>I recommend the printed paperback version if you’d like to fully appreciate the book’s beautiful design.</p>
<p>I’m also open to podcast interviews to discuss the book or share insights into the writing process.</p>


</section>

 ]]></description>
  <guid>https://www.conterval.com/blog/writing-my-polars-book/</guid>
  <pubDate>Sat, 18 Apr 2026 05:00:00 GMT</pubDate>
</item>
<item>
  <title>Understanding structs in rust</title>
  <dc:creator>Joram Mutenge</dc:creator>
  <link>https://www.conterval.com/blog/structs-in-rust/</link>
  <description><![CDATA[ 




<p>A struct in Rust is a custom data type that lets you group related data under a single name. By default, structs have no methods, but you can add them using <code>impl</code> blocks. There are three types of structs in Rust:</p>
<ol type="1">
<li>Named-field structs - fields have names.</li>
<li>Tuple structs - fields have positions only and no names.</li>
<li>Unit-like structs - no fields at all.</li>
</ol>
<p>In this article, I will focus only on the first type.</p>
<section id="create-struct-of-media-library" class="level2">
<h2 data-anchor-id="create-struct-of-media-library">Create struct of media library</h2>
<p>Let’s define a struct called <code>Media</code> that contains the attributes of titles in our media library. The movies and TV series added to this library will all share the attributes defined in the struct. <em>Girls</em> and <em>Dune</em> will serve as example titles in the media library.</p>
<div class="code-copy-outer-scaffold"><div class="sourceCode" id="cb1" style="background: #f1f3f5;"><pre class="sourceCode rs code-with-copy"><code class="sourceCode rust"><span id="cb1-1"><span class="kw" style="color: #003B4F;
background-color: null;
font-weight: bold;
font-style: inherit;">struct</span> Media <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">{</span></span>
<span id="cb1-2">    title<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">:</span> <span class="dt" style="color: #AD0000;
background-color: null;
font-style: inherit;">String</span><span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">,</span></span>
<span id="cb1-3">    release_year<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">:</span> <span class="dt" style="color: #AD0000;
background-color: null;
font-style: inherit;">u16</span><span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">,</span></span>
<span id="cb1-4">    rating<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">:</span> <span class="dt" style="color: #AD0000;
background-color: null;
font-style: inherit;">f32</span><span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">,</span></span>
<span id="cb1-5">    is_series<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">:</span> <span class="dt" style="color: #AD0000;
background-color: null;
font-style: inherit;">bool</span><span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">,</span></span>
<span id="cb1-6"><span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">}</span></span></code></pre></div></div>
</section>
<section id="add-titles-to-library" class="level2">
<h2 data-anchor-id="add-titles-to-library">Add titles to library</h2>
<p>After creating the struct, we can add two titles, <em>Girls</em> and <em>Dune</em>, and print out their attributes.</p>
<div class="code-copy-outer-scaffold"><div class="sourceCode" id="cb2" style="background: #f1f3f5;"><pre class="sourceCode rs code-with-copy"><code class="sourceCode rust"><span id="cb2-1"><span class="kw" style="color: #003B4F;
background-color: null;
font-weight: bold;
font-style: inherit;">struct</span> Media <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">{</span></span>
<span id="cb2-2">    title<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">:</span> <span class="dt" style="color: #AD0000;
background-color: null;
font-style: inherit;">String</span><span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">,</span></span>
<span id="cb2-3">    release_year<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">:</span> <span class="dt" style="color: #AD0000;
background-color: null;
font-style: inherit;">u16</span><span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">,</span></span>
<span id="cb2-4">    rating<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">:</span> <span class="dt" style="color: #AD0000;
background-color: null;
font-style: inherit;">f32</span><span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">,</span></span>
<span id="cb2-5">    is_series<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">:</span> <span class="dt" style="color: #AD0000;
background-color: null;
font-style: inherit;">bool</span><span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">,</span></span>
<span id="cb2-6"><span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">}</span></span>
<span id="cb2-7"></span>
<span id="cb2-8"><span class="kw" style="color: #003B4F;
background-color: null;
font-weight: bold;
font-style: inherit;">fn</span> main() <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">{</span></span>
<span id="cb2-9">    <span class="kw" style="color: #003B4F;
background-color: null;
font-weight: bold;
font-style: inherit;">let</span> girls <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span> Media <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">{</span></span>
<span id="cb2-10">        title<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">:</span> <span class="dt" style="color: #AD0000;
background-color: null;
font-style: inherit;">String</span><span class="pp" style="color: #AD0000;
background-color: null;
font-style: inherit;">::</span>from(<span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"Girls"</span>)<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">,</span></span>
<span id="cb2-11">        release_year<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">:</span> <span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">2012</span><span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">,</span></span>
<span id="cb2-12">        rating<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">:</span> <span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">9.5</span><span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">,</span></span>
<span id="cb2-13">        is_series<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">:</span> <span class="cn" style="color: #8f5902;
background-color: null;
font-style: inherit;">true</span><span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">,</span></span>
<span id="cb2-14">    <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">};</span></span>
<span id="cb2-15"></span>
<span id="cb2-16">    <span class="pp" style="color: #AD0000;
background-color: null;
font-style: inherit;">println!</span>(</span>
<span id="cb2-17">        <span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"Type: {}</span><span class="sc" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">\n</span><span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">Title: {}</span><span class="sc" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">\n</span><span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">Released: {}</span><span class="sc" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">\n</span><span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">Rating: {}</span><span class="sc" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">\n</span><span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"</span><span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">,</span></span>
<span id="cb2-18">        <span class="cf" style="color: #003B4F;
background-color: null;
font-weight: bold;
font-style: inherit;">if</span> girls<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">.</span>is_series <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">{</span> <span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"TV series"</span> <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">}</span> <span class="cf" style="color: #003B4F;
background-color: null;
font-weight: bold;
font-style: inherit;">else</span> <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">{</span> <span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"Movie"</span> <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">},</span></span>
<span id="cb2-19">        girls<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">.</span>title<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">,</span> girls<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">.</span>release_year<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">,</span> girls<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">.</span>rating)<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">;</span></span>
<span id="cb2-20"></span>
<span id="cb2-21">    <span class="kw" style="color: #003B4F;
background-color: null;
font-weight: bold;
font-style: inherit;">let</span> dune <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span> Media <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">{</span></span>
<span id="cb2-22">        title<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">:</span> <span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"Dune"</span><span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">.</span>to_string()<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">,</span></span>
<span id="cb2-23">        release_year<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">:</span> <span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">2021</span><span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">,</span></span>
<span id="cb2-24">        rating<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">:</span> <span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">6.5</span><span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">,</span></span>
<span id="cb2-25">        is_series<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">:</span> <span class="cn" style="color: #8f5902;
background-color: null;
font-style: inherit;">false</span><span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">,</span></span>
<span id="cb2-26">    <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">};</span></span>
<span id="cb2-27"></span>
<span id="cb2-28">    <span class="pp" style="color: #AD0000;
background-color: null;
font-style: inherit;">println!</span>(</span>
<span id="cb2-29">        <span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"Type: {}</span><span class="sc" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">\n</span><span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">Title: {}</span><span class="sc" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">\n</span><span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">Released: {}</span><span class="sc" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">\n</span><span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">Rating: {}</span><span class="sc" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">\n</span><span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"</span><span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">,</span></span>
<span id="cb2-30">        <span class="cf" style="color: #003B4F;
background-color: null;
font-weight: bold;
font-style: inherit;">if</span> dune<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">.</span>is_series <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">{</span> <span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"TV series"</span> <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">}</span> <span class="cf" style="color: #003B4F;
background-color: null;
font-weight: bold;
font-style: inherit;">else</span> <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">{</span> <span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"Movie"</span> <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">},</span></span>
<span id="cb2-31">        dune<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">.</span>title<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">,</span> dune<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">.</span>release_year<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">,</span> dune<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">.</span>rating)<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">;</span></span>
<span id="cb2-32"></span>
<span id="cb2-33"><span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">}</span></span></code></pre></div></div>
<pre class="{raw}"><code>Type: TV series
Title: Girls
Released: 2012
Rating: 9.5

Type: Movie
Title: Dune
Released: 2021
Rating: 6.5</code></pre>
</section>
<section id="create-function-to-print" class="level2">
<h2 data-anchor-id="create-function-to-print">Create function to print</h2>
<p>Looking at the code above, I can’t help but notice that I am repeating the same print logic. This repetition can become tedious and annoying if I have ten or even fifty titles in my media library. A better approach is to create a function called <code>describe</code> that I can call whenever I want to print the details of a title.</p>
<p>While I’m at it, I will store the title instances in a vector so that I only need to call <code>describe</code> once. This works because I can simply loop through the vector and print the attributes of each title.</p>
<div class="code-copy-outer-scaffold"><div class="sourceCode" id="cb4" style="background: #f1f3f5;"><pre class="sourceCode rs code-with-copy"><code class="sourceCode rust"><span id="cb4-1"><span class="kw" style="color: #003B4F;
background-color: null;
font-weight: bold;
font-style: inherit;">struct</span> Media <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">{</span></span>
<span id="cb4-2">    title<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">:</span> <span class="dt" style="color: #AD0000;
background-color: null;
font-style: inherit;">String</span><span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">,</span></span>
<span id="cb4-3">    release_year<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">:</span> <span class="dt" style="color: #AD0000;
background-color: null;
font-style: inherit;">u16</span><span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">,</span></span>
<span id="cb4-4">    rating<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">:</span> <span class="dt" style="color: #AD0000;
background-color: null;
font-style: inherit;">f32</span><span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">,</span></span>
<span id="cb4-5">    is_series<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">:</span> <span class="dt" style="color: #AD0000;
background-color: null;
font-style: inherit;">bool</span><span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">,</span></span>
<span id="cb4-6"><span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">}</span></span>
<span id="cb4-7"></span>
<span id="cb4-8"><span class="kw" style="color: #003B4F;
background-color: null;
font-weight: bold;
font-style: inherit;">fn</span> describe(media<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">:</span> <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">&amp;</span>Media) <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">{</span></span>
<span id="cb4-9">    <span class="pp" style="color: #AD0000;
background-color: null;
font-style: inherit;">println!</span>(</span>
<span id="cb4-10">        <span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"Type: {}</span><span class="sc" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">\n</span><span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">Title: {}</span><span class="sc" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">\n</span><span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">Released: {}</span><span class="sc" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">\n</span><span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">Rating: {}</span><span class="sc" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">\n</span><span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"</span><span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">,</span></span>
<span id="cb4-11">        <span class="cf" style="color: #003B4F;
background-color: null;
font-weight: bold;
font-style: inherit;">if</span> media<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">.</span>is_series <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">{</span> <span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"TV series"</span> <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">}</span> <span class="cf" style="color: #003B4F;
background-color: null;
font-weight: bold;
font-style: inherit;">else</span> <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">{</span> <span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"Movie"</span> <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">},</span></span>
<span id="cb4-12">        media<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">.</span>title<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">,</span> media<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">.</span>release_year<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">,</span> media<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">.</span>rating)<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">;</span></span>
<span id="cb4-13"><span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">}</span></span>
<span id="cb4-14"></span>
<span id="cb4-15"><span class="kw" style="color: #003B4F;
background-color: null;
font-weight: bold;
font-style: inherit;">fn</span> main() <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">{</span></span>
<span id="cb4-16">    <span class="kw" style="color: #003B4F;
background-color: null;
font-weight: bold;
font-style: inherit;">let</span> girls <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span> Media <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">{</span></span>
<span id="cb4-17">        title<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">:</span> <span class="dt" style="color: #AD0000;
background-color: null;
font-style: inherit;">String</span><span class="pp" style="color: #AD0000;
background-color: null;
font-style: inherit;">::</span>from(<span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"Girls"</span>)<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">,</span></span>
<span id="cb4-18">        release_year<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">:</span> <span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">2012</span><span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">,</span></span>
<span id="cb4-19">        rating<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">:</span> <span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">9.5</span><span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">,</span></span>
<span id="cb4-20">        is_series<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">:</span> <span class="cn" style="color: #8f5902;
background-color: null;
font-style: inherit;">true</span><span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">,</span></span>
<span id="cb4-21">    <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">};</span></span>
<span id="cb4-22"></span>
<span id="cb4-23">    <span class="kw" style="color: #003B4F;
background-color: null;
font-weight: bold;
font-style: inherit;">let</span> dune <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span> Media <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">{</span></span>
<span id="cb4-24">        title<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">:</span> <span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"Dune"</span><span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">.</span>to_string()<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">,</span></span>
<span id="cb4-25">        release_year<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">:</span> <span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">2021</span><span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">,</span></span>
<span id="cb4-26">        rating<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">:</span> <span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">6.5</span><span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">,</span></span>
<span id="cb4-27">        is_series<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">:</span> <span class="cn" style="color: #8f5902;
background-color: null;
font-style: inherit;">false</span><span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">,</span></span>
<span id="cb4-28">    <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">};</span></span>
<span id="cb4-29"></span>
<span id="cb4-30">    <span class="kw" style="color: #003B4F;
background-color: null;
font-weight: bold;
font-style: inherit;">let</span> library <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span> <span class="pp" style="color: #AD0000;
background-color: null;
font-style: inherit;">vec!</span>[girls<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">,</span> dune]<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">;</span></span>
<span id="cb4-31"></span>
<span id="cb4-32">    <span class="cf" style="color: #003B4F;
background-color: null;
font-weight: bold;
font-style: inherit;">for</span> media <span class="kw" style="color: #003B4F;
background-color: null;
font-weight: bold;
font-style: inherit;">in</span> <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">&amp;</span>library <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">{</span></span>
<span id="cb4-33">        describe(media)<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">;</span></span>
<span id="cb4-34">    <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">}</span></span>
<span id="cb4-35"><span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">}</span></span></code></pre></div></div>
<pre class="{raw}"><code>Type: TV series
Title: Girls
Released: 2012
Rating: 9.5

Type: Movie
Title: Dune
Released: 2021
Rating: 6.5</code></pre>
</section>
<section id="add-function-as-method" class="level2">
<h2 data-anchor-id="add-function-as-method">Add function as method</h2>
<p>An even better approach is to refactor the code by adding <code>describe</code> directly to <code>Media</code> as a method. This is where the <code>impl</code> block comes in. Once <code>describe</code> becomes a method, calling it changes from <code>describe(media)</code> to <code>media.describe()</code>.</p>
<div class="code-copy-outer-scaffold"><div class="sourceCode" id="cb6" style="background: #f1f3f5;"><pre class="sourceCode rs code-with-copy"><code class="sourceCode rust"><span id="cb6-1"><span class="kw" style="color: #003B4F;
background-color: null;
font-weight: bold;
font-style: inherit;">struct</span> Media <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">{</span></span>
<span id="cb6-2">    title<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">:</span> <span class="dt" style="color: #AD0000;
background-color: null;
font-style: inherit;">String</span><span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">,</span></span>
<span id="cb6-3">    release_year<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">:</span> <span class="dt" style="color: #AD0000;
background-color: null;
font-style: inherit;">u16</span><span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">,</span></span>
<span id="cb6-4">    rating<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">:</span> <span class="dt" style="color: #AD0000;
background-color: null;
font-style: inherit;">f32</span><span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">,</span></span>
<span id="cb6-5">    is_series<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">:</span> <span class="dt" style="color: #AD0000;
background-color: null;
font-style: inherit;">bool</span><span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">,</span></span>
<span id="cb6-6"><span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">}</span></span>
<span id="cb6-7"></span>
<span id="cb6-8"><span class="kw" style="color: #003B4F;
background-color: null;
font-weight: bold;
font-style: inherit;">impl</span> Media <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">{</span></span>
<span id="cb6-9">    <span class="kw" style="color: #003B4F;
background-color: null;
font-weight: bold;
font-style: inherit;">fn</span> describe(<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">&amp;</span><span class="kw" style="color: #003B4F;
background-color: null;
font-weight: bold;
font-style: inherit;">self</span>) <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">{</span></span>
<span id="cb6-10">        <span class="kw" style="color: #003B4F;
background-color: null;
font-weight: bold;
font-style: inherit;">let</span> media_type <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span> <span class="cf" style="color: #003B4F;
background-color: null;
font-weight: bold;
font-style: inherit;">if</span> <span class="kw" style="color: #003B4F;
background-color: null;
font-weight: bold;
font-style: inherit;">self</span><span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">.</span>is_series <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">{</span> <span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"TV series"</span> <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">}</span> <span class="cf" style="color: #003B4F;
background-color: null;
font-weight: bold;
font-style: inherit;">else</span> <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">{</span> <span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"Movie"</span> <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">};</span></span>
<span id="cb6-11">        <span class="pp" style="color: #AD0000;
background-color: null;
font-style: inherit;">println!</span>(</span>
<span id="cb6-12">            <span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"Type: {}</span><span class="sc" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">\n</span><span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">Title: {}</span><span class="sc" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">\n</span><span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">Released: {}</span><span class="sc" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">\n</span><span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">Rating: {}</span><span class="sc" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">\n</span><span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"</span><span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">,</span></span>
<span id="cb6-13">            media_type<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">,</span></span>
<span id="cb6-14">            <span class="kw" style="color: #003B4F;
background-color: null;
font-weight: bold;
font-style: inherit;">self</span><span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">.</span>title<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">,</span></span>
<span id="cb6-15">            <span class="kw" style="color: #003B4F;
background-color: null;
font-weight: bold;
font-style: inherit;">self</span><span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">.</span>release_year<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">,</span></span>
<span id="cb6-16">            <span class="kw" style="color: #003B4F;
background-color: null;
font-weight: bold;
font-style: inherit;">self</span><span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">.</span>rating<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">,</span></span>
<span id="cb6-17">        )<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">;</span></span>
<span id="cb6-18">    <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">}</span></span>
<span id="cb6-19"><span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">}</span></span>
<span id="cb6-20"></span>
<span id="cb6-21"><span class="kw" style="color: #003B4F;
background-color: null;
font-weight: bold;
font-style: inherit;">fn</span> main() <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">{</span></span>
<span id="cb6-22">    <span class="kw" style="color: #003B4F;
background-color: null;
font-weight: bold;
font-style: inherit;">let</span> girls <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span> Media <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">{</span></span>
<span id="cb6-23">        title<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">:</span> <span class="dt" style="color: #AD0000;
background-color: null;
font-style: inherit;">String</span><span class="pp" style="color: #AD0000;
background-color: null;
font-style: inherit;">::</span>from(<span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"Girls"</span>)<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">,</span></span>
<span id="cb6-24">        release_year<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">:</span> <span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">2012</span><span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">,</span></span>
<span id="cb6-25">        rating<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">:</span> <span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">9.5</span><span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">,</span></span>
<span id="cb6-26">        is_series<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">:</span> <span class="cn" style="color: #8f5902;
background-color: null;
font-style: inherit;">true</span><span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">,</span></span>
<span id="cb6-27">    <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">};</span></span>
<span id="cb6-28"></span>
<span id="cb6-29">    <span class="kw" style="color: #003B4F;
background-color: null;
font-weight: bold;
font-style: inherit;">let</span> dune <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span> Media <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">{</span></span>
<span id="cb6-30">        title<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">:</span> <span class="dt" style="color: #AD0000;
background-color: null;
font-style: inherit;">String</span><span class="pp" style="color: #AD0000;
background-color: null;
font-style: inherit;">::</span>from(<span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"Dune"</span>)<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">,</span></span>
<span id="cb6-31">        release_year<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">:</span> <span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">2021</span><span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">,</span></span>
<span id="cb6-32">        rating<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">:</span> <span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">6.5</span><span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">,</span></span>
<span id="cb6-33">        is_series<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">:</span> <span class="cn" style="color: #8f5902;
background-color: null;
font-style: inherit;">false</span><span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">,</span></span>
<span id="cb6-34">    <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">};</span></span>
<span id="cb6-35"></span>
<span id="cb6-36">    <span class="kw" style="color: #003B4F;
background-color: null;
font-weight: bold;
font-style: inherit;">let</span> library <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span> <span class="pp" style="color: #AD0000;
background-color: null;
font-style: inherit;">vec!</span>[girls<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">,</span> dune]<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">;</span></span>
<span id="cb6-37"></span>
<span id="cb6-38">    <span class="cf" style="color: #003B4F;
background-color: null;
font-weight: bold;
font-style: inherit;">for</span> media <span class="kw" style="color: #003B4F;
background-color: null;
font-weight: bold;
font-style: inherit;">in</span> <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">&amp;</span>library <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">{</span></span>
<span id="cb6-39">        media<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">.</span>describe()<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">;</span></span>
<span id="cb6-40">    <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">}</span>  </span>
<span id="cb6-41"><span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">}</span></span></code></pre></div></div>
<pre class="{raw}"><code>Type: TV series
Title: Girls
Released: 2012
Rating: 9.5

Type: Movie
Title: Dune
Released: 2021
Rating: 6.5</code></pre>
</section>
<section id="using-a-constructor-to-create-titles" class="level2">
<h2 data-anchor-id="using-a-constructor-to-create-titles">Using a constructor to create titles</h2>
<p>You may have noticed that every time I create a title to add to the media library, I have to type out each attribute name, such as <code>release_year: 2021</code>. Once again, this becomes tedious, especially when adding many titles.</p>
<p>I can avoid this repetition by creating a constructor for the <code>Media</code> struct. With a constructor in place, I can simply write <code>Media::new("Girls", 2012, 9.5, true);</code> to add the title <em>Girls</em> to the library, saving myself from repeatedly typing out the attribute names.</p>
<div class="code-copy-outer-scaffold"><div class="sourceCode" id="cb8" style="background: #f1f3f5;"><pre class="sourceCode rs code-with-copy"><code class="sourceCode rust"><span id="cb8-1"><span class="kw" style="color: #003B4F;
background-color: null;
font-weight: bold;
font-style: inherit;">struct</span> Media <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">{</span></span>
<span id="cb8-2">    title<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">:</span> <span class="dt" style="color: #AD0000;
background-color: null;
font-style: inherit;">String</span><span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">,</span></span>
<span id="cb8-3">    release_year<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">:</span> <span class="dt" style="color: #AD0000;
background-color: null;
font-style: inherit;">u16</span><span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">,</span></span>
<span id="cb8-4">    rating<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">:</span> <span class="dt" style="color: #AD0000;
background-color: null;
font-style: inherit;">f32</span><span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">,</span></span>
<span id="cb8-5">    is_series<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">:</span> <span class="dt" style="color: #AD0000;
background-color: null;
font-style: inherit;">bool</span><span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">,</span></span>
<span id="cb8-6"><span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">}</span></span>
<span id="cb8-7"></span>
<span id="cb8-8"><span class="kw" style="color: #003B4F;
background-color: null;
font-weight: bold;
font-style: inherit;">impl</span> Media <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">{</span></span>
<span id="cb8-9">    <span class="kw" style="color: #003B4F;
background-color: null;
font-weight: bold;
font-style: inherit;">fn</span> new(title<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">:</span> <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">&amp;</span><span class="dt" style="color: #AD0000;
background-color: null;
font-style: inherit;">str</span><span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">,</span> release_year<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">:</span> <span class="dt" style="color: #AD0000;
background-color: null;
font-style: inherit;">u16</span><span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">,</span> rating<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">:</span> <span class="dt" style="color: #AD0000;
background-color: null;
font-style: inherit;">f32</span><span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">,</span> is_series<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">:</span> <span class="dt" style="color: #AD0000;
background-color: null;
font-style: inherit;">bool</span>) <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">-&gt;</span> <span class="dt" style="color: #AD0000;
background-color: null;
font-style: inherit;">Self</span> <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">{</span></span>
<span id="cb8-10">        <span class="dt" style="color: #AD0000;
background-color: null;
font-style: inherit;">Self</span> <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">{</span></span>
<span id="cb8-11">            title<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">:</span> title<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">.</span>to_string()<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">,</span></span>
<span id="cb8-12">            release_year<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">,</span></span>
<span id="cb8-13">            rating<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">,</span></span>
<span id="cb8-14">            is_series<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">,</span></span>
<span id="cb8-15">        <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">}</span></span>
<span id="cb8-16">    <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">}</span></span>
<span id="cb8-17"></span>
<span id="cb8-18">    <span class="kw" style="color: #003B4F;
background-color: null;
font-weight: bold;
font-style: inherit;">fn</span> describe(<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">&amp;</span><span class="kw" style="color: #003B4F;
background-color: null;
font-weight: bold;
font-style: inherit;">self</span>) <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">{</span></span>
<span id="cb8-19">        <span class="kw" style="color: #003B4F;
background-color: null;
font-weight: bold;
font-style: inherit;">let</span> media_type <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span> <span class="cf" style="color: #003B4F;
background-color: null;
font-weight: bold;
font-style: inherit;">if</span> <span class="kw" style="color: #003B4F;
background-color: null;
font-weight: bold;
font-style: inherit;">self</span><span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">.</span>is_series <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">{</span> <span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"TV series"</span> <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">}</span> <span class="cf" style="color: #003B4F;
background-color: null;
font-weight: bold;
font-style: inherit;">else</span> <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">{</span> <span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"Movie"</span> <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">};</span></span>
<span id="cb8-20">        <span class="pp" style="color: #AD0000;
background-color: null;
font-style: inherit;">println!</span>(</span>
<span id="cb8-21">            <span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"Type: {}</span><span class="sc" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">\n</span><span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">Title: {}</span><span class="sc" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">\n</span><span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">Released: {}</span><span class="sc" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">\n</span><span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">Rating: {}</span><span class="sc" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">\n</span><span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"</span><span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">,</span></span>
<span id="cb8-22">            media_type<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">,</span></span>
<span id="cb8-23">            <span class="kw" style="color: #003B4F;
background-color: null;
font-weight: bold;
font-style: inherit;">self</span><span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">.</span>title<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">,</span></span>
<span id="cb8-24">            <span class="kw" style="color: #003B4F;
background-color: null;
font-weight: bold;
font-style: inherit;">self</span><span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">.</span>release_year<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">,</span></span>
<span id="cb8-25">            <span class="kw" style="color: #003B4F;
background-color: null;
font-weight: bold;
font-style: inherit;">self</span><span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">.</span>rating<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">,</span></span>
<span id="cb8-26">        )<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">;</span></span>
<span id="cb8-27">    <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">}</span></span>
<span id="cb8-28"><span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">}</span></span>
<span id="cb8-29"></span>
<span id="cb8-30"><span class="kw" style="color: #003B4F;
background-color: null;
font-weight: bold;
font-style: inherit;">fn</span> main() <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">{</span></span>
<span id="cb8-31">    <span class="kw" style="color: #003B4F;
background-color: null;
font-weight: bold;
font-style: inherit;">let</span> girls <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span> <span class="pp" style="color: #AD0000;
background-color: null;
font-style: inherit;">Media::</span>new(<span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"Girls"</span><span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">,</span> <span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">2012</span><span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">,</span> <span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">9.5</span><span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">,</span> <span class="cn" style="color: #8f5902;
background-color: null;
font-style: inherit;">true</span>)<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">;</span></span>
<span id="cb8-32">    <span class="kw" style="color: #003B4F;
background-color: null;
font-weight: bold;
font-style: inherit;">let</span> dune <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span> <span class="pp" style="color: #AD0000;
background-color: null;
font-style: inherit;">Media::</span>new(<span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"Dune"</span><span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">,</span> <span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">2021</span><span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">,</span> <span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">6.5</span><span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">,</span> <span class="cn" style="color: #8f5902;
background-color: null;
font-style: inherit;">false</span>)<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">;</span></span>
<span id="cb8-33"></span>
<span id="cb8-34">    <span class="kw" style="color: #003B4F;
background-color: null;
font-weight: bold;
font-style: inherit;">let</span> library <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span> <span class="pp" style="color: #AD0000;
background-color: null;
font-style: inherit;">vec!</span>[girls<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">,</span> dune]<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">;</span></span>
<span id="cb8-35"></span>
<span id="cb8-36">    <span class="cf" style="color: #003B4F;
background-color: null;
font-weight: bold;
font-style: inherit;">for</span> media <span class="kw" style="color: #003B4F;
background-color: null;
font-weight: bold;
font-style: inherit;">in</span> <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">&amp;</span>library <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">{</span></span>
<span id="cb8-37">        media<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">.</span>describe()<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">;</span></span>
<span id="cb8-38">    <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">}</span>  </span>
<span id="cb8-39"><span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">}</span></span></code></pre></div></div>
<pre class="{raw}"><code>Type: TV series
Title: Girls
Released: 2012
Rating: 9.5

Type: Movie
Title: Dune
Released: 2021
Rating: 6.5</code></pre>


</section>

 ]]></description>
  <category>rust</category>
  <guid>https://www.conterval.com/blog/structs-in-rust/</guid>
  <pubDate>Sat, 07 Feb 2026 06:00:00 GMT</pubDate>
</item>
<item>
  <title>An uncomfortable business lesson from The Apprentice</title>
  <dc:creator>Joram Mutenge</dc:creator>
  <link>https://www.conterval.com/blog/apprentice-lessons/</link>
  <description><![CDATA[ 




<p>Yesterday, I watched the first episode of <em>The Apprentice</em> season 20. I’m an avid fan of the show because it not only entertains me, but also teaches me business lessons. In yesterday’s episode, I learned an uncomfortable business lesson from the first contestant to be fired, Georgina Newton.</p>
<section id="in-business-you-will-ruffle-feathers" class="level2">
<h2 data-anchor-id="in-business-you-will-ruffle-feathers">In business you will ruffle feathers</h2>
<p>Simply put, Georgina was fired because she was too nice. She forgot the idea that “business is war,” to borrow the words of American-Iranian businessman Patrick Bet-David. When asked to pick two people to bring into the boardroom, her jaw dropped. When she finally named them, she apologized for choosing them.</p>
<p>Georgina wanted to be liked by the board members (Lord Sugar, Tim, and Baroness Brady) as well as her teammates. The truth is that in business, it is almost impossible to be liked by everyone. If business really is war, would you expect your enemies to like you? If they did, they would not be fighting you. Georgina failed to realize that she was at war with her fellow contestants.</p>
<p>I was especially disappointed when she started articulating her reasons for bringing another contestant into the boardroom, only to interrupt herself with, “In your defense, you would say…” That interjection undermined her argument. No matter how convincing her reasons were, she invalidated them by defending the very person she was accusing.</p>
</section>
<section id="did-georgina-deserve-to-leave-early" class="level2">
<h2 data-anchor-id="did-georgina-deserve-to-leave-early">Did Georgina deserve to leave early?</h2>
<p>Let me come out clean and say that I liked Georgina and would have loved to see her make it to the final five. I was disappointed when she was fired, especially in the first episode. I wanted to see more of her in the competition.</p>
<p>That said, I can understand why Lord Sugar fired her. He is a veteran businessman who knows that standing your ground is a critical trait in business. Georgina was not brave enough to ruffle feathers and defend her position, and that ultimately cost her the chance to continue competing.</p>
</section>
<section id="reflections" class="level2">
<h2 data-anchor-id="reflections">Reflections</h2>
<p>As much as I wanted Georgina to stay, I understand Lord Sugar’s decision. Business is a ruthless game, with many competitors eager to eat your lunch. Companies that survive often deploy aggressive tactics, sometimes even tactics that bend the rules, just to stay alive. Those that do not eventually go out of business.</p>
<p>Georgina should have fought harder for her chance to keep playing the game. In business, the uncomfortable truth is that just because you play by the rules doesn’t mean that everyone else will.</p>


</section>

 ]]></description>
  <guid>https://www.conterval.com/blog/apprentice-lessons/</guid>
  <pubDate>Fri, 30 Jan 2026 06:00:00 GMT</pubDate>
</item>
<item>
  <title>Equalities with nulls in polars</title>
  <dc:creator>Joram Mutenge</dc:creator>
  <link>https://www.conterval.com/blog/equality-with-null-polars/</link>
  <description><![CDATA[ 




<p>Recently at work, I discovered something unexpected when filtering values with Polars. Below is a dataframe showing students’ weekly quiz results.</p>
<div id="bd3d4852" class="cell" data-execution_count="1">
<div class="cell-output cell-output-display" data-execution_count="1">
<div><style>
.dataframe > thead > tr,
.dataframe > tbody > tr {
  text-align: right;
  white-space: pre-wrap;
}
</style>
<small>shape: (5, 3)</small>
<table class="dataframe caption-top table table-sm table-striped small" data-border="1">
<thead>
<tr class="header">
<th data-quarto-table-cell-role="th">Name</th>
<th data-quarto-table-cell-role="th">Week_2</th>
<th data-quarto-table-cell-role="th">Week_3</th>
</tr>
<tr class="even">
<td>str</td>
<td>i64</td>
<td>i64</td>
</tr>
</thead>
<tbody>
<tr class="odd">
<td>"Lucy"</td>
<td>74</td>
<td>93</td>
</tr>
<tr class="even">
<td>"Pippa"</td>
<td>89</td>
<td>89</td>
</tr>
<tr class="odd">
<td>"Evan"</td>
<td>90</td>
<td>90</td>
</tr>
<tr class="even">
<td>"Bree"</td>
<td>52</td>
<td>null</td>
</tr>
<tr class="odd">
<td>"Diana"</td>
<td>null</td>
<td>75</td>
</tr>
</tbody>
</table>
</div>
</div>
</div>
<p>Two students, Bree and Diana, missed one quiz in week 2 and week 3, respectively. Suppose you want to remove the students who received the same grade so you can focus on those who either increased or decreased their score. You might expect the code below to work.</p>
<div id="d0d8b4f8" class="cell" data-execution_count="2">
<div class="code-copy-outer-scaffold"><div class="sourceCode cell-code" id="cb1" style="background: #f1f3f5;"><pre class="sourceCode python code-with-copy"><code class="sourceCode python"><span id="cb1-1">(df</span>
<span id="cb1-2"> .<span class="bu" style="color: null;
background-color: null;
font-style: inherit;">filter</span>(pl.col(<span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">'Week_2'</span>).ne(pl.col(<span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">'Week_3'</span>)))</span>
<span id="cb1-3"> )</span></code></pre></div></div>
<div class="cell-output cell-output-display" data-execution_count="2">
<div><style>
.dataframe > thead > tr,
.dataframe > tbody > tr {
  text-align: right;
  white-space: pre-wrap;
}
</style>
<small>shape: (1, 3)</small>
<table class="dataframe caption-top table table-sm table-striped small" data-border="1">
<thead>
<tr class="header">
<th data-quarto-table-cell-role="th">Name</th>
<th data-quarto-table-cell-role="th">Week_2</th>
<th data-quarto-table-cell-role="th">Week_3</th>
</tr>
<tr class="even">
<td>str</td>
<td>i64</td>
<td>i64</td>
</tr>
</thead>
<tbody>
<tr class="odd">
<td>"Lucy"</td>
<td>74</td>
<td>93</td>
</tr>
</tbody>
</table>
</div>
</div>
</div>
<p>The problem is that it also removes the students who missed one quiz. Why does this happen?</p>
<p>In Polars, any comparison involving a null value produces null, not <code>True</code> or <code>False</code>. A filter keeps only the rows where the predicate evaluates to <code>True</code>. As a result, rows where the predicate evaluates to null are dropped.</p>
<p>To keep the students who missed one quiz, you need to write the code like this:</p>
<div id="a54b6624" class="cell" data-execution_count="3">
<div class="code-copy-outer-scaffold"><div class="sourceCode cell-code" id="cb2" style="background: #f1f3f5;"><pre class="sourceCode python code-with-copy"><code class="sourceCode python"><span id="cb2-1">(df</span>
<span id="cb2-2"> .<span class="bu" style="color: null;
background-color: null;
font-style: inherit;">filter</span>(pl.col(<span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">'Week_2'</span>).ne(pl.col(<span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">'Week_3'</span>)) <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">|</span> pl.col(<span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">'Week_2'</span>).is_null() <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">|</span> pl.col(<span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">'Week_3'</span>).is_null())</span>
<span id="cb2-3"> )</span></code></pre></div></div>
<div class="cell-output cell-output-display" data-execution_count="3">
<div><style>
.dataframe > thead > tr,
.dataframe > tbody > tr {
  text-align: right;
  white-space: pre-wrap;
}
</style>
<small>shape: (3, 3)</small>
<table class="dataframe caption-top table table-sm table-striped small" data-border="1">
<thead>
<tr class="header">
<th data-quarto-table-cell-role="th">Name</th>
<th data-quarto-table-cell-role="th">Week_2</th>
<th data-quarto-table-cell-role="th">Week_3</th>
</tr>
<tr class="even">
<td>str</td>
<td>i64</td>
<td>i64</td>
</tr>
</thead>
<tbody>
<tr class="odd">
<td>"Lucy"</td>
<td>74</td>
<td>93</td>
</tr>
<tr class="even">
<td>"Bree"</td>
<td>52</td>
<td>null</td>
</tr>
<tr class="odd">
<td>"Diana"</td>
<td>null</td>
<td>75</td>
</tr>
</tbody>
</table>
</div>
</div>
</div>
<p>Check out my <a href="https://www.udemy.com/course/analyzing-data-with-polars-in-python/">Polars course</a> to learn more.</p>



 ]]></description>
  <category>data analysis</category>
  <guid>https://www.conterval.com/blog/equality-with-null-polars/</guid>
  <pubDate>Wed, 21 Jan 2026 06:00:00 GMT</pubDate>
</item>
<item>
  <title>Did you know polars can execute fizzbuzz?</title>
  <dc:creator>Joram Mutenge</dc:creator>
  <link>https://www.conterval.com/blog/fizzbuzz-in-polars/</link>
  <description><![CDATA[ 




<p>As a huge fan of the Polars data analysis library, I often find myself testing its capabilities to their limits. For example, I wanted to see whether I could implement the FizzBuzz challenge using Polars alone. No Python functions, just pure Polars. I will admit that I initially thought this would be beyond Polars’ capabilities. Spoiler alert, I was wrong.</p>
<p>As a refresher on what FizzBuzz is, I refer you to my other post titled <a href="https://www.conterval.com/blog/fizzbuzz-in-rust/index.html">Can you do FizzBuzz in rust?</a></p>
<section id="implementing-fizzbuzz-in-polars" class="level2">
<h2 data-anchor-id="implementing-fizzbuzz-in-polars">Implementing fizzbuzz in polars</h2>
<p>Here is the complete code that implements FizzBuzz using pure Polars.</p>
<div id="89c6712d" class="cell" data-execution_count="1">
<div class="code-copy-outer-scaffold"><div class="sourceCode cell-code" id="cb1" style="background: #f1f3f5;"><pre class="sourceCode python code-with-copy"><code class="sourceCode python"><span id="cb1-1"><span class="im" style="color: #00769E;
background-color: null;
font-style: inherit;">import</span> polars <span class="im" style="color: #00769E;
background-color: null;
font-style: inherit;">as</span> pl</span>
<span id="cb1-2"></span>
<span id="cb1-3">(pl.int_range(<span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">1</span>, <span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">101</span>, eager<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span><span class="va" style="color: #111111;
background-color: null;
font-style: inherit;">True</span>)</span>
<span id="cb1-4"> .to_frame(<span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">'Num'</span>)</span>
<span id="cb1-5"> .with_columns(pl.when(pl.col(<span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">'Num'</span>).mod(<span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">15</span>) <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">==</span> <span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">0</span>)</span>
<span id="cb1-6">               .then(pl.lit(<span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">'FizzBuzz'</span>))</span>
<span id="cb1-7">               .when(pl.col(<span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">'Num'</span>).mod(<span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">3</span>) <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">==</span> <span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">0</span>)</span>
<span id="cb1-8">               .then(pl.lit(<span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">'Fizz'</span>))</span>
<span id="cb1-9">               .when(pl.col(<span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">'Num'</span>).mod(<span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">5</span>) <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">==</span> <span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">0</span>)</span>
<span id="cb1-10">               .then(pl.lit(<span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">'Buzz'</span>))</span>
<span id="cb1-11">               .otherwise(pl.col(<span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">'Num'</span>))</span>
<span id="cb1-12">               .alias(<span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">'Num'</span>)</span>
<span id="cb1-13">              )</span>
<span id="cb1-14"> )</span></code></pre></div></div>
<div class="cell-output cell-output-display" data-execution_count="1">
<div><style>
.dataframe > thead > tr,
.dataframe > tbody > tr {
  text-align: right;
  white-space: pre-wrap;
}
</style>
<small>shape: (100, 1)</small>
<table class="dataframe caption-top table table-sm table-striped small" data-border="1">
<thead>
<tr class="header">
<th data-quarto-table-cell-role="th">Num</th>
</tr>
<tr class="even">
<td>str</td>
</tr>
</thead>
<tbody>
<tr class="odd">
<td>"1"</td>
</tr>
<tr class="even">
<td>"2"</td>
</tr>
<tr class="odd">
<td>"Fizz"</td>
</tr>
<tr class="even">
<td>"4"</td>
</tr>
<tr class="odd">
<td>"Buzz"</td>
</tr>
<tr class="even">
<td>…</td>
</tr>
<tr class="odd">
<td>"Fizz"</td>
</tr>
<tr class="even">
<td>"97"</td>
</tr>
<tr class="odd">
<td>"98"</td>
</tr>
<tr class="even">
<td>"Fizz"</td>
</tr>
<tr class="odd">
<td>"Buzz"</td>
</tr>
</tbody>
</table>
</div>
</div>
</div>
<p>Check out my <a href="https://www.udemy.com/course/analyzing-data-with-polars-in-python/">Polars course</a> to learn more!</p>


</section>

 ]]></description>
  <category>data analysis</category>
  <guid>https://www.conterval.com/blog/fizzbuzz-in-polars/</guid>
  <pubDate>Thu, 15 Jan 2026 06:00:00 GMT</pubDate>
</item>
<item>
  <title>All the movies and series I watched in 2025</title>
  <dc:creator>Joram Mutenge</dc:creator>
  <link>https://www.conterval.com/blog/movies-and-series-watched-2025/</link>
  <description><![CDATA[ 




<div class="gray-text center-text">
<div class="quarto-figure quarto-figure-center">
<figure class="figure">
<p><img src="https://www.conterval.com/blog/movies-and-series-watched-2025/image.jpg" class="img-fluid figure-img"></p>
<figcaption>source: Prime Video</figcaption>
</figure>
</div>
</div>
<p>If someone asks about your hobbies, do you tell them something that makes you seem smart or cool, or do you tell the truth? If a hobby is what you spend most of your free time doing, then many people would be embarrassed to say their true hobbies out loud. But numbers do not lie, and the evidence they provide is always beautiful. I spend most of my free time watching movies and TV series. That is my hobby. The good news is that I have been recording every movie or series I have watched since 2022.</p>
<section id="about-the-dataset" class="level2">
<h2 data-anchor-id="about-the-dataset">About the dataset</h2>
<p>Below is a snapshot of my movies and series dataset. I’ve filtered for the year 2025 to only show the movies I watched this year.</p>
<div id="97950a5c" class="cell" data-execution_count="1">
<div class="cell-output cell-output-display" data-execution_count="1">
<div><style>
.dataframe > thead > tr,
.dataframe > tbody > tr {
  text-align: right;
  white-space: pre-wrap;
}
</style>
<small>shape: (3, 7)</small>
<table class="dataframe caption-top table table-sm table-striped small" data-border="1">
<thead>
<tr class="header">
<th data-quarto-table-cell-role="th">Type</th>
<th data-quarto-table-cell-role="th">Title</th>
<th data-quarto-table-cell-role="th">Season</th>
<th data-quarto-table-cell-role="th">Release_Year</th>
<th data-quarto-table-cell-role="th">Person</th>
<th data-quarto-table-cell-role="th">Quote</th>
<th data-quarto-table-cell-role="th">Watch_Year</th>
</tr>
<tr class="even">
<td>str</td>
<td>str</td>
<td>i64</td>
<td>i64</td>
<td>str</td>
<td>str</td>
<td>i16</td>
</tr>
</thead>
<tbody>
<tr class="odd">
<td>"Series"</td>
<td>"Hotel Babylon"</td>
<td>4</td>
<td>2006</td>
<td>"Rachael Stirling | Natalie Men…</td>
<td>"Imagine your worst day a day w…</td>
<td>2025</td>
</tr>
<tr class="even">
<td>"Movie"</td>
<td>"You Hurt My Feelings"</td>
<td>null</td>
<td>2023</td>
<td>"Sunita Mani | Erica Matlin"</td>
<td>"No man wants to have a V-neck.…</td>
<td>2025</td>
</tr>
<tr class="odd">
<td>"Series"</td>
<td>"Bad Sisters"</td>
<td>2</td>
<td>2022</td>
<td>"Eve Hewson | Sharon Horgan | S…</td>
<td>"We do things for those we love…</td>
<td>2025</td>
</tr>
</tbody>
</table>
</div>
</div>
</div>
<p>Most of the columns are self-explanatory, but two require some explaing:</p>
<ul>
<li><em>Person</em>: contains a list of people I enjoyed watching. Names are separated by <code>|</code>, so “Eve Hewson | Sharon Horgan” contains two people Eve Hewson and Sharon Horgan.</li>
<li><em>Quote</em>: contains lines that were good enough to be quotable. Lines are saprated by <code>|</code>.</li>
</ul>
</section>
<section id="some-analysis" class="level2">
<h2 data-anchor-id="some-analysis">Some analysis</h2>
<p>Since the dataset is proprietary, I’ll show you a few analyses that I think you may be eager to know the answers to.</p>
<section id="how-much-tv-did-i-watch-in-2025" class="level3">
<h3 data-anchor-id="how-much-tv-did-i-watch-in-2025">How much TV did I watch in 2025?</h3>
<p>Let me answer the question you are dying to have answered. As I said earlier, I watch a lot of TV. It is my hobby. Let us find out how much with the help of some Polars code:</p>
<div id="bc39b755" class="cell" data-execution_count="2">
<div class="code-copy-outer-scaffold"><div class="sourceCode cell-code" id="cb1" style="background: #f1f3f5;"><pre class="sourceCode python code-with-copy"><code class="sourceCode python"><span id="cb1-1">(df</span>
<span id="cb1-2"> .select(Titles<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span>pl.col(<span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">'Title'</span>).count())</span>
<span id="cb1-3"> )</span></code></pre></div></div>
<div class="cell-output cell-output-display" data-execution_count="2">
<div><style>
.dataframe > thead > tr,
.dataframe > tbody > tr {
  text-align: right;
  white-space: pre-wrap;
}
</style>
<small>shape: (1, 1)</small>
<table class="dataframe caption-top table table-sm table-striped small" data-border="1">
<thead>
<tr class="header">
<th data-quarto-table-cell-role="th">Titles</th>
</tr>
<tr class="even">
<td>u32</td>
</tr>
</thead>
<tbody>
<tr class="odd">
<td>32</td>
</tr>
</tbody>
</table>
</div>
</div>
</div>
<p>Watching 32 titles in a year may not seem like a lot, but remember that some of these titles are series with 40 episodes spread across multiple seasons. That’s a lot of watch time!</p>
<div class="callout callout-style-default callout-note callout-titled">
<div class="callout-header d-flex align-content-center">
<div class="callout-icon-container">
<i class="callout-icon"></i>
</div>
<div class="callout-title-container flex-fill">
Note
</div>
</div>
<div class="callout-body-container callout-body">
<p>I have watched all the series and movies on this list from beginning to end. If it is a series, then I have watched all the seasons and episodes released under that title.</p>
</div>
</div>
</section>
<section id="whats-the-breakdown-between-movies-and-series" class="level3">
<h3 data-anchor-id="whats-the-breakdown-between-movies-and-series">What’s the breakdown between movies and series</h3>
<p>Let us get more granular and see how many of these 32 titles were movies and how many were series:</p>
<div id="888d26ad" class="cell" data-execution_count="3">
<div class="code-copy-outer-scaffold"><div class="sourceCode cell-code" id="cb2" style="background: #f1f3f5;"><pre class="sourceCode python code-with-copy"><code class="sourceCode python"><span id="cb2-1">(df</span>
<span id="cb2-2"> .group_by(<span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">'Type'</span>).<span class="bu" style="color: null;
background-color: null;
font-style: inherit;">len</span>()</span>
<span id="cb2-3"> )</span></code></pre></div></div>
<div class="cell-output cell-output-display" data-execution_count="3">
<div><style>
.dataframe > thead > tr,
.dataframe > tbody > tr {
  text-align: right;
  white-space: pre-wrap;
}
</style>
<small>shape: (2, 2)</small>
<table class="dataframe caption-top table table-sm table-striped small" data-border="1">
<thead>
<tr class="header">
<th data-quarto-table-cell-role="th">Type</th>
<th data-quarto-table-cell-role="th">len</th>
</tr>
<tr class="even">
<td>str</td>
<td>u32</td>
</tr>
</thead>
<tbody>
<tr class="odd">
<td>"Series"</td>
<td>15</td>
</tr>
<tr class="even">
<td>"Movie"</td>
<td>17</td>
</tr>
</tbody>
</table>
</div>
</div>
</div>
</section>
</section>
<section id="the-mutenge-score" class="level2">
<h2 data-anchor-id="the-mutenge-score">The Mutenge score</h2>
<p>You may be wondering why I go through the trouble of building this dataset. The IMDB ratings assigned to movies and series do not mean much to me. They do not truly capture my taste. To capture my true taste in movies and series, I created a metric known as the <strong><em>Mutenge score</em></strong> (yes, it is named after yours truly) to quantify how much I like a movie or series. At first glance, the formula may seem complicated, but after explaining it, I promise it will make a lot of sense.</p>
<section id="formula" class="level3">
<h3 data-anchor-id="formula">Formula</h3>
<p><img src="https://latex.codecogs.com/png.latex?%0A%5Ctext%7BMutenge%20Score%7D%20=%204%20%5Ccdot%20%5Ctanh%5Cleft(%0A%5Cfrac%7B%0A%5Cdfrac%7B%0A%5Cbegin%7Bcases%7D%0A2P%20+%20Q%20&amp;%20%5Ctext%7BMovie%20%7D%20(S%20=%200)%20%5C%5C%0A4P%20+%20Q%20&amp;%20%5Ctext%7BSeries%20%7D%20(S%20%3E%200)%0A%5Cend%7Bcases%7D%0A%7D%7B1%20+%200.5(8S%20-%201)%7D%0A-%0A%5Cbegin%7Bcases%7D%0A3.5%20&amp;%20%5Ctext%7BMovie%7D%20%5C%5C%0A2.0%20&amp;%20%5Ctext%7BSeries%7D%0A%5Cend%7Bcases%7D%0A%7D%7B1.5%7D%0A%5Cright)%0A"></p>
<hr>
</section>
<section id="explanation" class="level3">
<h3 data-anchor-id="explanation">Explanation</h3>
<p>The <strong><em>Mutenge score</em></strong> ranges from -4 to +4. A score of -4 signifies <strong>OK</strong>, a score of 0 signifies <strong>Good</strong>, and a score of +4 signifies <strong>Excellent</strong>. Each movie or series is assigned a single score, which can be an integer or a decimal value.</p>
<p>Unlike most scales that range from most disliked to most liked, the <strong><em>Mutenge score</em></strong> is divided into two territories. The OK-to-Good territory encompasses the scale between -4 and 0 (the midpoint), while the Good-to-Excellent territory encompasses the scale between 0 and +4. I liked all the movies and series that ended up in the dataset; if I do not, I simply stop watching and move on to something else. When it comes to movies and series, we are spoiled for choice. There is no need to punish yourself by watching something you are not enjoying. The <strong><em>Mutenge score</em></strong> allows me to quantify how much I liked and enjoyed a movie or series.</p>
</section>
<section id="parameters-and-their-meaning" class="level3">
<h3 data-anchor-id="parameters-and-their-meaning">Parameters and their meaning</h3>
<p><strong>P — Person count</strong></p>
<ul>
<li>Number of unique persons in the title</li>
<li>Weighted more heavily because characters matter more to me</li>
<li>Person count weight is not the same. Movies = 2, Series = 4</li>
</ul>
<p><strong>Q — Quote count</strong></p>
<ul>
<li>Number of unique quotes</li>
<li>Still important, but secondary to people</li>
</ul>
<blockquote class="blockquote">
<p><em>More people matters more than more quotes.</em></p>
</blockquote>
<hr>
<p><strong>S — Season count</strong></p>
<ul>
<li><code>S = 0</code> → Movie</li>
<li><code>S ≥ 1</code> → Series</li>
</ul>
<hr>
<p><strong>Episodes per season = 8</strong></p>
<p>A fixed storytelling-length assumption used for normalization.</p>
<hr>
<p><strong><img src="https://latex.codecogs.com/png.latex?%CE%B1"> (alpha) — exposure softening factor</strong></p>
<p><img src="https://latex.codecogs.com/png.latex?%0A%5Calpha%20=%200.5%0A"></p>
<p>Controls how strongly long series are penalized.</p>
<ul>
<li><code>α = 1.0</code> → full linear penalty (too harsh)</li>
<li><code>α = 0.5</code> → diminishing penalty (<strong>chosen</strong>)</li>
<li><code>α → 0</code> → almost no length penalty</li>
</ul>
<hr>
<p><strong>Exposure</strong></p>
<p><img src="https://latex.codecogs.com/png.latex?%0A%5Ctext%7BExposure%7D%20=%201%20+%20%5Calpha%20%5Ccdot%20(8S%20-%201)%0A"></p>
<ul>
<li>Movies → exposure = 1</li>
<li>Series → grows sublinearly with seasons</li>
<li>Prevents series from collapsing toward −4</li>
</ul>
<hr>
<p><strong>D₀(S) — Neutral density</strong></p>
<p><img src="https://latex.codecogs.com/png.latex?%0AD_0(S)%20=%0A%5Cbegin%7Bcases%7D%0A3.5%20&amp;%20%5Ctext%7BMovie%7D%20%5C%5C%0A2.0%20&amp;%20%5Ctext%7BSeries%7D%0A%5Cend%7Bcases%7D%0A"></p>
<ul>
<li>Represents “Good” (neutral enjoyment) per unit exposure.</li>
</ul>
<hr>
<p><strong>k — Sensitivity</strong></p>
<p><img src="https://latex.codecogs.com/png.latex?%0Ak%20=%201.5%0A"></p>
<p>Controls how quickly scores approach ±4.</p>
<ul>
<li>Smaller → more extreme scores</li>
<li>Larger → flatter distribution</li>
</ul>
<hr>
<p><strong>tanh compression</strong></p>
<ul>
<li>Smoothly bounds the score to <strong>[−4, +4]</strong></li>
<li>Preserves relative differences without hard clipping</li>
</ul>
<hr>
<p>Table&nbsp;1 illustrates a summarized version of the parameters of the formula.</p>
<div id="tbl-param" class="quarto-float quarto-figure quarto-figure-center">
<figure class="quarto-float quarto-float-tbl figure">
<figcaption class="quarto-float-caption-top quarto-float-caption quarto-float-tbl" id="tbl-param-caption-0ceaefa1-69ba-4598-a22c-09a6ac19f8ca">
Table&nbsp;1: Parameters for Mutenge score formula.
</figcaption>
<div aria-describedby="tbl-param-caption-0ceaefa1-69ba-4598-a22c-09a6ac19f8ca">
<table class="caption-top table">
<colgroup>
<col style="width: 27%">
<col style="width: 25%">
<col style="width: 47%">
</colgroup>
<thead>
<tr class="header">
<th style="text-align: left;"><strong>Parameter</strong></th>
<th style="text-align: left;"><strong>Value</strong></th>
<th style="text-align: left;"><strong>Meaning</strong></th>
</tr>
</thead>
<tbody>
<tr class="odd">
<td style="text-align: left;"><img src="https://latex.codecogs.com/png.latex?P"></td>
<td style="text-align: left;">number of persons</td>
<td style="text-align: left;">unique persons in the title</td>
</tr>
<tr class="even">
<td style="text-align: left;"><img src="https://latex.codecogs.com/png.latex?Q"></td>
<td style="text-align: left;">number of quotes</td>
<td style="text-align: left;">unique quotes in the title</td>
</tr>
<tr class="odd">
<td style="text-align: left;"><img src="https://latex.codecogs.com/png.latex?S"></td>
<td style="text-align: left;">number of seasons</td>
<td style="text-align: left;">0 = movie, ≥1 = series</td>
</tr>
<tr class="even">
<td style="text-align: left;"><img src="https://latex.codecogs.com/png.latex?W(S)"></td>
<td style="text-align: left;">person weight</td>
<td style="text-align: left;">2 for movies, 4 for series</td>
</tr>
<tr class="odd">
<td style="text-align: left;">Episodes per season</td>
<td style="text-align: left;">8</td>
<td style="text-align: left;">exposure constant</td>
</tr>
<tr class="even">
<td style="text-align: left;"><img src="https://latex.codecogs.com/png.latex?%CE%B1"></td>
<td style="text-align: left;">0.5</td>
<td style="text-align: left;">exposure softening factor</td>
</tr>
<tr class="odd">
<td style="text-align: left;"><img src="https://latex.codecogs.com/png.latex?D"><sub>0</sub><img src="https://latex.codecogs.com/png.latex?(S)"></td>
<td style="text-align: left;">neutral density</td>
<td style="text-align: left;">3.5 movies, 2.0 series</td>
</tr>
<tr class="even">
<td style="text-align: left;">k</td>
<td style="text-align: left;">1.5</td>
<td style="text-align: left;">sensitivity for <code>tanh</code> compression</td>
</tr>
<tr class="odd">
<td style="text-align: left;">Score range</td>
<td style="text-align: left;">[-4, +4]</td>
<td style="text-align: left;">bounded via <code>tanh</code></td>
</tr>
</tbody>
</table>
</div>
</figure>
</div>
</section>
</section>
<section id="apply-the-mutenge-score" class="level2">
<h2 data-anchor-id="apply-the-mutenge-score">Apply the Mutenge score</h2>
<p>Now that I’ve explained how to calculate the <strong><em>Mutenge score</em></strong>, let’s use Polars to assign a score to each movie/series.</p>
<div id="4fc1c0d4" class="cell" data-execution_count="4">
<div class="code-copy-outer-scaffold"><div class="sourceCode cell-code" id="cb3" style="background: #f1f3f5;"><pre class="sourceCode python code-with-copy"><code class="sourceCode python"><span id="cb3-1">(df</span>
<span id="cb3-2"> .with_columns(pl.col(<span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">'Season'</span>).fill_null(<span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">0</span>))</span>
<span id="cb3-3"> .with_columns(pl.col(<span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">'Person'</span>, <span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">'Quote'</span>).<span class="bu" style="color: null;
background-color: null;
font-style: inherit;">str</span>.split(<span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">' | '</span>).<span class="bu" style="color: null;
background-color: null;
font-style: inherit;">list</span>.n_unique())</span>
<span id="cb3-4"></span>
<span id="cb3-5"> <span class="co" style="color: #5E5E5E;
background-color: null;
font-style: inherit;"># ---- constants ----</span></span>
<span id="cb3-6"> .with_columns(_episodes_per_season<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span>pl.lit(<span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">8</span>),</span>
<span id="cb3-7">               _alpha<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span>pl.lit(<span class="fl" style="color: #AD0000;
background-color: null;
font-style: inherit;">0.5</span>),</span>
<span id="cb3-8">               _sensitivity<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span>pl.lit(<span class="fl" style="color: #AD0000;
background-color: null;
font-style: inherit;">1.5</span>))</span>
<span id="cb3-9"></span>
<span id="cb3-10"> <span class="co" style="color: #5E5E5E;
background-color: null;
font-style: inherit;"># ---- type-aware neutral density ----</span></span>
<span id="cb3-11"> .with_columns(pl.when(pl.col(<span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">'Season'</span>) <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">==</span> <span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">0</span>)</span>
<span id="cb3-12">               .then(<span class="fl" style="color: #AD0000;
background-color: null;
font-style: inherit;">3.5</span>)</span>
<span id="cb3-13">               .otherwise(<span class="fl" style="color: #AD0000;
background-color: null;
font-style: inherit;">2.0</span>)</span>
<span id="cb3-14">               .alias(<span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">'_neutral_density'</span>))</span>
<span id="cb3-15"></span>
<span id="cb3-16"> <span class="co" style="color: #5E5E5E;
background-color: null;
font-style: inherit;"># ---- softened exposure ----</span></span>
<span id="cb3-17"> .with_columns((<span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">1</span> <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">+</span> pl.col(<span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">'_alpha'</span>) <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">*</span> (pl.col(<span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">'_episodes_per_season'</span>) <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">*</span> pl.col(<span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">'Season'</span>) <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">-</span> <span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">1</span>))</span>
<span id="cb3-18">               .alias(<span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">'_exposure'</span>))</span>
<span id="cb3-19"></span>
<span id="cb3-20"> <span class="co" style="color: #5E5E5E;
background-color: null;
font-style: inherit;"># ---- type-aware person weighting ----</span></span>
<span id="cb3-21"> .with_columns(pl.when(pl.col(<span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">'Season'</span>) <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">==</span> <span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">0</span>)</span>
<span id="cb3-22">               .then(<span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">2</span> <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">*</span> pl.col(<span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">'Person'</span>) <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">+</span> pl.col(<span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">'Quote'</span>))   <span class="co" style="color: #5E5E5E;
background-color: null;
font-style: inherit;"># movies</span></span>
<span id="cb3-23">               .otherwise(<span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">4</span> <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">*</span> pl.col(<span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">'Person'</span>) <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">+</span> pl.col(<span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">'Quote'</span>))  <span class="co" style="color: #5E5E5E;
background-color: null;
font-style: inherit;"># series</span></span>
<span id="cb3-24">               .alias(<span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">'_weighted_content'</span>))</span>
<span id="cb3-25"></span>
<span id="cb3-26"> <span class="co" style="color: #5E5E5E;
background-color: null;
font-style: inherit;"># ---- density ----</span></span>
<span id="cb3-27"> .with_columns(_density<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span>pl.col(<span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">'_weighted_content'</span>) <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">/</span> pl.col(<span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">'_exposure'</span>))</span>
<span id="cb3-28"></span>
<span id="cb3-29"> <span class="co" style="color: #5E5E5E;
background-color: null;
font-style: inherit;"># ---- calculate score ----</span></span>
<span id="cb3-30"> .with_columns((<span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">4</span> <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">*</span> ((pl.col(<span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">'_density'</span>) <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">-</span> pl.col(<span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">'_neutral_density'</span>)) <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">/</span> pl.col(<span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">'_sensitivity'</span>)).tanh())</span>
<span id="cb3-31">               .alias(<span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">'Mutenge_Score'</span>))</span>
<span id="cb3-32"></span>
<span id="cb3-33"> <span class="co" style="color: #5E5E5E;
background-color: null;
font-style: inherit;"># ---- cleanup ----</span></span>
<span id="cb3-34"> .select(pl.exclude(<span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"^_.*$"</span>)) <span class="co" style="color: #5E5E5E;
background-color: null;
font-style: inherit;"># remove cols that start with underscore.</span></span>
<span id="cb3-35"> .sample(<span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">5</span>, seed<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span><span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">31</span>)</span>
<span id="cb3-36">)</span></code></pre></div></div>
<div class="cell-output cell-output-display" data-execution_count="4">
<div><style>
.dataframe > thead > tr,
.dataframe > tbody > tr {
  text-align: right;
  white-space: pre-wrap;
}
</style>
<small>shape: (5, 8)</small>
<table class="dataframe caption-top table table-sm table-striped small" data-border="1">
<thead>
<tr class="header">
<th data-quarto-table-cell-role="th">Type</th>
<th data-quarto-table-cell-role="th">Title</th>
<th data-quarto-table-cell-role="th">Season</th>
<th data-quarto-table-cell-role="th">Release_Year</th>
<th data-quarto-table-cell-role="th">Person</th>
<th data-quarto-table-cell-role="th">Quote</th>
<th data-quarto-table-cell-role="th">Watch_Year</th>
<th data-quarto-table-cell-role="th">Mutenge_Score</th>
</tr>
<tr class="even">
<td>str</td>
<td>str</td>
<td>i64</td>
<td>i64</td>
<td>u32</td>
<td>u32</td>
<td>i16</td>
<td>f64</td>
</tr>
</thead>
<tbody>
<tr class="odd">
<td>"Series"</td>
<td>"The Split"</td>
<td>3</td>
<td>2018</td>
<td>2</td>
<td>2</td>
<td>2025</td>
<td>-2.656147</td>
</tr>
<tr class="even">
<td>"Movie"</td>
<td>"Roommate Wanted"</td>
<td>0</td>
<td>2015</td>
<td>1</td>
<td>6</td>
<td>2025</td>
<td>4.0</td>
</tr>
<tr class="odd">
<td>"Movie"</td>
<td>"Frances Ferguson"</td>
<td>0</td>
<td>2019</td>
<td>1</td>
<td>2</td>
<td>2025</td>
<td>3.980219</td>
</tr>
<tr class="even">
<td>"Series"</td>
<td>"Halt and Catch Fire"</td>
<td>4</td>
<td>2014</td>
<td>5</td>
<td>28</td>
<td>2025</td>
<td>2.165392</td>
</tr>
<tr class="odd">
<td>"Series"</td>
<td>"StartUp"</td>
<td>3</td>
<td>2016</td>
<td>13</td>
<td>10</td>
<td>2025</td>
<td>3.848377</td>
</tr>
</tbody>
</table>
</div>
</div>
</div>
<p>If you have any questions about the <strong><em>Mutenge score</em></strong>, email me and I will be happy to offer a more detailed explanation.</p>
<p>What movies or series did you find gripping in 2025? Share them with me. I will watch them, assign the <strong><em>Mutenge score</em></strong> to them, and include them in a follow-up article.</p>


</section>

 ]]></description>
  <category>data analysis</category>
  <guid>https://www.conterval.com/blog/movies-and-series-watched-2025/</guid>
  <pubDate>Wed, 31 Dec 2025 06:00:00 GMT</pubDate>
</item>
<item>
  <title>Formatting dates in polars</title>
  <dc:creator>Joram Mutenge</dc:creator>
  <link>https://www.conterval.com/blog/format-dates-in-polars/</link>
  <description><![CDATA[ 




<p>The representation of dates in data varies from region to region. In the USA, for instance, dates begin with the month rather than the day. Polars allows you to change how your dates are displayed depending on your audience. Below is a dataframe showing date values.</p>
<div id="040855e8" class="cell" data-execution_count="1">
<div class="cell-output cell-output-display" data-execution_count="1">
<div><style>
.dataframe > thead > tr,
.dataframe > tbody > tr {
  text-align: right;
  white-space: pre-wrap;
}
</style>
<small>shape: (2, 1)</small>
<table class="dataframe caption-top table table-sm table-striped small" data-border="1">
<thead>
<tr class="header">
<th data-quarto-table-cell-role="th">Num_Date</th>
</tr>
<tr class="even">
<td>date</td>
</tr>
</thead>
<tbody>
<tr class="odd">
<td>2025-09-17</td>
</tr>
<tr class="even">
<td>2025-12-23</td>
</tr>
</tbody>
</table>
</div>
</div>
</div>
<section id="format-the-date" class="level2">
<h2 data-anchor-id="format-the-date">Format the date</h2>
<p>You can format dates in either short or long form using the datetime component <code>dt.strftime</code> like this:</p>
<div id="0649fe44" class="cell" data-execution_count="2">
<div class="code-copy-outer-scaffold"><div class="sourceCode cell-code" id="cb1" style="background: #f1f3f5;"><pre class="sourceCode python code-with-copy"><code class="sourceCode python"><span id="cb1-1">(df</span>
<span id="cb1-2"> .with_columns(Short_Text_Date<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span>pl.col(<span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">'Num_Date'</span>).dt.strftime(<span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">'</span><span class="sc" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">%d</span><span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;"> %b, %Y'</span>),</span>
<span id="cb1-3">               Long_Text_Date<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span>pl.col(<span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">'Num_Date'</span>).dt.strftime(<span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">'</span><span class="sc" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">%d</span><span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;"> %B, %Y'</span>),)</span>
<span id="cb1-4"> )</span></code></pre></div></div>
<div class="cell-output cell-output-display" data-execution_count="2">
<div><style>
.dataframe > thead > tr,
.dataframe > tbody > tr {
  text-align: right;
  white-space: pre-wrap;
}
</style>
<small>shape: (2, 3)</small>
<table class="dataframe caption-top table table-sm table-striped small" data-border="1">
<thead>
<tr class="header">
<th data-quarto-table-cell-role="th">Num_Date</th>
<th data-quarto-table-cell-role="th">Short_Text_Date</th>
<th data-quarto-table-cell-role="th">Long_Text_Date</th>
</tr>
<tr class="even">
<td>date</td>
<td>str</td>
<td>str</td>
</tr>
</thead>
<tbody>
<tr class="odd">
<td>2025-09-17</td>
<td>"17 Sep, 2025"</td>
<td>"17 September, 2025"</td>
</tr>
<tr class="even">
<td>2025-12-23</td>
<td>"23 Dec, 2025"</td>
<td>"23 December, 2025"</td>
</tr>
</tbody>
</table>
</div>
</div>
</div>
<p>All good things must come to an end. This marks the end of <a href="https://www.conterval.com/blog/#category=100DaysOfPolars">100DaysOfPolars</a>.</p>
<p>I have a <a href="https://www.udemy.com/course/analyzing-data-with-polars-in-python/">Polars course</a> you can take to learn more about this powerful data analysis library.</p>


</section>

 ]]></description>
  <category>100DaysOfPolars</category>
  <guid>https://www.conterval.com/blog/format-dates-in-polars/</guid>
  <pubDate>Tue, 23 Dec 2025 06:00:00 GMT</pubDate>
</item>
<item>
  <title>From JSON to tabular data with polars</title>
  <dc:creator>Joram Mutenge</dc:creator>
  <link>https://www.conterval.com/blog/json-to-tabular-data/</link>
  <description><![CDATA[ 




<p>JSON data obtained through an API call can be nested at multiple levels, making it difficult to analyze. Fortunately, Polars can read JSON data at multiple levels, ensuring that the data is fully un-nested. Below is some JSON data to load into a dataframe.</p>
<div id="c42569e3" class="cell" data-execution_count="1">
<div class="code-copy-outer-scaffold"><div class="sourceCode cell-code" id="cb1" style="background: #f1f3f5;"><pre class="sourceCode python code-with-copy"><code class="sourceCode python"><span id="cb1-1">data <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span> [</span>
<span id="cb1-2">    {</span>
<span id="cb1-3">        <span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"id"</span>: <span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">1</span>,</span>
<span id="cb1-4">        <span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"name"</span>: <span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"Dan Humphrey"</span>,</span>
<span id="cb1-5">        <span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"fitness"</span>: {<span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"height"</span>: <span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">180</span>, <span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"weight"</span>: <span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">85</span>},</span>
<span id="cb1-6">    },</span>
<span id="cb1-7">    {</span>
<span id="cb1-8">        <span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"id"</span>: <span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">2</span>,</span>
<span id="cb1-9">        <span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"name"</span>: <span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"Blair Waldolf"</span>,</span>
<span id="cb1-10">        <span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"fitness"</span>: {<span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"height"</span>: <span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">155</span>, <span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"weight"</span>: <span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">58</span>},</span>
<span id="cb1-11">    }</span>
<span id="cb1-12">]</span></code></pre></div></div>
</div>
<section id="read-data-at-level-zero" class="level2">
<h2 data-anchor-id="read-data-at-level-zero">Read data at level zero</h2>
<p>We can start by unnesting the first level. This will return a three-column dataframe:</p>
<div id="4b30460d" class="cell" data-execution_count="2">
<div class="code-copy-outer-scaffold"><div class="sourceCode cell-code" id="cb2" style="background: #f1f3f5;"><pre class="sourceCode python code-with-copy"><code class="sourceCode python"><span id="cb2-1"><span class="im" style="color: #00769E;
background-color: null;
font-style: inherit;">import</span> polars <span class="im" style="color: #00769E;
background-color: null;
font-style: inherit;">as</span> pl</span>
<span id="cb2-2"></span>
<span id="cb2-3">pl.json_normalize(data, max_level<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span><span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">0</span>)</span></code></pre></div></div>
<div class="cell-output cell-output-display" data-execution_count="2">
<div><style>
.dataframe > thead > tr,
.dataframe > tbody > tr {
  text-align: right;
  white-space: pre-wrap;
}
</style>
<small>shape: (2, 3)</small>
<table class="dataframe caption-top table table-sm table-striped small" data-border="1">
<thead>
<tr class="header">
<th data-quarto-table-cell-role="th">id</th>
<th data-quarto-table-cell-role="th">name</th>
<th data-quarto-table-cell-role="th">fitness</th>
</tr>
<tr class="even">
<td>i64</td>
<td>str</td>
<td>str</td>
</tr>
</thead>
<tbody>
<tr class="odd">
<td>1</td>
<td>"Dan Humphrey"</td>
<td>"{"height": 180, "weight": 85}"</td>
</tr>
<tr class="even">
<td>2</td>
<td>"Blair Waldolf"</td>
<td>"{"height": 155, "weight": 58}"</td>
</tr>
</tbody>
</table>
</div>
</div>
</div>
</section>
<section id="read-data-at-level-one" class="level2">
<h2 data-anchor-id="read-data-at-level-one">Read data at level one</h2>
<p>Some nested data remains in the <em>fitness</em> column. We can unnest it by increasing the level by 1:</p>
<div id="06eaec12" class="cell" data-execution_count="3">
<div class="code-copy-outer-scaffold"><div class="sourceCode cell-code" id="cb3" style="background: #f1f3f5;"><pre class="sourceCode python code-with-copy"><code class="sourceCode python"><span id="cb3-1">pl.json_normalize(data, max_level<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span><span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">1</span>)</span></code></pre></div></div>
<div class="cell-output cell-output-display" data-execution_count="3">
<div><style>
.dataframe > thead > tr,
.dataframe > tbody > tr {
  text-align: right;
  white-space: pre-wrap;
}
</style>
<small>shape: (2, 4)</small>
<table class="dataframe caption-top table table-sm table-striped small" data-border="1">
<thead>
<tr class="header">
<th data-quarto-table-cell-role="th">id</th>
<th data-quarto-table-cell-role="th">name</th>
<th data-quarto-table-cell-role="th">fitness.height</th>
<th data-quarto-table-cell-role="th">fitness.weight</th>
</tr>
<tr class="even">
<td>i64</td>
<td>str</td>
<td>i64</td>
<td>i64</td>
</tr>
</thead>
<tbody>
<tr class="odd">
<td>1</td>
<td>"Dan Humphrey"</td>
<td>180</td>
<td>85</td>
</tr>
<tr class="even">
<td>2</td>
<td>"Blair Waldolf"</td>
<td>155</td>
<td>58</td>
</tr>
</tbody>
</table>
</div>
</div>
</div>
<p>Discover even more ways to use Polars in my <a href="https://www.udemy.com/course/analyzing-data-with-polars-in-python/">Polars course</a>.</p>


</section>

 ]]></description>
  <category>100DaysOfPolars</category>
  <guid>https://www.conterval.com/blog/json-to-tabular-data/</guid>
  <pubDate>Mon, 22 Dec 2025 06:00:00 GMT</pubDate>
</item>
<item>
  <title>Count the occurrence of some text in a string in polars</title>
  <dc:creator>Joram Mutenge</dc:creator>
  <link>https://www.conterval.com/blog/count-occurrence-of-text-in-polars/</link>
  <description><![CDATA[ 




<p>You have a table of passwords and, for some reason, you want to count the number of digits in each password. This is possible using Polars. Below is a dataframe of passwords.</p>
<div id="04aafd91" class="cell" data-execution_count="1">
<div class="cell-output cell-output-display" data-execution_count="1">
<div><style>
.dataframe > thead > tr,
.dataframe > tbody > tr {
  text-align: right;
  white-space: pre-wrap;
}
</style>
<small>shape: (3, 1)</small>
<table class="dataframe caption-top table table-sm table-striped small" data-border="1">
<thead>
<tr class="header">
<th data-quarto-table-cell-role="th">Password</th>
</tr>
<tr class="even">
<td>str</td>
</tr>
</thead>
<tbody>
<tr class="odd">
<td>"marm1te"</td>
</tr>
<tr class="even">
<td>"jam543"</td>
</tr>
<tr class="odd">
<td>"p3anutButt3r"</td>
</tr>
</tbody>
</table>
</div>
</div>
</div>
<section id="count-number-of-digits-in-each-password" class="level2">
<h2 data-anchor-id="count-number-of-digits-in-each-password">Count number of digits in each password</h2>
<p>You can count the number of digits in each password using the function <code>count_matches</code> like this:</p>
<div id="12e2cfe0" class="cell" data-execution_count="2">
<div class="code-copy-outer-scaffold"><div class="sourceCode cell-code" id="cb1" style="background: #f1f3f5;"><pre class="sourceCode python code-with-copy"><code class="sourceCode python"><span id="cb1-1">(df</span>
<span id="cb1-2"> .with_columns(pl.col(<span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">'Password'</span>).<span class="bu" style="color: null;
background-color: null;
font-style: inherit;">str</span>.count_matches(<span class="vs" style="color: #20794D;
background-color: null;
font-style: inherit;">r'</span><span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">\d</span><span class="vs" style="color: #20794D;
background-color: null;
font-style: inherit;">'</span>)</span>
<span id="cb1-3">               .alias(<span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">'Num_of_Digits'</span>))</span>
<span id="cb1-4"> )</span></code></pre></div></div>
<div class="cell-output cell-output-display" data-execution_count="2">
<div><style>
.dataframe > thead > tr,
.dataframe > tbody > tr {
  text-align: right;
  white-space: pre-wrap;
}
</style>
<small>shape: (3, 2)</small>
<table class="dataframe caption-top table table-sm table-striped small" data-border="1">
<thead>
<tr class="header">
<th data-quarto-table-cell-role="th">Password</th>
<th data-quarto-table-cell-role="th">Num_of_Digits</th>
</tr>
<tr class="even">
<td>str</td>
<td>u32</td>
</tr>
</thead>
<tbody>
<tr class="odd">
<td>"marm1te"</td>
<td>1</td>
</tr>
<tr class="even">
<td>"jam543"</td>
<td>3</td>
</tr>
<tr class="odd">
<td>"p3anutButt3r"</td>
<td>2</td>
</tr>
</tbody>
</table>
</div>
</div>
</div>
<p>Discover even more ways to use Polars in my <a href="https://www.udemy.com/course/analyzing-data-with-polars-in-python/">Polars course</a>.</p>


</section>

 ]]></description>
  <category>100DaysOfPolars</category>
  <guid>https://www.conterval.com/blog/count-occurrence-of-text-in-polars/</guid>
  <pubDate>Sun, 21 Dec 2025 06:00:00 GMT</pubDate>
</item>
<item>
  <title>Collapse rows into a single row in polars</title>
  <dc:creator>Joram Mutenge</dc:creator>
  <link>https://www.conterval.com/blog/from-many-rows-to-one/</link>
  <description><![CDATA[ 




<p>Polars allows you to collapse multiple rows into a single row, combining the values from all the rows into one. Below is a dataframe showing parts of a phone number.</p>
<div id="06e46fab" class="cell" data-execution_count="1">
<div class="cell-output cell-output-display" data-execution_count="1">
<div><style>
.dataframe > thead > tr,
.dataframe > tbody > tr {
  text-align: right;
  white-space: pre-wrap;
}
</style>
<small>shape: (3, 2)</small>
<table class="dataframe caption-top table table-sm table-striped small" data-border="1">
<thead>
<tr class="header">
<th data-quarto-table-cell-role="th">Represent</th>
<th data-quarto-table-cell-role="th">Value</th>
</tr>
<tr class="even">
<td>str</td>
<td>i64</td>
</tr>
</thead>
<tbody>
<tr class="odd">
<td>"Area code"</td>
<td>563</td>
</tr>
<tr class="even">
<td>"Exchange code"</td>
<td>384</td>
</tr>
<tr class="odd">
<td>"Line number"</td>
<td>9905</td>
</tr>
</tbody>
</table>
</div>
</div>
</div>
<section id="collapse-rows-into-one" class="level2">
<h2 data-anchor-id="collapse-rows-into-one">Collapse rows into one</h2>
<p>We can construct the full phone number from the three rows using the Polars expression <code>str.join</code> like this:</p>
<div id="819e64f0" class="cell" data-execution_count="2">
<div class="code-copy-outer-scaffold"><div class="sourceCode cell-code" id="cb1" style="background: #f1f3f5;"><pre class="sourceCode python code-with-copy"><code class="sourceCode python"><span id="cb1-1">(df</span>
<span id="cb1-2"> .select((pl.col(<span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">'Value'</span>).<span class="bu" style="color: null;
background-color: null;
font-style: inherit;">str</span>.join(<span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">'-'</span>)).alias(<span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">'Phone_No'</span>))</span>
<span id="cb1-3"> )</span></code></pre></div></div>
<div class="cell-output cell-output-display" data-execution_count="2">
<div><style>
.dataframe > thead > tr,
.dataframe > tbody > tr {
  text-align: right;
  white-space: pre-wrap;
}
</style>
<small>shape: (1, 1)</small>
<table class="dataframe caption-top table table-sm table-striped small" data-border="1">
<thead>
<tr class="header">
<th data-quarto-table-cell-role="th">Phone_No</th>
</tr>
<tr class="even">
<td>str</td>
</tr>
</thead>
<tbody>
<tr class="odd">
<td>"563-384-9905"</td>
</tr>
</tbody>
</table>
</div>
</div>
</div>
<div class="callout callout-style-default callout-note callout-titled">
<div class="callout-header d-flex align-content-center">
<div class="callout-icon-container">
<i class="callout-icon"></i>
</div>
<div class="callout-title-container flex-fill">
Note
</div>
</div>
<div class="callout-body-container callout-body">
<p>This is different from the <code>implode</code> function, which returns a list of values instead of a string.</p>
</div>
</div>
<div id="10b45dde" class="cell" data-execution_count="3">
<div class="code-copy-outer-scaffold"><div class="sourceCode cell-code" id="cb2" style="background: #f1f3f5;"><pre class="sourceCode python code-with-copy"><code class="sourceCode python"><span id="cb2-1">(df</span>
<span id="cb2-2"> .select(pl.col(<span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">'Value'</span>).implode().alias(<span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">'Phone_No'</span>))</span>
<span id="cb2-3"> )</span></code></pre></div></div>
<div class="cell-output cell-output-display" data-execution_count="3">
<div><style>
.dataframe > thead > tr,
.dataframe > tbody > tr {
  text-align: right;
  white-space: pre-wrap;
}
</style>
<small>shape: (1, 1)</small>
<table class="dataframe caption-top table table-sm table-striped small" data-border="1">
<thead>
<tr class="header">
<th data-quarto-table-cell-role="th">Phone_No</th>
</tr>
<tr class="even">
<td>list[i64]</td>
</tr>
</thead>
<tbody>
<tr class="odd">
<td>[563, 384, 9905]</td>
</tr>
</tbody>
</table>
</div>
</div>
</div>
<p>Check out my <a href="https://www.udemy.com/course/analyzing-data-with-polars-in-python/">Polars course</a> to learn more.</p>


</section>

 ]]></description>
  <category>100DaysOfPolars</category>
  <guid>https://www.conterval.com/blog/from-many-rows-to-one/</guid>
  <pubDate>Sat, 20 Dec 2025 06:00:00 GMT</pubDate>
</item>
<item>
  <title>Rounding down time in polars</title>
  <dc:creator>Joram Mutenge</dc:creator>
  <link>https://www.conterval.com/blog/rounding-down-time-values-polars/</link>
  <description><![CDATA[ 




<p>Polars allows you to round down datetime values, similar to how you would round decimal values–well, almost. Below is a dataframe showing time series data.</p>
<div id="eba655fa" class="cell" data-execution_count="1">
<div class="cell-output cell-output-display" data-execution_count="1">
<div><style>
.dataframe > thead > tr,
.dataframe > tbody > tr {
  text-align: right;
  white-space: pre-wrap;
}
</style>
<small>shape: (5, 1)</small>
<table class="dataframe caption-top table table-sm table-striped small" data-border="1">
<thead>
<tr class="header">
<th data-quarto-table-cell-role="th">Timestamp</th>
</tr>
<tr class="even">
<td>datetime[μs]</td>
</tr>
</thead>
<tbody>
<tr class="odd">
<td>2023-01-01 00:00:00</td>
</tr>
<tr class="even">
<td>2023-01-01 02:05:00</td>
</tr>
<tr class="odd">
<td>2023-01-01 04:10:00</td>
</tr>
<tr class="even">
<td>2023-01-01 06:15:00</td>
</tr>
<tr class="odd">
<td>2023-01-01 08:20:00</td>
</tr>
</tbody>
</table>
</div>
</div>
</div>
<section id="round-down-time-values" class="level2">
<h2 data-anchor-id="round-down-time-values">Round down time values</h2>
<p>Here, we use Polars to scan a 10-minute interval of the time series and set each value to the lower bound of its interval. For example, minutes between 0 and 10 become 0, minutes between 10 and 20 become 10, and so on. Essentially, we are rounding down the values to the specified interval of 10 minutes.</p>
<div id="24d93637" class="cell" data-execution_count="2">
<div class="code-copy-outer-scaffold"><div class="sourceCode cell-code" id="cb1" style="background: #f1f3f5;"><pre class="sourceCode python code-with-copy"><code class="sourceCode python"><span id="cb1-1">(df</span>
<span id="cb1-2"> .with_columns(pl.col(<span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">'Timestamp'</span>).dt.truncate(<span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">'10m'</span>)</span>
<span id="cb1-3">               .alias(<span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">'Truncated_by_10min'</span>))</span>
<span id="cb1-4"> )</span></code></pre></div></div>
<div class="cell-output cell-output-display" data-execution_count="2">
<div><style>
.dataframe > thead > tr,
.dataframe > tbody > tr {
  text-align: right;
  white-space: pre-wrap;
}
</style>
<small>shape: (5, 2)</small>
<table class="dataframe caption-top table table-sm table-striped small" data-border="1">
<thead>
<tr class="header">
<th data-quarto-table-cell-role="th">Timestamp</th>
<th data-quarto-table-cell-role="th">Truncated_by_10min</th>
</tr>
<tr class="even">
<td>datetime[μs]</td>
<td>datetime[μs]</td>
</tr>
</thead>
<tbody>
<tr class="odd">
<td>2023-01-01 00:00:00</td>
<td>2023-01-01 00:00:00</td>
</tr>
<tr class="even">
<td>2023-01-01 02:05:00</td>
<td>2023-01-01 02:00:00</td>
</tr>
<tr class="odd">
<td>2023-01-01 04:10:00</td>
<td>2023-01-01 04:10:00</td>
</tr>
<tr class="even">
<td>2023-01-01 06:15:00</td>
<td>2023-01-01 06:10:00</td>
</tr>
<tr class="odd">
<td>2023-01-01 08:20:00</td>
<td>2023-01-01 08:20:00</td>
</tr>
</tbody>
</table>
</div>
</div>
</div>
<p>Learn more in my <a href="https://www.udemy.com/course/analyzing-data-with-polars-in-python/">Polars course</a>.</p>


</section>

 ]]></description>
  <category>100DaysOfPolars</category>
  <guid>https://www.conterval.com/blog/rounding-down-time-values-polars/</guid>
  <pubDate>Fri, 19 Dec 2025 06:00:00 GMT</pubDate>
</item>
<item>
  <title>Use title case on text in polars</title>
  <dc:creator>Joram Mutenge</dc:creator>
  <link>https://www.conterval.com/blog/use-title-case-on-text-polars/</link>
  <description><![CDATA[ 




<p>You have a table with authors in one column and the books they wrote in another. However, the book titles are all in lowercase, which is not the standard formatting for book titles.</p>
<div id="0ff4934f" class="cell" data-execution_count="1">
<div class="cell-output cell-output-display" data-execution_count="1">
<div><style>
.dataframe > thead > tr,
.dataframe > tbody > tr {
  text-align: right;
  white-space: pre-wrap;
}
</style>
<small>shape: (4, 2)</small>
<table class="dataframe caption-top table table-sm table-striped small" data-border="1">
<thead>
<tr class="header">
<th data-quarto-table-cell-role="th">Author</th>
<th data-quarto-table-cell-role="th">Book</th>
</tr>
<tr class="even">
<td>str</td>
<td>str</td>
</tr>
</thead>
<tbody>
<tr class="odd">
<td>"Harper Lee"</td>
<td>"to kill a mocking bird"</td>
</tr>
<tr class="even">
<td>"F. Scott Fitzgerald"</td>
<td>"this side of paradise"</td>
</tr>
<tr class="odd">
<td>"Haruki Murakami"</td>
<td>"men without women"</td>
</tr>
<tr class="even">
<td>"Binwell Sinyangwe"</td>
<td>"quills of desire"</td>
</tr>
</tbody>
</table>
</div>
</div>
</div>
<section id="use-title-case" class="level2">
<h2 data-anchor-id="use-title-case">Use title case</h2>
<p>You can format the book titles properly in the dataframe using the Polars expression <code>to_titlecase</code> like this:</p>
<div id="c8e62684" class="cell" data-execution_count="2">
<div class="code-copy-outer-scaffold"><div class="sourceCode cell-code" id="cb1" style="background: #f1f3f5;"><pre class="sourceCode python code-with-copy"><code class="sourceCode python"><span id="cb1-1">(df</span>
<span id="cb1-2"> .with_columns(pl.col(<span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">'Book'</span>).<span class="bu" style="color: null;
background-color: null;
font-style: inherit;">str</span>.to_titlecase())</span>
<span id="cb1-3"> )</span></code></pre></div></div>
<div class="cell-output cell-output-display" data-execution_count="2">
<div><style>
.dataframe > thead > tr,
.dataframe > tbody > tr {
  text-align: right;
  white-space: pre-wrap;
}
</style>
<small>shape: (4, 2)</small>
<table class="dataframe caption-top table table-sm table-striped small" data-border="1">
<thead>
<tr class="header">
<th data-quarto-table-cell-role="th">Author</th>
<th data-quarto-table-cell-role="th">Book</th>
</tr>
<tr class="even">
<td>str</td>
<td>str</td>
</tr>
</thead>
<tbody>
<tr class="odd">
<td>"Harper Lee"</td>
<td>"To Kill A Mocking Bird"</td>
</tr>
<tr class="even">
<td>"F. Scott Fitzgerald"</td>
<td>"This Side Of Paradise"</td>
</tr>
<tr class="odd">
<td>"Haruki Murakami"</td>
<td>"Men Without Women"</td>
</tr>
<tr class="even">
<td>"Binwell Sinyangwe"</td>
<td>"Quills Of Desire"</td>
</tr>
</tbody>
</table>
</div>
</div>
</div>
<p>Learn more ways to use Polars in my <a href="https://www.udemy.com/course/analyzing-data-with-polars-in-python/">Polars course</a>.</p>


</section>

 ]]></description>
  <category>100DaysOfPolars</category>
  <guid>https://www.conterval.com/blog/use-title-case-on-text-polars/</guid>
  <pubDate>Thu, 18 Dec 2025 06:00:00 GMT</pubDate>
</item>
<item>
  <title>Group by on time series in polars</title>
  <dc:creator>Joram Mutenge</dc:creator>
  <link>https://www.conterval.com/blog/group-by-dynamic-in-polars/</link>
  <description><![CDATA[ 




<p>Group by operations are powerful in Polars, but when working with time series data, you can make them even more effective by using <code>group_by_dynamic</code> instead of the standard <code>group_by</code>. Below is a dataframe showing power usage recorded every half hour over five days.</p>
<div id="dc62b5ee" class="cell" data-execution_count="1">
<div class="cell-output cell-output-display" data-execution_count="1">
<div><style>
.dataframe > thead > tr,
.dataframe > tbody > tr {
  text-align: right;
  white-space: pre-wrap;
}
</style>
<small>shape: (193, 2)</small>
<table class="dataframe caption-top table table-sm table-striped small" data-border="1">
<thead>
<tr class="header">
<th data-quarto-table-cell-role="th">Time</th>
<th data-quarto-table-cell-role="th">Power_Usage</th>
</tr>
<tr class="even">
<td>datetime[ms]</td>
<td>i64</td>
</tr>
</thead>
<tbody>
<tr class="odd">
<td>2025-02-01 00:00:00</td>
<td>2</td>
</tr>
<tr class="even">
<td>2025-02-01 00:30:00</td>
<td>1</td>
</tr>
<tr class="odd">
<td>2025-02-01 01:00:00</td>
<td>5</td>
</tr>
<tr class="even">
<td>2025-02-01 01:30:00</td>
<td>4</td>
</tr>
<tr class="odd">
<td>2025-02-01 02:00:00</td>
<td>4</td>
</tr>
<tr class="even">
<td>…</td>
<td>…</td>
</tr>
<tr class="odd">
<td>2025-02-04 22:00:00</td>
<td>2</td>
</tr>
<tr class="even">
<td>2025-02-04 22:30:00</td>
<td>4</td>
</tr>
<tr class="odd">
<td>2025-02-04 23:00:00</td>
<td>4</td>
</tr>
<tr class="even">
<td>2025-02-04 23:30:00</td>
<td>2</td>
</tr>
<tr class="odd">
<td>2025-02-05 00:00:00</td>
<td>6</td>
</tr>
</tbody>
</table>
</div>
</div>
</div>
<section id="aggregate-on-time-series" class="level2">
<h2 data-anchor-id="aggregate-on-time-series">Aggregate on time series</h2>
<p>Unlike the standard <code>group_by</code>, which limits you to predefined datetime components such as month or year, <code>group_by_dynamic</code> allows you to aggregate data over custom durations. In this example, the data is aggregated every five and a half hours.</p>
<div id="c447ab37" class="cell" data-execution_count="2">
<div class="code-copy-outer-scaffold"><div class="sourceCode cell-code" id="annotated-cell-1" data-llms-code-original="(df
 .sort('Time') # <1>
 .group_by_dynamic('Time', every='5h30m')
 .agg(pl.sum('Power_Usage'))
 )" style="background: #f1f3f5;"><pre class="sourceCode python code-annotation-code code-with-copy code-annotated"><code class="sourceCode python"><span id="annotated-cell-1-1">(df</span>
<a class="code-annotation-anchor" data-target-cell="annotated-cell-1" data-target-annotation="1" onclick="event.preventDefault();">1</a><span id="annotated-cell-1-2" class="code-annotation-target"> .sort(<span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">'Time'</span>)</span>
<span id="annotated-cell-1-3"> .group_by_dynamic(<span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">'Time'</span>, every<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span><span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">'5h30m'</span>)</span>
<span id="annotated-cell-1-4"> .agg(pl.<span class="bu" style="color: null;
background-color: null;
font-style: inherit;">sum</span>(<span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">'Power_Usage'</span>))</span>
<span id="annotated-cell-1-5"> )</span><div class="code-annotation-gutter-bg"></div><div class="code-annotation-gutter"></div></code></pre></div></div>
<div class="cell-annotation">
<dl class="code-annotation-container-grid">
<dt data-target-cell="annotated-cell-1" data-target-annotation="1">1</dt>
<dd>
<span data-code-cell="annotated-cell-1" data-code-lines="2" data-code-annotation="1">The data must be sorted before using <code>group_by_dynamic</code>, otherwise the code throws an error.</span>
</dd>
</dl>
</div>
<div class="cell-output cell-output-display" data-execution_count="2">
<div><style>
.dataframe > thead > tr,
.dataframe > tbody > tr {
  text-align: right;
  white-space: pre-wrap;
}
</style>
<small>shape: (18, 2)</small>
<table class="dataframe caption-top table table-sm table-striped small" data-border="1">
<thead>
<tr class="header">
<th data-quarto-table-cell-role="th">Time</th>
<th data-quarto-table-cell-role="th">Power_Usage</th>
</tr>
<tr class="even">
<td>datetime[ms]</td>
<td>i64</td>
</tr>
</thead>
<tbody>
<tr class="odd">
<td>2025-01-31 22:00:00</td>
<td>21</td>
</tr>
<tr class="even">
<td>2025-02-01 03:30:00</td>
<td>59</td>
</tr>
<tr class="odd">
<td>2025-02-01 09:00:00</td>
<td>61</td>
</tr>
<tr class="even">
<td>2025-02-01 14:30:00</td>
<td>50</td>
</tr>
<tr class="odd">
<td>2025-02-01 20:00:00</td>
<td>64</td>
</tr>
<tr class="even">
<td>…</td>
<td>…</td>
</tr>
<tr class="odd">
<td>2025-02-03 21:30:00</td>
<td>65</td>
</tr>
<tr class="even">
<td>2025-02-04 03:00:00</td>
<td>60</td>
</tr>
<tr class="odd">
<td>2025-02-04 08:30:00</td>
<td>48</td>
</tr>
<tr class="even">
<td>2025-02-04 14:00:00</td>
<td>73</td>
</tr>
<tr class="odd">
<td>2025-02-04 19:30:00</td>
<td>56</td>
</tr>
</tbody>
</table>
</div>
</div>
</div>
<p><br></p>
<p>Enroll to learn more in my <a href="https://www.udemy.com/course/analyzing-data-with-polars-in-python/">Polars course</a>.</p>


</section>

 ]]></description>
  <category>100DaysOfPolars</category>
  <guid>https://www.conterval.com/blog/group-by-dynamic-in-polars/</guid>
  <pubDate>Wed, 17 Dec 2025 06:00:00 GMT</pubDate>
</item>
<item>
  <title>Replace time zone in polars dataframe</title>
  <dc:creator>Joram Mutenge</dc:creator>
  <link>https://www.conterval.com/blog/replace-time-zone-polars/</link>
  <description><![CDATA[ 




<p>If you are working remotely and your team spans multiple time zones, it is important to ensure that the data you are analyzing matches the time zone in which it originated. For example, if you are in Chicago and a client in New York sends you a dataset to analyze, loading the dataset may display timestamps in your local time zone.</p>
<div id="353a9c97" class="cell" data-execution_count="1">
<div class="cell-output cell-output-display" data-execution_count="1">
<div><style>
.dataframe > thead > tr,
.dataframe > tbody > tr {
  text-align: right;
  white-space: pre-wrap;
}
</style>
<small>shape: (4, 1)</small>
<table class="dataframe caption-top table table-sm table-striped small" data-border="1">
<thead>
<tr class="header">
<th data-quarto-table-cell-role="th">Chicago_Time</th>
</tr>
<tr class="even">
<td>datetime[ms, America/Chicago]</td>
</tr>
</thead>
<tbody>
<tr class="odd">
<td>2023-12-31 18:00:00 CST</td>
</tr>
<tr class="even">
<td>2024-01-01 19:00:00 CST</td>
</tr>
<tr class="odd">
<td>2024-01-02 20:00:00 CST</td>
</tr>
<tr class="even">
<td>2024-01-03 21:00:00 CST</td>
</tr>
</tbody>
</table>
</div>
</div>
</div>
<section id="replace-the-time-zone" class="level2">
<h2 data-anchor-id="replace-the-time-zone">Replace the time zone</h2>
<p>To replace your local time zone with the time zone of the location where the data originated, you can use the date component <code>replace_time_zone</code>, as shown below:</p>
<div id="db20576d" class="cell" data-execution_count="2">
<div class="code-copy-outer-scaffold"><div class="sourceCode cell-code" id="cb1" style="background: #f1f3f5;"><pre class="sourceCode python code-with-copy"><code class="sourceCode python"><span id="cb1-1">(df</span>
<span id="cb1-2"> .with_columns(pl.col(<span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">'Chicago_Time'</span>).dt.replace_time_zone(<span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">'America/New_York'</span>)</span>
<span id="cb1-3">               .alias(<span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">'New_York_Time'</span>))</span>
<span id="cb1-4"> )</span></code></pre></div></div>
<div class="cell-output cell-output-display" data-execution_count="2">
<div><style>
.dataframe > thead > tr,
.dataframe > tbody > tr {
  text-align: right;
  white-space: pre-wrap;
}
</style>
<small>shape: (4, 2)</small>
<table class="dataframe caption-top table table-sm table-striped small" data-border="1">
<thead>
<tr class="header">
<th data-quarto-table-cell-role="th">Chicago_Time</th>
<th data-quarto-table-cell-role="th">New_York_Time</th>
</tr>
<tr class="even">
<td>datetime[ms, America/Chicago]</td>
<td>datetime[ms, America/New_York]</td>
</tr>
</thead>
<tbody>
<tr class="odd">
<td>2023-12-31 18:00:00 CST</td>
<td>2023-12-31 18:00:00 EST</td>
</tr>
<tr class="even">
<td>2024-01-01 19:00:00 CST</td>
<td>2024-01-01 19:00:00 EST</td>
</tr>
<tr class="odd">
<td>2024-01-02 20:00:00 CST</td>
<td>2024-01-02 20:00:00 EST</td>
</tr>
<tr class="even">
<td>2024-01-03 21:00:00 CST</td>
<td>2024-01-03 21:00:00 EST</td>
</tr>
</tbody>
</table>
</div>
</div>
</div>
<p>The time zone is now changed from Chicago time to New York time.</p>
<p>Learn more ways to analyze data in my <a href="https://www.udemy.com/course/analyzing-data-with-polars-in-python/">Polars course</a>.</p>


</section>

 ]]></description>
  <category>100DaysOfPolars</category>
  <guid>https://www.conterval.com/blog/replace-time-zone-polars/</guid>
  <pubDate>Tue, 16 Dec 2025 06:00:00 GMT</pubDate>
</item>
<item>
  <title>Filter rows in polars dataframe</title>
  <dc:creator>Joram Mutenge</dc:creator>
  <link>https://www.conterval.com/blog/filter-dataframe-rows/</link>
  <description><![CDATA[ 




<p>If you are analyzing data with Polars, it is almost impossible to complete an analysis without filtering. Data analysis usually involves selecting some rows from a dataframe while excluding others. Below is a dataframe of students and their grades.</p>
<div id="d8b5b606" class="cell" data-execution_count="1">
<div class="cell-output cell-output-display" data-execution_count="1">
<div><style>
.dataframe > thead > tr,
.dataframe > tbody > tr {
  text-align: right;
  white-space: pre-wrap;
}
</style>
<small>shape: (6, 2)</small>
<table class="dataframe caption-top table table-sm table-striped small" data-border="1">
<thead>
<tr class="header">
<th data-quarto-table-cell-role="th">Student</th>
<th data-quarto-table-cell-role="th">Grade</th>
</tr>
<tr class="even">
<td>str</td>
<td>i64</td>
</tr>
</thead>
<tbody>
<tr class="odd">
<td>"Spencer"</td>
<td>93</td>
</tr>
<tr class="even">
<td>"Emily"</td>
<td>88</td>
</tr>
<tr class="odd">
<td>"Hannah"</td>
<td>73</td>
</tr>
<tr class="even">
<td>"Aria"</td>
<td>69</td>
</tr>
<tr class="odd">
<td>"Mona"</td>
<td>55</td>
</tr>
<tr class="even">
<td>"Paige"</td>
<td>89</td>
</tr>
</tbody>
</table>
</div>
</div>
</div>
<section id="filter-for-some-row" class="level2">
<h2 data-anchor-id="filter-for-some-row">Filter for some row</h2>
<p>To get the row showing the student with the highest grade, you can use the <code>filter</code> method together with the <code>max</code> function, as shown below:</p>
<div id="f8bc28c6" class="cell" data-execution_count="2">
<div class="code-copy-outer-scaffold"><div class="sourceCode cell-code" id="cb1" style="background: #f1f3f5;"><pre class="sourceCode python code-with-copy"><code class="sourceCode python"><span id="cb1-1">(df</span>
<span id="cb1-2"> .<span class="bu" style="color: null;
background-color: null;
font-style: inherit;">filter</span>(pl.col(<span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">'Grade'</span>) <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">==</span> pl.<span class="bu" style="color: null;
background-color: null;
font-style: inherit;">max</span>(<span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">'Grade'</span>))</span>
<span id="cb1-3"> )</span></code></pre></div></div>
<div class="cell-output cell-output-display" data-execution_count="2">
<div><style>
.dataframe > thead > tr,
.dataframe > tbody > tr {
  text-align: right;
  white-space: pre-wrap;
}
</style>
<small>shape: (1, 2)</small>
<table class="dataframe caption-top table table-sm table-striped small" data-border="1">
<thead>
<tr class="header">
<th data-quarto-table-cell-role="th">Student</th>
<th data-quarto-table-cell-role="th">Grade</th>
</tr>
<tr class="even">
<td>str</td>
<td>i64</td>
</tr>
</thead>
<tbody>
<tr class="odd">
<td>"Spencer"</td>
<td>93</td>
</tr>
</tbody>
</table>
</div>
</div>
</div>
<p>You can also use <code>filter</code> to get the opposite of a specified value by using the “not equal to” operator (<code>!=</code>):</p>
<div id="f72c8da0" class="cell" data-execution_count="3">
<div class="code-copy-outer-scaffold"><div class="sourceCode cell-code" id="cb2" style="background: #f1f3f5;"><pre class="sourceCode python code-with-copy"><code class="sourceCode python"><span id="cb2-1">(df</span>
<span id="cb2-2"> .<span class="bu" style="color: null;
background-color: null;
font-style: inherit;">filter</span>(pl.col(<span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">'Grade'</span>) <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">!=</span> pl.<span class="bu" style="color: null;
background-color: null;
font-style: inherit;">max</span>(<span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">'Grade'</span>))</span>
<span id="cb2-3"> )</span></code></pre></div></div>
<div class="cell-output cell-output-display" data-execution_count="3">
<div><style>
.dataframe > thead > tr,
.dataframe > tbody > tr {
  text-align: right;
  white-space: pre-wrap;
}
</style>
<small>shape: (5, 2)</small>
<table class="dataframe caption-top table table-sm table-striped small" data-border="1">
<thead>
<tr class="header">
<th data-quarto-table-cell-role="th">Student</th>
<th data-quarto-table-cell-role="th">Grade</th>
</tr>
<tr class="even">
<td>str</td>
<td>i64</td>
</tr>
</thead>
<tbody>
<tr class="odd">
<td>"Emily"</td>
<td>88</td>
</tr>
<tr class="even">
<td>"Hannah"</td>
<td>73</td>
</tr>
<tr class="odd">
<td>"Aria"</td>
<td>69</td>
</tr>
<tr class="even">
<td>"Mona"</td>
<td>55</td>
</tr>
<tr class="odd">
<td>"Paige"</td>
<td>89</td>
</tr>
</tbody>
</table>
</div>
</div>
</div>
<p>You can achieve the same result as in the previous example by using the negation symbol <code>~</code>:</p>
<div id="d9813b45" class="cell" data-execution_count="4">
<div class="code-copy-outer-scaffold"><div class="sourceCode cell-code" id="cb3" style="background: #f1f3f5;"><pre class="sourceCode python code-with-copy"><code class="sourceCode python"><span id="cb3-1">(df</span>
<span id="cb3-2"> .<span class="bu" style="color: null;
background-color: null;
font-style: inherit;">filter</span>(<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">~</span>(pl.col(<span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">'Grade'</span>) <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">==</span> pl.<span class="bu" style="color: null;
background-color: null;
font-style: inherit;">max</span>(<span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">'Grade'</span>)))</span>
<span id="cb3-3"> )</span></code></pre></div></div>
<div class="cell-output cell-output-display" data-execution_count="4">
<div><style>
.dataframe > thead > tr,
.dataframe > tbody > tr {
  text-align: right;
  white-space: pre-wrap;
}
</style>
<small>shape: (5, 2)</small>
<table class="dataframe caption-top table table-sm table-striped small" data-border="1">
<thead>
<tr class="header">
<th data-quarto-table-cell-role="th">Student</th>
<th data-quarto-table-cell-role="th">Grade</th>
</tr>
<tr class="even">
<td>str</td>
<td>i64</td>
</tr>
</thead>
<tbody>
<tr class="odd">
<td>"Emily"</td>
<td>88</td>
</tr>
<tr class="even">
<td>"Hannah"</td>
<td>73</td>
</tr>
<tr class="odd">
<td>"Aria"</td>
<td>69</td>
</tr>
<tr class="even">
<td>"Mona"</td>
<td>55</td>
</tr>
<tr class="odd">
<td>"Paige"</td>
<td>89</td>
</tr>
</tbody>
</table>
</div>
</div>
</div>
<p>Check out my <a href="https://www.udemy.com/course/analyzing-data-with-polars-in-python/">Polars course</a> to learn more clever ways to analyze your data.</p>


</section>

 ]]></description>
  <category>100DaysOfPolars</category>
  <guid>https://www.conterval.com/blog/filter-dataframe-rows/</guid>
  <pubDate>Mon, 15 Dec 2025 06:00:00 GMT</pubDate>
</item>
</channel>
</rss>
