Skip to content

Commit a3278d2

Browse files
committed
Pandas
1 parent 5f23075 commit a3278d2

File tree

5 files changed

+38
-46
lines changed

5 files changed

+38
-46
lines changed

README.md

Lines changed: 11 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -3140,7 +3140,7 @@ Name: a, dtype: int64
31403140
<Sr>.update(<Sr>) # Updates items that are already present.
31413141
```
31423142

3143-
#### Aggregate, Transform, Map:
3143+
#### Series — Aggregate, Transform, Map:
31443144
```python
31453145
<el> = <Sr>.sum/max/mean/idxmax/all() # Or: <Sr>.agg(lambda <Sr>: <el>)
31463146
<Sr> = <Sr>.rank/diff/cumsum/ffill/interpl() # Or: <Sr>.agg/transform(lambda <Sr>: <Sr>)
@@ -3161,9 +3161,7 @@ y 2
31613161
| sr.apply(…) | 3 | sum 3 | s 3 |
31623162
| sr.agg(…) | | | |
31633163
+-----------------+-------------+-------------+---------------+
3164-
```
31653164
3166-
```text
31673165
+-----------------+-------------+-------------+---------------+
31683166
| | 'rank' | ['rank'] | {'r': 'rank'} |
31693167
+-----------------+-------------+-------------+---------------+
@@ -3214,7 +3212,7 @@ b 3 4
32143212
<DF> = <DF>.sort_values(column_key/s) # Sorts rows by the passed column/s.
32153213
```
32163214

3217-
#### Merge, Join, Concat:
3215+
#### DataFrame — Merge, Join, Concat:
32183216
```python
32193217
>>> l = DataFrame([[1, 2], [3, 4]], index=['a', 'b'], columns=['x', 'y'])
32203218
x y
@@ -3258,13 +3256,13 @@ c 6 7
32583256
+------------------------+---------------+------------+------------+--------------------------+
32593257
```
32603258

3261-
#### Aggregate, Transform, Map:
3259+
#### DataFrame — Aggregate, Transform, Map:
32623260
```python
32633261
<Sr> = <DF>.sum/max/mean/idxmax/all() # Or: <DF>.apply/agg(lambda <Sr>: <el>)
32643262
<DF> = <DF>.rank/diff/cumsum/ffill/interpl() # Or: <DF>.apply/agg/transform(lambda <Sr>: <Sr>)
32653263
<DF> = <DF>.fillna(<el>) # Or: <DF>.applymap(lambda <el>: <el>)
32663264
```
3267-
* **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.**
3265+
* **All operations operate on columns by default. Pass `'axis=1'` to process the rows instead.**
32683266

32693267
```python
32703268
>>> df = DataFrame([[1, 2], [3, 4]], index=['a', 'b'], columns=['x', 'y'])
@@ -3281,9 +3279,7 @@ b 3 4
32813279
| df.agg(…) | x 4 | sum 4 6 | x 4 |
32823280
| | y 6 | | |
32833281
+-----------------+-------------+-------------+---------------+
3284-
```
32853282
3286-
```text
32873283
+-----------------+-------------+-------------+---------------+
32883284
| | 'rank' | ['rank'] | {'x': 'rank'} |
32893285
+-----------------+-------------+-------------+---------------+
@@ -3295,7 +3291,7 @@ b 3 4
32953291
```
32963292
* **Use `'<DF>[col_key_1, col_key_2][row_key]'` to get the fifth result's values.**
32973293

3298-
#### Encode, Decode:
3294+
#### DataFrame — Encode, Decode, Plot:
32993295
```python
33003296
<DF> = pd.read_json/html('<str/path/url>')
33013297
<DF> = pd.read_csv/pickle/excel('<path/url>')
@@ -3310,6 +3306,11 @@ b 3 4
33103306
<DF>.to_sql('<table_name>', <connection>)
33113307
```
33123308

3309+
```python
3310+
import matplotlib.pyplot as plt
3311+
<DF>.plot.line/bar/hist/scatter([x=column_key, y=column_key/s]); plt.show()
3312+
```
3313+
33133314
### GroupBy
33143315
**Object that groups together rows of a dataframe based on the value of the passed column.**
33153316

@@ -3323,12 +3324,11 @@ c 7 8
33233324

33243325
```python
33253326
<GB> = <DF>.groupby(column_key/s) # DF is split into groups based on passed column.
3326-
<DF> = <GB>.get_group(group_key/s) # Selects a group by value of grouping column.
33273327
<DF> = <GB>.apply(<func>) # Maps each group. Func can return DF, Sr or el.
33283328
<GB> = <GB>[column_key] # A single column GB. All operations return a Sr.
33293329
```
33303330

3331-
#### Aggregate, Transform, Map:
3331+
#### GroupBy — Aggregate, Transform, Map:
33323332
```python
33333333
<DF> = <GB>.sum/max/mean/idxmax/all() # Or: <GB>.agg(lambda <Sr>: <el>)
33343334
<DF> = <GB>.rank/diff/cumsum/ffill() # Or: <GB>.transform(lambda <Sr>: <Sr>)

