Browse Source

Pandas

pull/121/head
Jure Šorn 3 years ago
parent
commit
a3278d23d6
5 changed files with 38 additions and 46 deletions
  1. 22
      README.md
  2. 28
      index.html
  3. 18
      parse.js
  4. 14
      pdf/index_for_pdf.html
  5. 2
      pdf/index_for_pdf_print.html

22
README.md

@ -3140,7 +3140,7 @@ Name: a, dtype: int64
<Sr>.update(<Sr>) # Updates items that are already present. <Sr>.update(<Sr>) # Updates items that are already present.
``` ```
#### Aggregate, Transform, Map:
#### Series — Aggregate, Transform, Map:
```python ```python
<el> = <Sr>.sum/max/mean/idxmax/all() # Or: <Sr>.agg(lambda <Sr>: <el>) <el> = <Sr>.sum/max/mean/idxmax/all() # Or: <Sr>.agg(lambda <Sr>: <el>)
<Sr> = <Sr>.rank/diff/cumsum/ffill/interpl() # Or: <Sr>.agg/transform(lambda <Sr>: <Sr>) <Sr> = <Sr>.rank/diff/cumsum/ffill/interpl() # Or: <Sr>.agg/transform(lambda <Sr>: <Sr>)
@ -3161,9 +3161,7 @@ y 2
| sr.apply(…) | 3 | sum 3 | s 3 | | sr.apply(…) | 3 | sum 3 | s 3 |
| sr.agg(…) | | | | | sr.agg(…) | | | |
+-----------------+-------------+-------------+---------------+ +-----------------+-------------+-------------+---------------+
```
```text
+-----------------+-------------+-------------+---------------+ +-----------------+-------------+-------------+---------------+
| | 'rank' | ['rank'] | {'r': 'rank'} | | | 'rank' | ['rank'] | {'r': 'rank'} |
+-----------------+-------------+-------------+---------------+ +-----------------+-------------+-------------+---------------+
@ -3214,7 +3212,7 @@ b 3 4
<DF> = <DF>.sort_values(column_key/s) # Sorts rows by the passed column/s. <DF> = <DF>.sort_values(column_key/s) # Sorts rows by the passed column/s.
``` ```
#### Merge, Join, Concat:
#### DataFrame — Merge, Join, Concat:
```python ```python
>>> l = DataFrame([[1, 2], [3, 4]], index=['a', 'b'], columns=['x', 'y']) >>> l = DataFrame([[1, 2], [3, 4]], index=['a', 'b'], columns=['x', 'y'])
x y x y
@ -3258,13 +3256,13 @@ c 6 7
+------------------------+---------------+------------+------------+--------------------------+ +------------------------+---------------+------------+------------+--------------------------+
``` ```
#### Aggregate, Transform, Map:
#### DataFrame — Aggregate, Transform, Map:
```python ```python
<Sr> = <DF>.sum/max/mean/idxmax/all() # Or: <DF>.apply/agg(lambda <Sr>: <el>) <Sr> = <DF>.sum/max/mean/idxmax/all() # Or: <DF>.apply/agg(lambda <Sr>: <el>)
<DF> = <DF>.rank/diff/cumsum/ffill/interpl() # Or: <DF>.apply/agg/transform(lambda <Sr>: <Sr>) <DF> = <DF>.rank/diff/cumsum/ffill/interpl() # Or: <DF>.apply/agg/transform(lambda <Sr>: <Sr>)
<DF> = <DF>.fillna(<el>) # Or: <DF>.applymap(lambda <el>: <el>) <DF> = <DF>.fillna(<el>) # Or: <DF>.applymap(lambda <el>: <el>)
``` ```
* **All operations operate on columns by default. Use `'axis=1'` parameter to process the rows instead. Transform passes DF to a function if it raises an error after receiving a Sr.**
* **All operations operate on columns by default. Pass `'axis=1'` to process the rows instead.**
```python ```python
>>> df = DataFrame([[1, 2], [3, 4]], index=['a', 'b'], columns=['x', 'y']) >>> df = DataFrame([[1, 2], [3, 4]], index=['a', 'b'], columns=['x', 'y'])
@ -3281,9 +3279,7 @@ b 3 4
| df.agg(…) | x 4 | sum 4 6 | x 4 | | df.agg(…) | x 4 | sum 4 6 | x 4 |
| | y 6 | | | | | y 6 | | |
+-----------------+-------------+-------------+---------------+ +-----------------+-------------+-------------+---------------+
```
```text
+-----------------+-------------+-------------+---------------+ +-----------------+-------------+-------------+---------------+
| | 'rank' | ['rank'] | {'x': 'rank'} | | | 'rank' | ['rank'] | {'x': 'rank'} |
+-----------------+-------------+-------------+---------------+ +-----------------+-------------+-------------+---------------+
@ -3295,7 +3291,7 @@ b 3 4
``` ```
* **Use `'<DF>[col_key_1, col_key_2][row_key]'` to get the fifth result's values.** * **Use `'<DF>[col_key_1, col_key_2][row_key]'` to get the fifth result's values.**
#### Encode, Decode:
#### DataFrame — Encode, Decode, Plot:
```python ```python
<DF> = pd.read_json/html('<str/path/url>') <DF> = pd.read_json/html('<str/path/url>')
<DF> = pd.read_csv/pickle/excel('<path/url>') <DF> = pd.read_csv/pickle/excel('<path/url>')
@ -3310,6 +3306,11 @@ b 3 4
<DF>.to_sql('<table_name>', <connection>) <DF>.to_sql('<table_name>', <connection>)
``` ```
```python
import matplotlib.pyplot as plt
<DF>.plot.line/bar/hist/scatter([x=column_key, y=column_key/s]); plt.show()
```
### GroupBy ### GroupBy
**Object that groups together rows of a dataframe based on the value of the passed column.** **Object that groups together rows of a dataframe based on the value of the passed column.**
@ -3323,12 +3324,11 @@ c 7 8
```python ```python
<GB> = <DF>.groupby(column_key/s) # DF is split into groups based on passed column. <GB> = <DF>.groupby(column_key/s) # DF is split into groups based on passed column.
<DF> = <GB>.get_group(group_key/s) # Selects a group by value of grouping column.
<DF> = <GB>.apply(<func>) # Maps each group. Func can return DF, Sr or el. <DF> = <GB>.apply(<func>) # Maps each group. Func can return DF, Sr or el.
<GB> = <GB>[column_key] # A single column GB. All operations return a Sr. <GB> = <GB>[column_key] # A single column GB. All operations return a Sr.
``` ```
#### Aggregate, Transform, Map:
#### GroupBy — Aggregate, Transform, Map:
```python ```python
<DF> = <GB>.sum/max/mean/idxmax/all() # Or: <GB>.agg(lambda <Sr>: <el>) <DF> = <GB>.sum/max/mean/idxmax/all() # Or: <GB>.agg(lambda <Sr>: <el>)
<DF> = <GB>.rank/diff/cumsum/ffill() # Or: <GB>.transform(lambda <Sr>: <Sr>) <DF> = <GB>.rank/diff/cumsum/ffill() # Or: <GB>.transform(lambda <Sr>: <Sr>)