index.html

Lines changed: 15 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -54,7 +54,7 @@
5454

5555
<body>
5656
<header>
57-
<aside>February 4, 2022</aside>
57+
<aside>February 5, 2022</aside>
5858
<a href="https://gto76.github.io" rel="author">Jure Šorn</a>
5959
</header>
6060

@@ -2549,7 +2549,7 @@
25492549
&lt;Sr&gt; = &lt;Sr&gt;.combine_first(&lt;Sr&gt;) <span class="hljs-comment"># Adds items that are not yet present.</span>
25502550
&lt;Sr&gt;.update(&lt;Sr&gt;) <span class="hljs-comment"># Updates items that are already present.</span>
25512551
</code></pre>
2552-
<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>
2552+
<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>
25532553
&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>
25542554
&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>
25552555
</code></pre></div>
@@ -2567,8 +2567,8 @@
25672567
┃ sr.apply(…) │ <span class="hljs-number">3</span> │ sum <span class="hljs-number">3</span> │ s <span class="hljs-number">3</span>
25682568
┃ sr.agg(…) │ │ │ ┃
25692569
┗━━━━━━━━━━━━━━━━━┷━━━━━━━━━━━━━┷━━━━━━━━━━━━━┷━━━━━━━━━━━━━━━┛
2570-
</code></pre>
2571-
<pre><code class="python hljs">┏━━━━━━━━━━━━━━━━━┯━━━━━━━━━━━━━┯━━━━━━━━━━━━━┯━━━━━━━━━━━━━━━┓
2570+
2571+
┏━━━━━━━━━━━━━━━━━┯━━━━━━━━━━━━━┯━━━━━━━━━━━━━┯━━━━━━━━━━━━━━━┓
25722572
┃ │ <span class="hljs-string">'rank'</span> │ [<span class="hljs-string">'rank'</span>] │ {<span class="hljs-string">'r'</span>: <span class="hljs-string">'rank'</span>} ┃
25732573
┠─────────────────┼─────────────┼─────────────┼───────────────┨
25742574
┃ sr.apply(…) │ │ rank │ ┃
@@ -2606,7 +2606,7 @@
26062606
&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>
26072607
&lt;DF&gt; = &lt;DF&gt;.sort_values(column_key/s) <span class="hljs-comment"># Sorts rows by the passed column/s.</span>
26082608
</code></pre>
2609-
<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>])
2609+
<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>])
26102610
x y
26112611
a <span class="hljs-number">1</span> <span class="hljs-number">2</span>
26122612
b <span class="hljs-number">3</span> <span class="hljs-number">4</span>
@@ -2646,13 +2646,13 @@
26462646
┃ │ c . <span class="hljs-number">6</span> <span class="hljs-number">7</span> │ │ │ R must be a DataFrame. ┃
26472647
┗━━━━━━━━━━━━━━━━━━━━━━━━┷━━━━━━━━━━━━━━━┷━━━━━━━━━━━━┷━━━━━━━━━━━━┷━━━━━━━━━━━━━━━━━━━━━━━━━━┛
26482648
</code></pre>
2649-
<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>
2649+
<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>
26502650
&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>
26512651
&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>
26522652
</code></pre></div>
26532653

26542654
<ul>
2655-
<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>
2655+
<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>
26562656
</ul>
26572657
<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>])
26582658
x y
@@ -2666,8 +2666,8 @@
26662666
┃ 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>
26672667
┃ │ y <span class="hljs-number">6</span> │ │ ┃
26682668
┗━━━━━━━━━━━━━━━━━┷━━━━━━━━━━━━━┷━━━━━━━━━━━━━┷━━━━━━━━━━━━━━━┛
2669-
</code></pre>
2670-
<pre><code class="python hljs">┏━━━━━━━━━━━━━━━━━┯━━━━━━━━━━━━━┯━━━━━━━━━━━━━┯━━━━━━━━━━━━━━━┓
2669+
2670+
┏━━━━━━━━━━━━━━━━━┯━━━━━━━━━━━━━┯━━━━━━━━━━━━━┯━━━━━━━━━━━━━━━┓
26712671
┃ │ <span class="hljs-string">'rank'</span> │ [<span class="hljs-string">'rank'</span>] │ {<span class="hljs-string">'x'</span>: <span class="hljs-string">'rank'</span>} ┃
26722672
┠─────────────────┼─────────────┼─────────────┼───────────────┨
26732673
┃ df.apply(…) │ x y │ x y │ x ┃
@@ -2679,7 +2679,7 @@
26792679
<ul>
26802680
<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>
26812681
</ul>
2682-
<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>)
2682+
<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>)
26832683
&lt;DF&gt; = pd.read_csv/pickle/excel(<span class="hljs-string">'&lt;path/url&gt;'</span>)
26842684
&lt;DF&gt; = pd.read_sql(<span class="hljs-string">'&lt;table_name/query&gt;'</span>, &lt;connection&gt;)
26852685
&lt;DF&gt; = pd.read_clipboard()
@@ -2690,6 +2690,9 @@
26902690
&lt;DF&gt;.to_pickle/excel(&lt;path&gt;)
26912691
&lt;DF&gt;.to_sql(<span class="hljs-string">'&lt;table_name&gt;'</span>, &lt;connection&gt;)
26922692
</code></pre>
2693+
<pre><code class="python language-python hljs"><span class="hljs-keyword">import</span> matplotlib.pyplot <span class="hljs-keyword">as</span> plt
2694+
&lt;DF&gt;.plot.line/bar/hist/scatter([x=column_key, y=column_key/s]); plt.show()
2695+
</code></pre>
26932696
<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>))
26942697
<span class="hljs-meta">&gt;&gt;&gt; </span>df.groupby(<span class="hljs-string">'z'</span>).get_group(<span class="hljs-number">6</span>)
26952698
x y
@@ -2699,11 +2702,10 @@
26992702

27002703

27012704
<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>
2702-
&lt;DF&gt; = &lt;GB&gt;.get_group(group_key/s) <span class="hljs-comment"># Selects a group by value of grouping column.</span>
27032705
&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>
27042706
&lt;GB&gt; = &lt;GB&gt;[column_key] <span class="hljs-comment"># A single column GB. All operations return a Sr.</span>
27052707
</code></pre>
2706-
<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>
2708+
<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>
27072709
&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>
27082710
&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>
27092711
</code></pre></div>
@@ -2881,7 +2883,7 @@
28812883

28822884

28832885
<footer>
2884-
<aside>February 4, 2022</aside>
2886+
<aside>February 5, 2022</aside>
28852887
<a href="https://gto76.github.io" rel="author">Jure Šorn</a>
28862888
</footer>
28872889