28
index.html

@ -54,7 +54,7 @@
<body> <body>
<header> <header>
<aside>February 4, 2022</aside>
<aside>February 5, 2022</aside>
<a href="https://gto76.github.io" rel="author">Jure Šorn</a> <a href="https://gto76.github.io" rel="author">Jure Šorn</a>
</header> </header>
@ -2549,7 +2549,7 @@ Name: a, dtype: int64
&lt;Sr&gt; = &lt;Sr&gt;.combine_first(&lt;Sr&gt;) <span class="hljs-comment"># Adds items that are not yet present.</span> &lt;Sr&gt; = &lt;Sr&gt;.combine_first(&lt;Sr&gt;) <span class="hljs-comment"># Adds items that are not yet present.</span>
&lt;Sr&gt;.update(&lt;Sr&gt;) <span class="hljs-comment"># Updates items that are already present.</span> &lt;Sr&gt;.update(&lt;Sr&gt;) <span class="hljs-comment"># Updates items that are already present.</span>
</code></pre> </code></pre>
<div><h4 id="aggregatetransformmap">Aggregate, Transform, Map:</h4><pre><code class="python language-python hljs">&lt;el&gt; = &lt;Sr&gt;.sum/max/mean/idxmax/all() <span class="hljs-comment"># Or: &lt;Sr&gt;.agg(lambda &lt;Sr&gt;: &lt;el&gt;)</span>
<div><h4 id="seriesaggregatetransformmap">Series — Aggregate, Transform, Map:</h4><pre><code class="python language-python hljs">&lt;el&gt; = &lt;Sr&gt;.sum/max/mean/idxmax/all() <span class="hljs-comment"># Or: &lt;Sr&gt;.agg(lambda &lt;Sr&gt;: &lt;el&gt;)</span>
&lt;Sr&gt; = &lt;Sr&gt;.rank/diff/cumsum/ffill/interpl() <span class="hljs-comment"># Or: &lt;Sr&gt;.agg/transform(lambda &lt;Sr&gt;: &lt;Sr&gt;)</span> &lt;Sr&gt; = &lt;Sr&gt;.rank/diff/cumsum/ffill/interpl() <span class="hljs-comment"># Or: &lt;Sr&gt;.agg/transform(lambda &lt;Sr&gt;: &lt;Sr&gt;)</span>
&lt;Sr&gt; = &lt;Sr&gt;.fillna(&lt;el&gt;) <span class="hljs-comment"># Or: &lt;Sr&gt;.agg/transform/map(lambda &lt;el&gt;: &lt;el&gt;)</span> &lt;Sr&gt; = &lt;Sr&gt;.fillna(&lt;el&gt;) <span class="hljs-comment"># Or: &lt;Sr&gt;.agg/transform/map(lambda &lt;el&gt;: &lt;el&gt;)</span>
</code></pre></div> </code></pre></div>
@ -2567,8 +2567,8 @@ y <span class="hljs-number">2</span>
┃ sr.apply(…) │ <span class="hljs-number">3</span> │ sum <span class="hljs-number">3</span> │ s <span class="hljs-number">3</span> ┃ sr.apply(…) │ <span class="hljs-number">3</span> │ sum <span class="hljs-number">3</span> │ s <span class="hljs-number">3</span>
┃ sr.agg(…) │ │ │ ┃ ┃ sr.agg(…) │ │ │ ┃
┗━━━━━━━━━━━━━━━━━┷━━━━━━━━━━━━━┷━━━━━━━━━━━━━┷━━━━━━━━━━━━━━━┛ ┗━━━━━━━━━━━━━━━━━┷━━━━━━━━━━━━━┷━━━━━━━━━━━━━┷━━━━━━━━━━━━━━━┛
</code></pre>
<pre><code class="python hljs">┏━━━━━━━━━━━━━━━━━┯━━━━━━━━━━━━━┯━━━━━━━━━━━━━┯━━━━━━━━━━━━━━━┓
┏━━━━━━━━━━━━━━━━━┯━━━━━━━━━━━━━┯━━━━━━━━━━━━━┯━━━━━━━━━━━━━━━┓
┃ │ <span class="hljs-string">'rank'</span> │ [<span class="hljs-string">'rank'</span>] │ {<span class="hljs-string">'r'</span>: <span class="hljs-string">'rank'</span>} ┃ ┃ │ <span class="hljs-string">'rank'</span> │ [<span class="hljs-string">'rank'</span>] │ {<span class="hljs-string">'r'</span>: <span class="hljs-string">'rank'</span>} ┃
┠─────────────────┼─────────────┼─────────────┼───────────────┨ ┠─────────────────┼─────────────┼─────────────┼───────────────┨
┃ sr.apply(…) │ │ rank │ ┃ ┃ sr.apply(…) │ │ rank │ ┃
@ -2606,7 +2606,7 @@ b <span class="hljs-number">3</span> <span class="hljs-number">4</span>
&lt;DF&gt; = &lt;DF&gt;.sort_index(ascending=<span class="hljs-keyword">True</span>) <span class="hljs-comment"># Sorts rows by row keys.</span> &lt;DF&gt; = &lt;DF&gt;.sort_index(ascending=<span class="hljs-keyword">True</span>) <span class="hljs-comment"># Sorts rows by row keys.</span>
&lt;DF&gt; = &lt;DF&gt;.sort_values(column_key/s) <span class="hljs-comment"># Sorts rows by the passed column/s.</span> &lt;DF&gt; = &lt;DF&gt;.sort_values(column_key/s) <span class="hljs-comment"># Sorts rows by the passed column/s.</span>
</code></pre> </code></pre>
<div><h4 id="mergejoinconcat">Merge, Join, Concat:</h4><pre><code class="python language-python hljs"><span class="hljs-meta">&gt;&gt;&gt; </span>l = DataFrame([[<span class="hljs-number">1</span>, <span class="hljs-number">2</span>], [<span class="hljs-number">3</span>, <span class="hljs-number">4</span>]], index=[<span class="hljs-string">'a'</span>, <span class="hljs-string">'b'</span>], columns=[<span class="hljs-string">'x'</span>, <span class="hljs-string">'y'</span>])
<div><h4 id="dataframemergejoinconcat">DataFrame — Merge, Join, Concat:</h4><pre><code class="python language-python hljs"><span class="hljs-meta">&gt;&gt;&gt; </span>l = DataFrame([[<span class="hljs-number">1</span>, <span class="hljs-number">2</span>], [<span class="hljs-number">3</span>, <span class="hljs-number">4</span>]], index=[<span class="hljs-string">'a'</span>, <span class="hljs-string">'b'</span>], columns=[<span class="hljs-string">'x'</span>, <span class="hljs-string">'y'</span>])
x y x y
a <span class="hljs-number">1</span> <span class="hljs-number">2</span> a <span class="hljs-number">1</span> <span class="hljs-number">2</span>
b <span class="hljs-number">3</span> <span class="hljs-number">4</span> b <span class="hljs-number">3</span> <span class="hljs-number">4</span>
@ -2646,13 +2646,13 @@ c <span class="hljs-number">6</span> <span class="hljs-number">7</span>
┃ │ c . <span class="hljs-number">6</span> <span class="hljs-number">7</span> │ │ │ R must be a DataFrame. ┃ ┃ │ c . <span class="hljs-number">6</span> <span class="hljs-number">7</span> │ │ │ R must be a DataFrame. ┃
┗━━━━━━━━━━━━━━━━━━━━━━━━┷━━━━━━━━━━━━━━━┷━━━━━━━━━━━━┷━━━━━━━━━━━━┷━━━━━━━━━━━━━━━━━━━━━━━━━━┛ ┗━━━━━━━━━━━━━━━━━━━━━━━━┷━━━━━━━━━━━━━━━┷━━━━━━━━━━━━┷━━━━━━━━━━━━┷━━━━━━━━━━━━━━━━━━━━━━━━━━┛
</code></pre> </code></pre>
<div><h4 id="aggregatetransformmap-1">Aggregate, Transform, Map:</h4><pre><code class="python language-python hljs">&lt;Sr&gt; = &lt;DF&gt;.sum/max/mean/idxmax/all() <span class="hljs-comment"># Or: &lt;DF&gt;.apply/agg(lambda &lt;Sr&gt;: &lt;el&gt;)</span>
<div><h4 id="dataframeaggregatetransformmap">DataFrame — Aggregate, Transform, Map:</h4><pre><code class="python language-python hljs">&lt;Sr&gt; = &lt;DF&gt;.sum/max/mean/idxmax/all() <span class="hljs-comment"># Or: &lt;DF&gt;.apply/agg(lambda &lt;Sr&gt;: &lt;el&gt;)</span>
&lt;DF&gt; = &lt;DF&gt;.rank/diff/cumsum/ffill/interpl() <span class="hljs-comment"># Or: &lt;DF&gt;.apply/agg/transform(lambda &lt;Sr&gt;: &lt;Sr&gt;)</span> &lt;DF&gt; = &lt;DF&gt;.rank/diff/cumsum/ffill/interpl() <span class="hljs-comment"># Or: &lt;DF&gt;.apply/agg/transform(lambda &lt;Sr&gt;: &lt;Sr&gt;)</span>
&lt;DF&gt; = &lt;DF&gt;.fillna(&lt;el&gt;) <span class="hljs-comment"># Or: &lt;DF&gt;.applymap(lambda &lt;el&gt;: &lt;el&gt;)</span> &lt;DF&gt; = &lt;DF&gt;.fillna(&lt;el&gt;) <span class="hljs-comment"># Or: &lt;DF&gt;.applymap(lambda &lt;el&gt;: &lt;el&gt;)</span>
</code></pre></div> </code></pre></div>
<ul> <ul>
<li><strong>All operations operate on columns by default. Use <code class="python hljs"><span class="hljs-string">'axis=1'</span></code> parameter to process the rows instead. Transform passes DF to a function if it raises an error after receiving a Sr.</strong></li>
<li><strong>All operations operate on columns by default. Pass <code class="python hljs"><span class="hljs-string">'axis=1'</span></code> to process the rows instead.</strong></li>
</ul> </ul>
<pre><code class="python language-python hljs"><span class="hljs-meta">&gt;&gt;&gt; </span>df = DataFrame([[<span class="hljs-number">1</span>, <span class="hljs-number">2</span>], [<span class="hljs-number">3</span>, <span class="hljs-number">4</span>]], index=[<span class="hljs-string">'a'</span>, <span class="hljs-string">'b'</span>], columns=[<span class="hljs-string">'x'</span>, <span class="hljs-string">'y'</span>]) <pre><code class="python language-python hljs"><span class="hljs-meta">&gt;&gt;&gt; </span>df = DataFrame([[<span class="hljs-number">1</span>, <span class="hljs-number">2</span>], [<span class="hljs-number">3</span>, <span class="hljs-number">4</span>]], index=[<span class="hljs-string">'a'</span>, <span class="hljs-string">'b'</span>], columns=[<span class="hljs-string">'x'</span>, <span class="hljs-string">'y'</span>])
x y x y
@ -2666,8 +2666,8 @@ b <span class="hljs-number">3</span> <span class="hljs-number">4</span>
┃ df.agg(…) │ x <span class="hljs-number">4</span> │ sum <span class="hljs-number">4</span> <span class="hljs-number">6</span> │ x <span class="hljs-number">4</span> ┃ df.agg(…) │ x <span class="hljs-number">4</span> │ sum <span class="hljs-number">4</span> <span class="hljs-number">6</span> │ x <span class="hljs-number">4</span>
┃ │ y <span class="hljs-number">6</span> │ │ ┃ ┃ │ y <span class="hljs-number">6</span> │ │ ┃
┗━━━━━━━━━━━━━━━━━┷━━━━━━━━━━━━━┷━━━━━━━━━━━━━┷━━━━━━━━━━━━━━━┛ ┗━━━━━━━━━━━━━━━━━┷━━━━━━━━━━━━━┷━━━━━━━━━━━━━┷━━━━━━━━━━━━━━━┛
</code></pre>
<pre><code class="python hljs">┏━━━━━━━━━━━━━━━━━┯━━━━━━━━━━━━━┯━━━━━━━━━━━━━┯━━━━━━━━━━━━━━━┓
┏━━━━━━━━━━━━━━━━━┯━━━━━━━━━━━━━┯━━━━━━━━━━━━━┯━━━━━━━━━━━━━━━┓
┃ │ <span class="hljs-string">'rank'</span> │ [<span class="hljs-string">'rank'</span>] │ {<span class="hljs-string">'x'</span>: <span class="hljs-string">'rank'</span>} ┃ ┃ │ <span class="hljs-string">'rank'</span> │ [<span class="hljs-string">'rank'</span>] │ {<span class="hljs-string">'x'</span>: <span class="hljs-string">'rank'</span>} ┃
┠─────────────────┼─────────────┼─────────────┼───────────────┨ ┠─────────────────┼─────────────┼─────────────┼───────────────┨
┃ df.apply(…) │ x y │ x y │ x ┃ ┃ df.apply(…) │ x y │ x y │ x ┃
@ -2679,7 +2679,7 @@ b <span class="hljs-number">3</span> <span class="hljs-number">4</span>
<ul> <ul>
<li><strong>Use <code class="python hljs"><span class="hljs-string">'&lt;DF&gt;[col_key_1, col_key_2][row_key]'</span></code> to get the fifth result's values.</strong></li> <li><strong>Use <code class="python hljs"><span class="hljs-string">'&lt;DF&gt;[col_key_1, col_key_2][row_key]'</span></code> to get the fifth result's values.</strong></li>
</ul> </ul>
<div><h4 id="encodedecode">Encode, Decode:</h4><pre><code class="python language-python hljs">&lt;DF&gt; = pd.read_json/html(<span class="hljs-string">'&lt;str/path/url&gt;'</span>)
<div><h4 id="dataframeencodedecodeplot">DataFrame — Encode, Decode, Plot:</h4><pre><code class="python language-python hljs">&lt;DF&gt; = pd.read_json/html(<span class="hljs-string">'&lt;str/path/url&gt;'</span>)
&lt;DF&gt; = pd.read_csv/pickle/excel(<span class="hljs-string">'&lt;path/url&gt;'</span>) &lt;DF&gt; = pd.read_csv/pickle/excel(<span class="hljs-string">'&lt;path/url&gt;'</span>)
&lt;DF&gt; = pd.read_sql(<span class="hljs-string">'&lt;table_name/query&gt;'</span>, &lt;connection&gt;) &lt;DF&gt; = pd.read_sql(<span class="hljs-string">'&lt;table_name/query&gt;'</span>, &lt;connection&gt;)
&lt;DF&gt; = pd.read_clipboard() &lt;DF&gt; = pd.read_clipboard()
@ -2690,6 +2690,9 @@ b <span class="hljs-number">3</span> <span class="hljs-number">4</span>
&lt;DF&gt;.to_pickle/excel(&lt;path&gt;) &lt;DF&gt;.to_pickle/excel(&lt;path&gt;)
&lt;DF&gt;.to_sql(<span class="hljs-string">'&lt;table_name&gt;'</span>, &lt;connection&gt;) &lt;DF&gt;.to_sql(<span class="hljs-string">'&lt;table_name&gt;'</span>, &lt;connection&gt;)
</code></pre> </code></pre>
<pre><code class="python language-python hljs"><span class="hljs-keyword">import</span> matplotlib.pyplot <span class="hljs-keyword">as</span> plt
&lt;DF&gt;.plot.line/bar/hist/scatter([x=column_key, y=column_key/s]); plt.show()
</code></pre>
<div><h3 id="groupby">GroupBy</h3><p><strong>Object that groups together rows of a dataframe based on the value of the passed column.</strong></p><pre><code class="python language-python hljs"><span class="hljs-meta">&gt;&gt;&gt; </span>df = DataFrame([[<span class="hljs-number">1</span>, <span class="hljs-number">2</span>, <span class="hljs-number">3</span>], [<span class="hljs-number">4</span>, <span class="hljs-number">5</span>, <span class="hljs-number">6</span>], [<span class="hljs-number">7</span>, <span class="hljs-number">8</span>, <span class="hljs-number">6</span>]], index=list(<span class="hljs-string">'abc'</span>), columns=list(<span class="hljs-string">'xyz'</span>)) <div><h3 id="groupby">GroupBy</h3><p><strong>Object that groups together rows of a dataframe based on the value of the passed column.</strong></p><pre><code class="python language-python hljs"><span class="hljs-meta">&gt;&gt;&gt; </span>df = DataFrame([[<span class="hljs-number">1</span>, <span class="hljs-number">2</span>, <span class="hljs-number">3</span>], [<span class="hljs-number">4</span>, <span class="hljs-number">5</span>, <span class="hljs-number">6</span>], [<span class="hljs-number">7</span>, <span class="hljs-number">8</span>, <span class="hljs-number">6</span>]], index=list(<span class="hljs-string">'abc'</span>), columns=list(<span class="hljs-string">'xyz'</span>))
<span class="hljs-meta">&gt;&gt;&gt; </span>df.groupby(<span class="hljs-string">'z'</span>).get_group(<span class="hljs-number">6</span>) <span class="hljs-meta">&gt;&gt;&gt; </span>df.groupby(<span class="hljs-string">'z'</span>).get_group(<span class="hljs-number">6</span>)
x y x y
@ -2699,11 +2702,10 @@ c <span class="hljs-number">7</span> <span class="hljs-number">8</span>
<pre><code class="python language-python hljs">&lt;GB&gt; = &lt;DF&gt;.groupby(column_key/s) <span class="hljs-comment"># DF is split into groups based on passed column.</span> <pre><code class="python language-python hljs">&lt;GB&gt; = &lt;DF&gt;.groupby(column_key/s) <span class="hljs-comment"># DF is split into groups based on passed column.</span>
&lt;DF&gt; = &lt;GB&gt;.get_group(group_key/s) <span class="hljs-comment"># Selects a group by value of grouping column.</span>
&lt;DF&gt; = &lt;GB&gt;.apply(&lt;func&gt;) <span class="hljs-comment"># Maps each group. Func can return DF, Sr or el.</span> &lt;DF&gt; = &lt;GB&gt;.apply(&lt;func&gt;) <span class="hljs-comment"># Maps each group. Func can return DF, Sr or el.</span>
&lt;GB&gt; = &lt;GB&gt;[column_key] <span class="hljs-comment"># A single column GB. All operations return a Sr.</span> &lt;GB&gt; = &lt;GB&gt;[column_key] <span class="hljs-comment"># A single column GB. All operations return a Sr.</span>
</code></pre> </code></pre>
<div><h4 id="aggregatetransformmap-2">Aggregate, Transform, Map:</h4><pre><code class="python language-python hljs">&lt;DF&gt; = &lt;GB&gt;.sum/max/mean/idxmax/all() <span class="hljs-comment"># Or: &lt;GB&gt;.agg(lambda &lt;Sr&gt;: &lt;el&gt;)</span>
<div><h4 id="groupbyaggregatetransformmap">GroupBy — Aggregate, Transform, Map:</h4><pre><code class="python language-python hljs">&lt;DF&gt; = &lt;GB&gt;.sum/max/mean/idxmax/all() <span class="hljs-comment"># Or: &lt;GB&gt;.agg(lambda &lt;Sr&gt;: &lt;el&gt;)</span>
&lt;DF&gt; = &lt;GB&gt;.rank/diff/cumsum/ffill() <span class="hljs-comment"># Or: &lt;GB&gt;.transform(lambda &lt;Sr&gt;: &lt;Sr&gt;)</span> &lt;DF&gt; = &lt;GB&gt;.rank/diff/cumsum/ffill() <span class="hljs-comment"># Or: &lt;GB&gt;.transform(lambda &lt;Sr&gt;: &lt;Sr&gt;)</span>
&lt;DF&gt; = &lt;GB&gt;.fillna(&lt;el&gt;) <span class="hljs-comment"># Or: &lt;GB&gt;.transform(lambda &lt;Sr&gt;: &lt;Sr&gt;)</span> &lt;DF&gt; = &lt;GB&gt;.fillna(&lt;el&gt;) <span class="hljs-comment"># Or: &lt;GB&gt;.transform(lambda &lt;Sr&gt;: &lt;Sr&gt;)</span>
</code></pre></div> </code></pre></div>
@ -2881,7 +2883,7 @@ $ pyinstaller script.py --add-data '&lt;path&gt;:.' <span class="hljs-comment">
<footer> <footer>
<aside>February 4, 2022</aside>
<aside>February 5, 2022</aside>
<a href="https://gto76.github.io" rel="author">Jure Šorn</a> <a href="https://gto76.github.io" rel="author">Jure Šorn</a>
</footer> </footer>

18
parse.js

@ -316,12 +316,8 @@ const DIAGRAM_13_B =
"┠─────────────────┼─────────────┼─────────────┼───────────────┨\n" + "┠─────────────────┼─────────────┼─────────────┼───────────────┨\n" +
"┃ sr.apply(…) │ 3 │ sum 3 │ s 3 ┃\n" + "┃ sr.apply(…) │ 3 │ sum 3 │ s 3 ┃\n" +
"┃ sr.agg(…) │ │ │ ┃\n" + "┃ sr.agg(…) │ │ │ ┃\n" +
"┗━━━━━━━━━━━━━━━━━┷━━━━━━━━━━━━━┷━━━━━━━━━━━━━┷━━━━━━━━━━━━━━━┛\n";
const DIAGRAM_14_A =
'| sr.apply(…) | | rank | |';
const DIAGRAM_14_B =
"┗━━━━━━━━━━━━━━━━━┷━━━━━━━━━━━━━┷━━━━━━━━━━━━━┷━━━━━━━━━━━━━━━┛\n" +
"\n" +
"┏━━━━━━━━━━━━━━━━━┯━━━━━━━━━━━━━┯━━━━━━━━━━━━━┯━━━━━━━━━━━━━━━┓\n" + "┏━━━━━━━━━━━━━━━━━┯━━━━━━━━━━━━━┯━━━━━━━━━━━━━┯━━━━━━━━━━━━━━━┓\n" +
"┃ │ 'rank' │ ['rank'] │ {'r': 'rank'} ┃\n" + "┃ │ 'rank' │ ['rank'] │ {'r': 'rank'} ┃\n" +
"┠─────────────────┼─────────────┼─────────────┼───────────────┨\n" + "┠─────────────────┼─────────────┼─────────────┼───────────────┨\n" +
@ -374,12 +370,8 @@ const DIAGRAM_16_B =
"┃ df.apply(…) │ │ x y │ ┃\n" + "┃ df.apply(…) │ │ x y │ ┃\n" +
"┃ df.agg(…) │ x 4 │ sum 4 6 │ x 4 ┃\n" + "┃ df.agg(…) │ x 4 │ sum 4 6 │ x 4 ┃\n" +
"┃ │ y 6 │ │ ┃\n" + "┃ │ y 6 │ │ ┃\n" +
"┗━━━━━━━━━━━━━━━━━┷━━━━━━━━━━━━━┷━━━━━━━━━━━━━┷━━━━━━━━━━━━━━━┛\n";
const DIAGRAM_17_A =
'| df.apply(…) | x y | x y | x |';
const DIAGRAM_17_B =
"┗━━━━━━━━━━━━━━━━━┷━━━━━━━━━━━━━┷━━━━━━━━━━━━━┷━━━━━━━━━━━━━━━┛\n" +
"\n" +
"┏━━━━━━━━━━━━━━━━━┯━━━━━━━━━━━━━┯━━━━━━━━━━━━━┯━━━━━━━━━━━━━━━┓\n" + "┏━━━━━━━━━━━━━━━━━┯━━━━━━━━━━━━━┯━━━━━━━━━━━━━┯━━━━━━━━━━━━━━━┓\n" +
"┃ │ 'rank' │ ['rank'] │ {'x': 'rank'} ┃\n" + "┃ │ 'rank' │ ['rank'] │ {'x': 'rank'} ┃\n" +
"┠─────────────────┼─────────────┼─────────────┼───────────────┨\n" + "┠─────────────────┼─────────────┼─────────────┼───────────────┨\n" +
@ -524,10 +516,8 @@ function updateDiagrams() {
$(`code:contains(${DIAGRAM_11_A})`).html(DIAGRAM_11_B); $(`code:contains(${DIAGRAM_11_A})`).html(DIAGRAM_11_B);
$(`code:contains(${DIAGRAM_12_A})`).html(DIAGRAM_12_B).removeClass("text").removeClass("language-text").addClass("python"); $(`code:contains(${DIAGRAM_12_A})`).html(DIAGRAM_12_B).removeClass("text").removeClass("language-text").addClass("python");
$(`code:contains(${DIAGRAM_13_A})`).html(DIAGRAM_13_B).removeClass("text").removeClass("language-text").addClass("python"); $(`code:contains(${DIAGRAM_13_A})`).html(DIAGRAM_13_B).removeClass("text").removeClass("language-text").addClass("python");
$(`code:contains(${DIAGRAM_14_A})`).html(DIAGRAM_14_B).removeClass("text").removeClass("language-text").addClass("python");
$(`code:contains(${DIAGRAM_15_A})`).html(DIAGRAM_15_B).removeClass("text").removeClass("language-text").addClass("python"); $(`code:contains(${DIAGRAM_15_A})`).html(DIAGRAM_15_B).removeClass("text").removeClass("language-text").addClass("python");
$(`code:contains(${DIAGRAM_16_A})`).html(DIAGRAM_16_B).removeClass("text").removeClass("language-text").addClass("python"); $(`code:contains(${DIAGRAM_16_A})`).html(DIAGRAM_16_B).removeClass("text").removeClass("language-text").addClass("python");
$(`code:contains(${DIAGRAM_17_A})`).html(DIAGRAM_17_B).removeClass("text").removeClass("language-text").addClass("python");
$(`code:contains(${DIAGRAM_18_A})`).html(DIAGRAM_18_B).removeClass("text").removeClass("language-text").addClass("python"); $(`code:contains(${DIAGRAM_18_A})`).html(DIAGRAM_18_B).removeClass("text").removeClass("language-text").addClass("python");
} }