parse.js

Lines changed: 4 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -316,12 +316,8 @@ const DIAGRAM_13_B =
316316
"┠─────────────────┼─────────────┼─────────────┼───────────────┨\n" +
317317
"┃ sr.apply(…) │ 3 │ sum 3 │ s 3 ┃\n" +
318318
"┃ sr.agg(…) │ │ │ ┃\n" +
319-
"┗━━━━━━━━━━━━━━━━━┷━━━━━━━━━━━━━┷━━━━━━━━━━━━━┷━━━━━━━━━━━━━━━┛\n";
320-
321-
const DIAGRAM_14_A =
322-
'| sr.apply(…) | | rank | |';
323-
324-
const DIAGRAM_14_B =
319+
"┗━━━━━━━━━━━━━━━━━┷━━━━━━━━━━━━━┷━━━━━━━━━━━━━┷━━━━━━━━━━━━━━━┛\n" +
320+
"\n" +
325321
"┏━━━━━━━━━━━━━━━━━┯━━━━━━━━━━━━━┯━━━━━━━━━━━━━┯━━━━━━━━━━━━━━━┓\n" +
326322
"┃ │ 'rank' │ ['rank'] │ {'r': 'rank'} ┃\n" +
327323
"┠─────────────────┼─────────────┼─────────────┼───────────────┨\n" +
@@ -374,12 +370,8 @@ const DIAGRAM_16_B =
374370
"┃ df.apply(…) │ │ x y │ ┃\n" +
375371
"┃ df.agg(…) │ x 4 │ sum 4 6 │ x 4 ┃\n" +
376372
"┃ │ y 6 │ │ ┃\n" +
377-
"┗━━━━━━━━━━━━━━━━━┷━━━━━━━━━━━━━┷━━━━━━━━━━━━━┷━━━━━━━━━━━━━━━┛\n";
378-
379-
const DIAGRAM_17_A =
380-
'| df.apply(…) | x y | x y | x |';
381-
382-
const DIAGRAM_17_B =
373+
"┗━━━━━━━━━━━━━━━━━┷━━━━━━━━━━━━━┷━━━━━━━━━━━━━┷━━━━━━━━━━━━━━━┛\n" +
374+
"\n" +
383375
"┏━━━━━━━━━━━━━━━━━┯━━━━━━━━━━━━━┯━━━━━━━━━━━━━┯━━━━━━━━━━━━━━━┓\n" +
384376
"┃ │ 'rank' │ ['rank'] │ {'x': 'rank'} ┃\n" +
385377
"┠─────────────────┼─────────────┼─────────────┼───────────────┨\n" +
@@ -524,10 +516,8 @@ function updateDiagrams() {
524516
$(`code:contains(${DIAGRAM_11_A})`).html(DIAGRAM_11_B);
525517
$(`code:contains(${DIAGRAM_12_A})`).html(DIAGRAM_12_B).removeClass("text").removeClass("language-text").addClass("python");
526518
$(`code:contains(${DIAGRAM_13_A})`).html(DIAGRAM_13_B).removeClass("text").removeClass("language-text").addClass("python");
527-
$(`code:contains(${DIAGRAM_14_A})`).html(DIAGRAM_14_B).removeClass("text").removeClass("language-text").addClass("python");
528519
$(`code:contains(${DIAGRAM_15_A})`).html(DIAGRAM_15_B).removeClass("text").removeClass("language-text").addClass("python");
529520
$(`code:contains(${DIAGRAM_16_A})`).html(DIAGRAM_16_B).removeClass("text").removeClass("language-text").addClass("python");
530-
$(`code:contains(${DIAGRAM_17_A})`).html(DIAGRAM_17_B).removeClass("text").removeClass("language-text").addClass("python");
531521
$(`code:contains(${DIAGRAM_18_A})`).html(DIAGRAM_18_B).removeClass("text").removeClass("language-text").addClass("python");
532522
}
533523

0 commit comments

Comments
 (0)