14
pdf/index_for_pdf.html

@ -32,7 +32,7 @@
<strong>copy function, <a href="#copy">15</a></strong><br> <strong>copy function, <a href="#copy">15</a></strong><br>
<strong>coroutine, <a href="#coroutines">33</a></strong><br> <strong>coroutine, <a href="#coroutines">33</a></strong><br>
<strong>counter, <a href="#counter">2</a>, <a href="#generator">4</a>, <a href="#nonlocal">12</a>, <a href="#iterator-1">17</a></strong><br> <strong>counter, <a href="#counter">2</a>, <a href="#generator">4</a>, <a href="#nonlocal">12</a>, <a href="#iterator-1">17</a></strong><br>
<strong>csv, <a href="#csv">26</a>, <a href="#printsacsvfileasanasciitable">34</a>, <a href="#encodedecode">46</a>, <a href="#coviddeathsbycontinent">47</a></strong><br>
<strong>csv, <a href="#csv">26</a>, <a href="#printsacsvfileasanasciitable">34</a>, <a href="#dataframeencodedecodeplot">46</a>, <a href="#coviddeathsbycontinent">47</a></strong><br>
<strong>curses module, <a href="#runsaterminalgamewhereyoucontrolanasteriskthatmustavoidnumbers">33</a>, <a href="#curses">34</a></strong><br> <strong>curses module, <a href="#runsaterminalgamewhereyoucontrolanasteriskthatmustavoidnumbers">33</a>, <a href="#curses">34</a></strong><br>
<strong>cython, <a href="#cython">49</a></strong> </p> <strong>cython, <a href="#cython">49</a></strong> </p>
<h3 id="d">D</h3> <h3 id="d">D</h3>
@ -48,7 +48,7 @@
<strong>eval function, <a href="#eval">33</a></strong><br> <strong>eval function, <a href="#eval">33</a></strong><br>
<strong>exceptions, <a href="#exceptions">20</a>-<a href="#exceptionobject">21</a>, <a href="#exceptions-1">23</a>, <a href="#exceptions-2">35</a></strong> </p> <strong>exceptions, <a href="#exceptions">20</a>-<a href="#exceptionobject">21</a>, <a href="#exceptions-1">23</a>, <a href="#exceptions-2">35</a></strong> </p>
<h3 id="f">F</h3> <h3 id="f">F</h3>
<p><strong>files, <a href="#print">22</a>-<a href="#memoryview">29</a>, <a href="#runsabasicfileexplorerintheterminal">34</a>, <a href="#encodedecode">46</a></strong><br>
<p><strong>files, <a href="#print">22</a>-<a href="#memoryview">29</a>, <a href="#runsabasicfileexplorerintheterminal">34</a>, <a href="#dataframeencodedecodeplot">46</a></strong><br>
<strong>filter function, <a href="#mapfilterreduce">11</a></strong><br> <strong>filter function, <a href="#mapfilterreduce">11</a></strong><br>
<strong>floats, <a href="#abstractbaseclasses">4</a>, <a href="#floats">6</a>, <a href="#types">7</a></strong><br> <strong>floats, <a href="#abstractbaseclasses">4</a>, <a href="#floats">6</a>, <a href="#types">7</a></strong><br>
<strong>format, <a href="#format">6</a>-<a href="#comparisonofpresentationtypes">7</a>, <a href="#callgraph">37</a></strong><br> <strong>format, <a href="#format">6</a>-<a href="#comparisonofpresentationtypes">7</a>, <a href="#callgraph">37</a></strong><br>
@ -73,7 +73,7 @@
<strong>iterator, <a href="#enumerate">3</a>-<a href="#generator">4</a>, <a href="#comprehensions">11</a>, <a href="#iterator-1">17</a></strong><br> <strong>iterator, <a href="#enumerate">3</a>-<a href="#generator">4</a>, <a href="#comprehensions">11</a>, <a href="#iterator-1">17</a></strong><br>
<strong>itertools module, <a href="#itertools">3</a>, <a href="#combinatorics">8</a></strong> </p> <strong>itertools module, <a href="#itertools">3</a>, <a href="#combinatorics">8</a></strong> </p>
<h3 id="j">J</h3> <h3 id="j">J</h3>
<p><strong>json, <a href="#json">25</a>, <a href="#restrequest">36</a>, <a href="#encodedecode">46</a></strong> </p>
<p><strong>json, <a href="#json">25</a>, <a href="#restrequest">36</a>, <a href="#dataframeencodedecodeplot">46</a></strong> </p>
<h3 id="l">L</h3> <h3 id="l">L</h3>
<p><strong>lambda, <a href="#lambda">11</a></strong><br> <p><strong>lambda, <a href="#lambda">11</a></strong><br>
<strong>list comprehension, <a href="#comprehensions">11</a></strong><br> <strong>list comprehension, <a href="#comprehensions">11</a></strong><br>
@ -102,7 +102,7 @@
<strong>paths, <a href="#paths">23</a>-<a href="#direntry">24</a>, <a href="#runsabasicfileexplorerintheterminal">34</a></strong><br> <strong>paths, <a href="#paths">23</a>-<a href="#direntry">24</a>, <a href="#runsabasicfileexplorerintheterminal">34</a></strong><br>
<strong>pickle module, <a href="#pickle">25</a></strong><br> <strong>pickle module, <a href="#pickle">25</a></strong><br>
<strong>pillow library, <a href="#image">39</a>-<a href="#animation">40</a></strong><br> <strong>pillow library, <a href="#image">39</a>-<a href="#animation">40</a></strong><br>
<strong>plotting, <a href="#plot">34</a>, <a href="#plotly">47</a>-<a href="#confirmedcovidcasesdowjonesgoldandbitcoinprice">48</a></strong><br>
<strong>plotting, <a href="#plot">34</a>, <a href="#dataframeencodedecodeplot">46</a>, <a href="#plotly">47</a>-<a href="#confirmedcovidcasesdowjonesgoldandbitcoinprice">48</a></strong><br>
<strong>print function, <a href="#print">22</a></strong><br> <strong>print function, <a href="#print">22</a></strong><br>
<strong>profiling, <a href="#profiling">36</a>-<a href="#timingasnippet">37</a></strong><br> <strong>profiling, <a href="#profiling">36</a>-<a href="#timingasnippet">37</a></strong><br>
<strong>progress bar, <a href="#progressbar">34</a></strong><br> <strong>progress bar, <a href="#progressbar">34</a></strong><br>
@ -118,7 +118,7 @@
<strong>regular expressions, <a href="#regex">5</a>-<a href="#specialsequences">6</a></strong><br> <strong>regular expressions, <a href="#regex">5</a>-<a href="#specialsequences">6</a></strong><br>
<strong>requests library, <a href="#scrapespythonsurlversionnumberandlogofromitswikipediapage">35</a>, <a href="#test">36</a></strong> </p> <strong>requests library, <a href="#scrapespythonsurlversionnumberandlogofromitswikipediapage">35</a>, <a href="#test">36</a></strong> </p>
<h3 id="s">S</h3> <h3 id="s">S</h3>
<p><strong>scraping, <a href="#scraping">35</a>, <a href="#basicmariobrothersexample">43</a>, <a href="#encodedecode">46</a>, <a href="#coviddeathsbycontinent">47</a>-<a href="#confirmedcovidcasesdowjonesgoldandbitcoinprice">48</a></strong><br>
<p><strong>scraping, <a href="#scraping">35</a>, <a href="#basicmariobrothersexample">43</a>, <a href="#dataframeencodedecodeplot">46</a>, <a href="#coviddeathsbycontinent">47</a>-<a href="#confirmedcovidcasesdowjonesgoldandbitcoinprice">48</a></strong><br>
<strong>sequence, <a href="#abstractbaseclasses">4</a>, <a href="#sequence">18</a>-<a href="#abcsequence">19</a></strong><br> <strong>sequence, <a href="#abstractbaseclasses">4</a>, <a href="#sequence">18</a>-<a href="#abcsequence">19</a></strong><br>
<strong>sets, <a href="#set">2</a>, <a href="#abstractbaseclasses">4</a>, <a href="#otheruses">11</a>, <a href="#tableofrequiredandautomaticallyavailablespecialmethods">19</a>, <a href="#collectionsandtheirexceptions">21</a>, <a href="#operator">31</a></strong><br> <strong>sets, <a href="#set">2</a>, <a href="#abstractbaseclasses">4</a>, <a href="#otheruses">11</a>, <a href="#tableofrequiredandautomaticallyavailablespecialmethods">19</a>, <a href="#collectionsandtheirexceptions">21</a>, <a href="#operator">31</a></strong><br>
<strong>shell commands, <a href="#shellcommands">25</a></strong><br> <strong>shell commands, <a href="#shellcommands">25</a></strong><br>
@ -126,7 +126,7 @@
<strong>slots attribute, <a href="#slots">15</a></strong><br> <strong>slots attribute, <a href="#slots">15</a></strong><br>
<strong>sortable, <a href="#list">1</a>, <a href="#sortable">16</a></strong><br> <strong>sortable, <a href="#list">1</a>, <a href="#sortable">16</a></strong><br>
<strong>splat operator, <a href="#splatoperator">10</a>-<a href="#otheruses">11</a></strong><br> <strong>splat operator, <a href="#splatoperator">10</a>-<a href="#otheruses">11</a></strong><br>
<strong>sql, <a href="#sqlite">27</a>, <a href="#encodedecode">46</a></strong><br>
<strong>sql, <a href="#sqlite">27</a>, <a href="#dataframeencodedecodeplot">46</a></strong><br>
<strong>statistics, <a href="#statistics">7</a>, <a href="#numpy">37</a>-<a href="#indexing">38</a>, <a href="#pandas">44</a>-<a href="#confirmedcovidcasesdowjonesgoldandbitcoinprice">48</a></strong><br> <strong>statistics, <a href="#statistics">7</a>, <a href="#numpy">37</a>-<a href="#indexing">38</a>, <a href="#pandas">44</a>-<a href="#confirmedcovidcasesdowjonesgoldandbitcoinprice">48</a></strong><br>
<strong>strings, <a href="#abstractbaseclasses">4</a>-<a href="#comparisonofpresentationtypes">7</a>, <a href="#class">14</a></strong><br> <strong>strings, <a href="#abstractbaseclasses">4</a>-<a href="#comparisonofpresentationtypes">7</a>, <a href="#class">14</a></strong><br>
<strong>struct module, <a href="#struct">28</a>-<a href="#integertypesuseacapitalletterforunsignedtypeminimumandstandardsizesareinbrackets">29</a></strong><br> <strong>struct module, <a href="#struct">28</a>-<a href="#integertypesuseacapitalletterforunsignedtypeminimumandstandardsizesareinbrackets">29</a></strong><br>
@ -134,7 +134,7 @@
<strong>super function, <a href="#inheritance">14</a></strong><br> <strong>super function, <a href="#inheritance">14</a></strong><br>
<strong>sys module, <a href="#lrucache">13</a>, <a href="#exit">21</a>-<a href="#commandlinearguments">22</a></strong> </p> <strong>sys module, <a href="#lrucache">13</a>, <a href="#exit">21</a>-<a href="#commandlinearguments">22</a></strong> </p>
<h3 id="t">T</h3> <h3 id="t">T</h3>
<p><strong>table, <a href="#csv">26</a>, <a href="#example">27</a>, <a href="#table">34</a>, <a href="#numpy">37</a>-<a href="#indexing">38</a>, <a href="#dataframe">45</a>-<a href="#aggregatetransformmap-1">46</a></strong><br>
<p><strong>table, <a href="#csv">26</a>, <a href="#example">27</a>, <a href="#table">34</a>, <a href="#numpy">37</a>-<a href="#indexing">38</a>, <a href="#dataframe">45</a>-<a href="#dataframeaggregatetransformmap">46</a></strong><br>
<strong>template, <a href="#format">6</a>, <a href="#dynamicrequest">36</a></strong><br> <strong>template, <a href="#format">6</a>, <a href="#dynamicrequest">36</a></strong><br>
<strong>threading module, <a href="#threading">30</a></strong><br> <strong>threading module, <a href="#threading">30</a></strong><br>
<strong>time module, <a href="#progressbar">34</a>, <a href="#stopwatch">36</a></strong><br> <strong>time module, <a href="#progressbar">34</a>, <a href="#stopwatch">36</a></strong><br>

2
pdf/index_for_pdf_print.html

@ -102,7 +102,7 @@
<strong>paths, 23-24, 34</strong><br> <strong>paths, 23-24, 34</strong><br>
<strong>pickle module, 25</strong><br> <strong>pickle module, 25</strong><br>
<strong>pillow library, 39-40</strong><br> <strong>pillow library, 39-40</strong><br>
<strong>plotting, 34, 47-48</strong><br>
<strong>plotting, 34, 46, 47-48</strong><br>
<strong>print function, 22</strong><br> <strong>print function, 22</strong><br>
<strong>profiling, 36-37</strong><br> <strong>profiling, 36-37</strong><br>
<strong>progress bar, 34</strong><br> <strong>progress bar, 34</strong><br>

Loading…
Cancel
Save