Browse Source

Added Plotly plots

pull/57/head
Jure Šorn 4 years ago
parent
commit
05fcd2d5d0
7 changed files with 353 additions and 245 deletions
  1. 199
      README.md
  2. 212
      index.html
  3. 11
      web/covid_cases.js
  4. 11
      web/covid_deaths.js
  5. 61
      web/plotly.min.js
  6. 101
      web/script_2.js
  7. 3
      web/template.html

199
README.md

@ -3127,22 +3127,22 @@ dtype: int64
```
```python
┏━━━━━━━━━━━━━┯━━━━━━━━━━━━━┯━━━━━━━━━━━━━┯━━━━━━━━━━━━━━━┓
┃ │ 'sum' │ ['sum'] │ {'s': 'sum'} ┃
┠─────────────┼─────────────┼─────────────┼───────────────┨
┃ sr.apply(…) │ 3 │ sum 3 │ s 3 ┃
┃ sr.agg(…) │ │ │ ┃
┗━━━━━━━━━━━━━┷━━━━━━━━━━━━━┷━━━━━━━━━━━━━┷━━━━━━━━━━━━━━━┛
+-------------+-------------+-------------+---------------+
| | 'sum' | ['sum'] | {'s': 'sum'} |
+-------------+-------------+-------------+---------------+
| sr.apply(…) | 3 | sum 3 | s 3 |
| sr.agg(…) | | | |
+-------------+-------------+-------------+---------------+
```
```python
┏━━━━━━━━━━━━━┯━━━━━━━━━━━━━┯━━━━━━━━━━━━━┯━━━━━━━━━━━━━━━┓
┃ │ 'rank' │ ['rank'] │ {'r': 'rank'} ┃
┠─────────────┼─────────────┼─────────────┼───────────────┨
┃ sr.apply(…) │ │ rank │ ┃
┃ sr.agg(…) │ x 1 │ x 1 │ r x 1 ┃
┃ sr.trans(…) │ y 2 │ y 2 │ y 2 ┃
┗━━━━━━━━━━━━━┷━━━━━━━━━━━━━┷━━━━━━━━━━━━━┷━━━━━━━━━━━━━━━┛
+-------------+-------------+-------------+---------------+
| | 'rank' | ['rank'] | {'r': 'rank'} |
+-------------+-------------+-------------+---------------+
| sr.apply(…) | | rank | |
| sr.agg(…) | x 1 | x 1 | r x 1 |
| sr.trans(…) | y 2 | y 2 | y 2 |
+-------------+-------------+-------------+---------------+
```
### DataFrame
@ -3198,35 +3198,35 @@ c 6 7
```
```python
┏━━━━━━━━━━━━━━━━━━━━━━━━┯━━━━━━━━━━━━━━━┯━━━━━━━━━━━━┯━━━━━━━━━━━━┯━━━━━━━━━━━━━━━━━━━━━━━━━━┓
┃ how/join │ 'outer' │ 'inner' │ 'left' │ description ┃
┠────────────────────────┼───────────────┼────────────┼────────────┼──────────────────────────┨
┃ l.merge(r, on='y', │ x y z │ x y z │ x y z │ Joins/merges on column. ┃
┃ how=…) │ 0 1 2 . │ 3 4 5 │ 1 2 . │ Also accepts left_on and ┃
┃ │ 1 3 4 5 │ │ 3 4 5 │ right_on parameters. ┃
┃ │ 2 . 6 7 │ │ │ Uses 'inner' by default. ┃
┠────────────────────────┼───────────────┼────────────┼────────────┼──────────────────────────┨
┃ l.join(r, lsuffix='l', │ x yl yr z │ │ x yl yr z │ Joins/merges on row_keys.┃
┃ rsuffix='r', │ a 1 2 . . │ x yl yr z │ 1 2 . . │ Uses 'left' by default. ┃
┃ how=…) │ b 3 4 4 5 │ 3 4 4 5 │ 3 4 4 5 │ ┃
┃ │ c . . 6 7 │ │ │ ┃
┠────────────────────────┼───────────────┼────────────┼────────────┼──────────────────────────┨
┃ pd.concat([l, r], │ x y z │ y │ │ Adds rows at the bottom. ┃
┃ axis=0, │ a 1 2 . │ 2 │ │ Uses 'outer' by default. ┃
┃ join=…) │ b 3 4 . │ 4 │ │ By default works the ┃
┃ │ b . 4 5 │ 4 │ │ same as `l.append(r)`. ┃
┃ │ c . 6 7 │ 6 │ │ ┃
┠────────────────────────┼───────────────┼────────────┼────────────┼──────────────────────────┨
┃ pd.concat([l, r], │ x y y z │ │ │ Adds columns at the ┃
┃ axis=1, │ a 1 2 . . │ x y y z │ │ right end. ┃
┃ join=…) │ b 3 4 4 5 │ 3 4 4 5 │ │ Uses 'outer' by default. ┃
┃ │ c . . 6 7 │ │ │ ┃
┠────────────────────────┼───────────────┼────────────┼────────────┼──────────────────────────┨
┃ l.combine_first(r) │ x y z │ │ │ Adds missing rows and ┃
┃ │ a 1 2 . │ │ │ columns. ┃
┃ │ b 3 4 5 │ │ │ ┃
┃ │ c . 6 7 │ │ │ ┃
┗━━━━━━━━━━━━━━━━━━━━━━━━┷━━━━━━━━━━━━━━━┷━━━━━━━━━━━━┷━━━━━━━━━━━━┷━━━━━━━━━━━━━━━━━━━━━━━━━━┛
+------------------------+---------------+------------+------------+--------------------------+
| how/join | 'outer' | 'inner' | 'left' | description |
+------------------------+---------------+------------+------------+--------------------------+
| l.merge(r, on='y', | x y z | x y z | x y z | Joins/merges on column. |
| how=…) | 0 1 2 . | 3 4 5 | 1 2 . | Also accepts left_on and |
| | 1 3 4 5 | | 3 4 5 | right_on parameters. |
| | 2 . 6 7 | | | Uses 'inner' by default. |
+------------------------+---------------+------------+------------+--------------------------+
| l.join(r, lsuffix='l', | x yl yr z | | x yl yr z | Joins/merges on row_keys.|
| rsuffix='r', | a 1 2 . . | x yl yr z | 1 2 . . | Uses 'left' by default. |
| how=…) | b 3 4 4 5 | 3 4 4 5 | 3 4 4 5 | |
| | c . . 6 7 | | | |
+------------------------+---------------+------------+------------+--------------------------+
| pd.concat([l, r], | x y z | y | | Adds rows at the bottom. |
| axis=0, | a 1 2 . | 2 | | Uses 'outer' by default. |
| join=…) | b 3 4 . | 4 | | By default works the |
| | b . 4 5 | 4 | | same as `l.append(r)`. |
| | c . 6 7 | 6 | | |
+------------------------+---------------+------------+------------+--------------------------+
| pd.concat([l, r], | x y y z | | | Adds columns at the |
| axis=1, | a 1 2 . . | x y y z | | right end. |
| join=…) | b 3 4 4 5 | 3 4 4 5 | | Uses 'outer' by default. |
| | c . . 6 7 | | | |
+------------------------+---------------+------------+------------+--------------------------+
| l.combine_first(r) | x y z | | | Adds missing rows and |
| | a 1 2 . | | | columns. |
| | b 3 4 5 | | | |
| | c . 6 7 | | | |
+------------------------+---------------+------------+------------+--------------------------+
```
#### Aggregate, Transform, Map:
@ -3245,24 +3245,24 @@ b 3 4
```
```python
┏━━━━━━━━━━━━━┯━━━━━━━━━━━━━┯━━━━━━━━━━━━━┯━━━━━━━━━━━━━━━┓
┃ │ 'sum' │ ['sum'] │ {'x': 'sum'} ┃
┠─────────────┼─────────────┼─────────────┼───────────────┨
┃ df.apply(…) │ │ x y │ ┃
┃ df.agg(…) │ x 4 │ sum 4 6 │ x 4 ┃
┃ │ y 6 │ │ ┃
┗━━━━━━━━━━━━━┷━━━━━━━━━━━━━┷━━━━━━━━━━━━━┷━━━━━━━━━━━━━━━┛
+-------------+-------------+-------------+---------------+
| | 'sum' | ['sum'] | {'x': 'sum'} |
+-------------+-------------+-------------+---------------+
| df.apply(…) | | x y | |
| df.agg(…) | x 4 | sum 4 6 | x 4 |
| | y 6 | | |
+-------------+-------------+-------------+---------------+
```
```python
┏━━━━━━━━━━━━━┯━━━━━━━━━━━━━┯━━━━━━━━━━━━━┯━━━━━━━━━━━━━━━┓
┃ │ 'rank' │ ['rank'] │ {'x': 'rank'} ┃
┠─────────────┼─────────────┼─────────────┼───────────────┨
┃ df.apply(…) │ x y │ x y │ x ┃
┃ df.agg(…) │ a 1 1 │ rank rank │ a 1 ┃
┃ df.trans(…) │ b 2 2 │ a 1 1 │ b 2 ┃
┃ │ │ b 2 2 │ ┃
┗━━━━━━━━━━━━━┷━━━━━━━━━━━━━┷━━━━━━━━━━━━━┷━━━━━━━━━━━━━━━┛
+-------------+-------------+-------------+---------------+
| | 'rank' | ['rank'] | {'x': 'rank'} |
+-------------+-------------+-------------+---------------+
| df.apply(…) | x y | x y | x |
| df.agg(…) | a 1 1 | rank rank | a 1 |
| df.trans(…) | b 2 2 | a 1 1 | b 2 |
| | | b 2 2 | |
+-------------+-------------+-------------+---------------+
```
#### Encode, Decode:
@ -3315,20 +3315,20 @@ c 7 8
```
```python
┏━━━━━━━━━━━━━┯━━━━━━━━━━━━━┯━━━━━━━━━━━━━┯━━━━━━━━━━━━━┯━━━━━━━━━━━━━━━┓
┃ │ 'sum' │ 'rank' │ ['rank'] │ {'x': 'rank'} ┃
┠─────────────┼─────────────┼─────────────┼─────────────┼───────────────┨
┃ gb.agg(…) │ x y │ x y │ x y │ x ┃
┃ │ z │ a 1 1 │ rank rank │ a 1 ┃
┃ │ 3 1 2 │ b 1 1 │ a 1 1 │ b 1 ┃
┃ │ 6 11 13 │ c 2 2 │ b 1 1 │ c 2 ┃
┃ │ │ │ c 2 2 │ ┃
┠─────────────┼─────────────┼─────────────┼─────────────┼───────────────┨
┃ gb.trans(…) │ x y │ x y │ │ ┃
┃ │ a 1 2 │ a 1 1 │ │ ┃
┃ │ b 11 13 │ b 1 1 │ │ ┃
┃ │ c 11 13 │ c 1 1 │ │ ┃
┗━━━━━━━━━━━━━┷━━━━━━━━━━━━━┷━━━━━━━━━━━━━┷━━━━━━━━━━━━━┷━━━━━━━━━━━━━━━┛
+-------------+-------------+-------------+-------------+---------------+
| | 'sum' | 'rank' | ['rank'] | {'x': 'rank'} |
+-------------+-------------+-------------+-------------+---------------+
| gb.agg(…) | x y | x y | x y | x |
| | z | a 1 1 | rank rank | a 1 |
| | 3 1 2 | b 1 1 | a 1 1 | b 1 |
| | 6 11 13 | c 2 2 | b 1 1 | c 2 |
| | | | c 2 2 | |
+-------------+-------------+-------------+-------------+---------------+
| gb.trans(…) | x y | x y | | |
| | a 1 2 | a 1 1 | | |
| | b 11 13 | b 1 1 | | |
| | c 11 13 | c 1 1 | | |
+-------------+-------------+-------------+-------------+---------------+
```
### Rolling
@ -3344,30 +3344,10 @@ c 7 8
Plotly
------
### Top 10 Countries by Percentage of Population With Confirmed COVID-19 Infection
```text
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
+----------------------------------------------------------------------------------------------
```
### Covid Deaths by Continent
<div id="2a950764-39fc-416d-97fe-0a6226a3095f" class="plotly-graph-div" style="height:420px; width:100%;"></div>
</div>
```python
import pandas as pd
@ -3381,35 +3361,14 @@ continents = pd.read_csv('https://datahub.io/JohnSnowLabs/country-and-continent-
merged = pd.merge(covid, continents, left_on='iso_code', right_on='Three_Letter_Country_Code')
summed = merged.groupby(['Continent_Name', 'date']).sum().reset_index()
summed['Total Deaths per Million'] = summed.total_deaths * 1e6 / summed.population
summed = summed[('2020-03-14' < summed.date) & (summed.date < '2020-05-31')]
summed = summed[('2020-03-14' < summed.date) & (summed.date < '2020-06-25')]
summed = summed.rename({'date': 'Date', 'Continent_Name': 'Continent'}, axis='columns')
plotly.express.line(summed, x='Date', y='Total Deaths per Million', color='Continent').show()
```
### Confirmed Cases of COVID-19, Dow Jones Index, Gold, and Bitcoin Price
```text
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
+----------------------------------------------------------------------------------------------
```
### Confirmed Covid Cases, Dow Jones, Gold, and Bitcoin Price
<div id="e23ccacc-a456-478b-b467-7282a2165921" class="plotly-graph-div" style="height:400px; width:100%;"></div>
```python
import pandas, datetime

212
index.html

@ -2652,20 +2652,20 @@ x <span class="hljs-number">1</span>
y <span class="hljs-number">2</span>
dtype: int64
</code></pre>
<pre><code class="python language-python hljs">┏━━━━━━━━━━━━━┯━━━━━━━━━━━━━┯━━━━━━━━━━━━━┯━━━━━━━━━━━━━━━┓
┃ │ <span class="hljs-string">'sum'</span> [<span class="hljs-string">'sum'</span>] {<span class="hljs-string">'s'</span>: <span class="hljs-string">'sum'</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(…) │ │ │ ┃
┗━━━━━━━━━━━━━┷━━━━━━━━━━━━━┷━━━━━━━━━━━━━┷━━━━━━━━━━━━━━━┛
</code></pre>
<pre><code class="python language-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>}
┠─────────────┼─────────────┼─────────────┼───────────────┨
┃ sr.apply(…) │ │ rank │ ┃
┃ sr.agg(…) │ x <span class="hljs-number">1</span> x <span class="hljs-number">1</span> r x <span class="hljs-number">1</span>
┃ sr.trans(…) │ y <span class="hljs-number">2</span> y <span class="hljs-number">2</span> y <span class="hljs-number">2</span>
┗━━━━━━━━━━━━━┷━━━━━━━━━━━━━┷━━━━━━━━━━━━━┷━━━━━━━━━━━━━━━┛
<pre><code class="python language-python hljs">+-------------+-------------+-------------+---------------+
| | <span class="hljs-string">'sum'</span> | [<span class="hljs-string">'sum'</span>] | {<span class="hljs-string">'s'</span>: <span class="hljs-string">'sum'</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(…) | | | |
+-------------+-------------+-------------+---------------+
</code></pre>
<pre><code class="python language-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>} |
+-------------+-------------+-------------+---------------+
| sr.apply(…) | | rank | |
| sr.agg(…) | x <span class="hljs-number">1</span> | x <span class="hljs-number">1</span> | r x <span class="hljs-number">1</span> |
| sr.trans(…) | y <span class="hljs-number">2</span> | y <span class="hljs-number">2</span> | y <span class="hljs-number">2</span> |
+-------------+-------------+-------------+---------------+
</code></pre>
<div><h3 id="dataframe">DataFrame</h3><p><strong>Table with labeled rows and columns.</strong></p><pre><code class="python language-python hljs"><span class="hljs-meta">&gt;&gt;&gt; </span>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
@ -2704,35 +2704,35 @@ b <span class="hljs-number">4</span> <span class="hljs-number">5</span>
c <span class="hljs-number">6</span> <span class="hljs-number">7</span>
</code></pre></div>
<pre><code class="python language-python hljs">┏━━━━━━━━━━━━━━━━━━━━━━━━┯━━━━━━━━━━━━━━━┯━━━━━━━━━━━━┯━━━━━━━━━━━━┯━━━━━━━━━━━━━━━━━━━━━━━━━━┓
┃ how/join │ <span class="hljs-string">'outer'</span> <span class="hljs-string">'inner'</span> <span class="hljs-string">'left'</span> │ description ┃
┠────────────────────────┼───────────────┼────────────┼────────────┼──────────────────────────┨
l.merge(r, on=<span class="hljs-string">'y'</span>, │ x y z │ x y z │ x y z │ Joins/merges on column. ┃
┃ how=…) │ <span class="hljs-number">0</span> <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">1</span> <span class="hljs-number">2</span> . Also accepts left_on <span class="hljs-keyword">and</span>
┃ │ <span class="hljs-number">1</span> <span class="hljs-number">3</span> <span class="hljs-number">4</span> <span class="hljs-number">5</span> │ │ <span class="hljs-number">3</span> <span class="hljs-number">4</span> <span class="hljs-number">5</span> │ right_on parameters. ┃
┃ │ <span class="hljs-number">2</span> . <span class="hljs-number">6</span> <span class="hljs-number">7</span> │ │ │ Uses <span class="hljs-string">'inner'</span> by default.
┠────────────────────────┼───────────────┼────────────┼────────────┼──────────────────────────┨
l.join(r, lsuffix=<span class="hljs-string">'l'</span>, │ x yl yr z │ │ x yl yr z │ Joins/merges on row_keys.┃
rsuffix=<span class="hljs-string">'r'</span>, a <span class="hljs-number">1</span> <span class="hljs-number">2</span> . . │ x yl yr z │ <span class="hljs-number">1</span> <span class="hljs-number">2</span> . . Uses <span class="hljs-string">'left'</span> by default.
┃ how=…) │ b <span class="hljs-number">3</span> <span class="hljs-number">4</span> <span class="hljs-number">4</span> <span class="hljs-number">5</span> <span class="hljs-number">3</span> <span class="hljs-number">4</span> <span class="hljs-number">4</span> <span class="hljs-number">5</span> <span class="hljs-number">3</span> <span class="hljs-number">4</span> <span class="hljs-number">4</span> <span class="hljs-number">5</span> │ ┃
┃ │ c . . <span class="hljs-number">6</span> <span class="hljs-number">7</span> │ │ │ ┃
┠────────────────────────┼───────────────┼────────────┼────────────┼──────────────────────────┨
┃ pd.concat([l, r], │ x y z │ y │ │ Adds rows at the bottom. ┃
axis=<span class="hljs-number">0</span>, a <span class="hljs-number">1</span> <span class="hljs-number">2</span> . <span class="hljs-number">2</span> │ │ Uses <span class="hljs-string">'outer'</span> by default.
┃ join=…) │ b <span class="hljs-number">3</span> <span class="hljs-number">4</span> . <span class="hljs-number">4</span> │ │ By default works the ┃
┃ │ b . <span class="hljs-number">4</span> <span class="hljs-number">5</span> <span class="hljs-number">4</span> │ │ same <span class="hljs-keyword">as</span> `l.append(r)`.
┃ │ c . <span class="hljs-number">6</span> <span class="hljs-number">7</span> <span class="hljs-number">6</span> │ │ ┃
┠────────────────────────┼───────────────┼────────────┼────────────┼──────────────────────────┨
┃ pd.concat([l, r], │ x y y z │ │ │ Adds columns at the ┃
axis=<span class="hljs-number">1</span>, a <span class="hljs-number">1</span> <span class="hljs-number">2</span> . . │ x y y z │ │ right end. ┃
┃ join=…) │ b <span class="hljs-number">3</span> <span class="hljs-number">4</span> <span class="hljs-number">4</span> <span class="hljs-number">5</span> <span class="hljs-number">3</span> <span class="hljs-number">4</span> <span class="hljs-number">4</span> <span class="hljs-number">5</span> │ │ Uses <span class="hljs-string">'outer'</span> by default.
┃ │ c . . <span class="hljs-number">6</span> <span class="hljs-number">7</span> │ │ │ ┃
┠────────────────────────┼───────────────┼────────────┼────────────┼──────────────────────────┨
┃ l.combine_first(r) │ x y z │ │ │ Adds missing rows <span class="hljs-keyword">and</span>
┃ │ a <span class="hljs-number">1</span> <span class="hljs-number">2</span> . │ │ │ columns. ┃
┃ │ b <span class="hljs-number">3</span> <span class="hljs-number">4</span> <span class="hljs-number">5</span> │ │ │ ┃
┃ │ c . <span class="hljs-number">6</span> <span class="hljs-number">7</span> │ │ │ ┃
┗━━━━━━━━━━━━━━━━━━━━━━━━┷━━━━━━━━━━━━━━━┷━━━━━━━━━━━━┷━━━━━━━━━━━━┷━━━━━━━━━━━━━━━━━━━━━━━━━━┛
<pre><code class="python language-python hljs">+------------------------+---------------+------------+------------+--------------------------+
| how/join | <span class="hljs-string">'outer'</span> | <span class="hljs-string">'inner'</span> | <span class="hljs-string">'left'</span> | description |
+------------------------+---------------+------------+------------+--------------------------+
| l.merge(r, on=<span class="hljs-string">'y'</span>, | x y z | x y z | x y z | Joins/merges on column. |
| how=…) | <span class="hljs-number">0</span> <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">1</span> <span class="hljs-number">2</span> . | Also accepts left_on <span class="hljs-keyword">and</span> |
| | <span class="hljs-number">1</span> <span class="hljs-number">3</span> <span class="hljs-number">4</span> <span class="hljs-number">5</span> | | <span class="hljs-number">3</span> <span class="hljs-number">4</span> <span class="hljs-number">5</span> | right_on parameters. |
| | <span class="hljs-number">2</span> . <span class="hljs-number">6</span> <span class="hljs-number">7</span> | | | Uses <span class="hljs-string">'inner'</span> by default. |
+------------------------+---------------+------------+------------+--------------------------+
| l.join(r, lsuffix=<span class="hljs-string">'l'</span>, | x yl yr z | | x yl yr z | Joins/merges on row_keys.|
| rsuffix=<span class="hljs-string">'r'</span>, | a <span class="hljs-number">1</span> <span class="hljs-number">2</span> . . | x yl yr z | <span class="hljs-number">1</span> <span class="hljs-number">2</span> . . | Uses <span class="hljs-string">'left'</span> by default. |
| how=…) | b <span class="hljs-number">3</span> <span class="hljs-number">4</span> <span class="hljs-number">4</span> <span class="hljs-number">5</span> | <span class="hljs-number">3</span> <span class="hljs-number">4</span> <span class="hljs-number">4</span> <span class="hljs-number">5</span> | <span class="hljs-number">3</span> <span class="hljs-number">4</span> <span class="hljs-number">4</span> <span class="hljs-number">5</span> | |
| | c . . <span class="hljs-number">6</span> <span class="hljs-number">7</span> | | | |
+------------------------+---------------+------------+------------+--------------------------+
| pd.concat([l, r], | x y z | y | | Adds rows at the bottom. |
| axis=<span class="hljs-number">0</span>, | a <span class="hljs-number">1</span> <span class="hljs-number">2</span> . | <span class="hljs-number">2</span> | | Uses <span class="hljs-string">'outer'</span> by default. |
| join=…) | b <span class="hljs-number">3</span> <span class="hljs-number">4</span> . | <span class="hljs-number">4</span> | | By default works the |
| | b . <span class="hljs-number">4</span> <span class="hljs-number">5</span> | <span class="hljs-number">4</span> | | same <span class="hljs-keyword">as</span> `l.append(r)`. |
| | c . <span class="hljs-number">6</span> <span class="hljs-number">7</span> | <span class="hljs-number">6</span> | | |
+------------------------+---------------+------------+------------+--------------------------+
| pd.concat([l, r], | x y y z | | | Adds columns at the |
| axis=<span class="hljs-number">1</span>, | a <span class="hljs-number">1</span> <span class="hljs-number">2</span> . . | x y y z | | right end. |
| join=…) | b <span class="hljs-number">3</span> <span class="hljs-number">4</span> <span class="hljs-number">4</span> <span class="hljs-number">5</span> | <span class="hljs-number">3</span> <span class="hljs-number">4</span> <span class="hljs-number">4</span> <span class="hljs-number">5</span> | | Uses <span class="hljs-string">'outer'</span> by default. |
| | c . . <span class="hljs-number">6</span> <span class="hljs-number">7</span> | | | |
+------------------------+---------------+------------+------------+--------------------------+
| l.combine_first(r) | x y z | | | Adds missing rows <span class="hljs-keyword">and</span> |
| | a <span class="hljs-number">1</span> <span class="hljs-number">2</span> . | | | columns. |
| | b <span class="hljs-number">3</span> <span class="hljs-number">4</span> <span class="hljs-number">5</span> | | | |
| | c . <span class="hljs-number">6</span> <span class="hljs-number">7</span> | | | |
+------------------------+---------------+------------+------------+--------------------------+
</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/transform(&lt;agg_func&gt;)</span>
&lt;DF&gt; = &lt;DF&gt;.rank/diff/cumsum/ffill/interpl() <span class="hljs-comment"># Or: &lt;DF&gt;.apply/agg/transform(&lt;trans_func&gt;)</span>
@ -2747,22 +2747,22 @@ c <span class="hljs-number">6</span> <span class="hljs-number">7</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>
</code></pre>
<pre><code class="python language-python hljs">┏━━━━━━━━━━━━━┯━━━━━━━━━━━━━┯━━━━━━━━━━━━━┯━━━━━━━━━━━━━━━┓
┃ │ <span class="hljs-string">'sum'</span> [<span class="hljs-string">'sum'</span>] {<span class="hljs-string">'x'</span>: <span class="hljs-string">'sum'</span>}
┠─────────────┼─────────────┼─────────────┼───────────────┨
┃ df.apply(…) │ │ x y │ ┃
┃ 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> │ │ ┃
┗━━━━━━━━━━━━━┷━━━━━━━━━━━━━┷━━━━━━━━━━━━━┷━━━━━━━━━━━━━━━┛
</code></pre>
<pre><code class="python language-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>}
┠─────────────┼─────────────┼─────────────┼───────────────┨
┃ df.apply(…) │ x y │ x y │ x ┃
┃ df.agg(…) │ a <span class="hljs-number">1</span> <span class="hljs-number">1</span> │ rank rank │ a <span class="hljs-number">1</span>
┃ df.trans(…) │ b <span class="hljs-number">2</span> <span class="hljs-number">2</span> a <span class="hljs-number">1</span> <span class="hljs-number">1</span> b <span class="hljs-number">2</span>
┃ │ │ b <span class="hljs-number">2</span> <span class="hljs-number">2</span> │ ┃
┗━━━━━━━━━━━━━┷━━━━━━━━━━━━━┷━━━━━━━━━━━━━┷━━━━━━━━━━━━━━━┛
<pre><code class="python language-python hljs">+-------------+-------------+-------------+---------------+
| | <span class="hljs-string">'sum'</span> | [<span class="hljs-string">'sum'</span>] | {<span class="hljs-string">'x'</span>: <span class="hljs-string">'sum'</span>} |
+-------------+-------------+-------------+---------------+
| df.apply(…) | | x y | |
| 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> | | |
+-------------+-------------+-------------+---------------+
</code></pre>
<pre><code class="python language-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>} |
+-------------+-------------+-------------+---------------+
| df.apply(…) | x y | x y | x |
| df.agg(…) | a <span class="hljs-number">1</span> <span class="hljs-number">1</span> | rank rank | a <span class="hljs-number">1</span> |
| df.trans(…) | b <span class="hljs-number">2</span> <span class="hljs-number">2</span> | a <span class="hljs-number">1</span> <span class="hljs-number">1</span> | b <span class="hljs-number">2</span> |
| | | b <span class="hljs-number">2</span> <span class="hljs-number">2</span> | |
+-------------+-------------+-------------+---------------+
</code></pre>
<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>)
&lt;DF&gt; = pd.read_csv/pickle/excel(<span class="hljs-string">'&lt;path/url&gt;'</span>)
@ -2800,20 +2800,20 @@ c <span class="hljs-number">7</span> <span class="hljs-number">8</span>
<span class="hljs-number">6</span>: b <span class="hljs-number">4</span> <span class="hljs-number">5</span> <span class="hljs-number">6</span>
c <span class="hljs-number">7</span> <span class="hljs-number">8</span> <span class="hljs-number">6</span>
</code></pre>
<pre><code class="python language-python hljs">┏━━━━━━━━━━━━━┯━━━━━━━━━━━━━┯━━━━━━━━━━━━━┯━━━━━━━━━━━━━┯━━━━━━━━━━━━━━━┓
┃ │ <span class="hljs-string">'sum'</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>}
┠─────────────┼─────────────┼─────────────┼─────────────┼───────────────┨
┃ gb.agg(…) │ x y │ x y │ x y │ x ┃
┃ │ z │ a <span class="hljs-number">1</span> <span class="hljs-number">1</span> │ rank rank │ a <span class="hljs-number">1</span>
┃ │ <span class="hljs-number">3</span> <span class="hljs-number">1</span> <span class="hljs-number">2</span> b <span class="hljs-number">1</span> <span class="hljs-number">1</span> a <span class="hljs-number">1</span> <span class="hljs-number">1</span> b <span class="hljs-number">1</span>
┃ │ <span class="hljs-number">6</span> <span class="hljs-number">11</span> <span class="hljs-number">13</span> c <span class="hljs-number">2</span> <span class="hljs-number">2</span> b <span class="hljs-number">1</span> <span class="hljs-number">1</span> c <span class="hljs-number">2</span>
┃ │ │ │ c <span class="hljs-number">2</span> <span class="hljs-number">2</span> │ ┃
┠─────────────┼─────────────┼─────────────┼─────────────┼───────────────┨
┃ gb.trans(…) │ 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">1</span> │ │ ┃
┃ │ b <span class="hljs-number">11</span> <span class="hljs-number">13</span> b <span class="hljs-number">1</span> <span class="hljs-number">1</span> │ │ ┃
┃ │ c <span class="hljs-number">11</span> <span class="hljs-number">13</span> c <span class="hljs-number">1</span> <span class="hljs-number">1</span> │ │ ┃
┗━━━━━━━━━━━━━┷━━━━━━━━━━━━━┷━━━━━━━━━━━━━┷━━━━━━━━━━━━━┷━━━━━━━━━━━━━━━┛
<pre><code class="python language-python hljs">+-------------+-------------+-------------+-------------+---------------+
| | <span class="hljs-string">'sum'</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>} |
+-------------+-------------+-------------+-------------+---------------+
| gb.agg(…) | x y | x y | x y | x |
| | z | a <span class="hljs-number">1</span> <span class="hljs-number">1</span> | rank rank | a <span class="hljs-number">1</span> |
| | <span class="hljs-number">3</span> <span class="hljs-number">1</span> <span class="hljs-number">2</span> | b <span class="hljs-number">1</span> <span class="hljs-number">1</span> | a <span class="hljs-number">1</span> <span class="hljs-number">1</span> | b <span class="hljs-number">1</span> |
| | <span class="hljs-number">6</span> <span class="hljs-number">11</span> <span class="hljs-number">13</span> | c <span class="hljs-number">2</span> <span class="hljs-number">2</span> | b <span class="hljs-number">1</span> <span class="hljs-number">1</span> | c <span class="hljs-number">2</span> |
| | | | c <span class="hljs-number">2</span> <span class="hljs-number">2</span> | |
+-------------+-------------+-------------+-------------+---------------+
| gb.trans(…) | 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">1</span> | | |
| | b <span class="hljs-number">11</span> <span class="hljs-number">13</span> | b <span class="hljs-number">1</span> <span class="hljs-number">1</span> | | |
| | c <span class="hljs-number">11</span> <span class="hljs-number">13</span> | c <span class="hljs-number">1</span> <span class="hljs-number">1</span> | | |
+-------------+-------------+-------------+-------------+---------------+
</code></pre>
<div><h3 id="rolling">Rolling</h3><p><strong>Object for rolling window calculations.</strong></p><pre><code class="python language-python hljs">&lt;R_Sr/R_DF/R_GB&gt; = &lt;Sr/DF/GB&gt;.rolling(window_size) <span class="hljs-comment"># Also: `min_periods=None, center=False`.</span>
&lt;R_Sr/R_DF&gt; = &lt;R_DF/R_GB&gt;[column_key/s] <span class="hljs-comment"># Or: &lt;R&gt;.column_key</span>
@ -2821,31 +2821,7 @@ c <span class="hljs-number">7</span> <span class="hljs-number">8</span>
</code></pre></div>
<div><h2 id="plotly"><a href="#plotly" name="plotly">#</a>Plotly</h2><div><h3 id="top10countriesbypercentageofpopulationwithconfirmedcovid19infection">Top 10 Countries by Percentage of Population With Confirmed COVID-19 Infection</h3><pre><code class="text language-text">|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
+----------------------------------------------------------------------------------------------
</code></pre></div></div>
<pre><code class="python language-python hljs"><span class="hljs-keyword">import</span> pandas <span class="hljs-keyword">as</span> pd
<div><h2 id="plotly"><a href="#plotly" name="plotly">#</a>Plotly</h2><div><h3 id="coviddeathsbycontinent">Covid Deaths by Continent</h3><div id="2a950764-39fc-416d-97fe-0a6226a3095f" class="plotly-graph-div" style="height:420px; width:100%;"></div><p></p><pre><code class="python language-python hljs"><span class="hljs-keyword">import</span> pandas <span class="hljs-keyword">as</span> pd
<span class="hljs-keyword">import</span> plotly.express
covid = pd.read_csv(<span class="hljs-string">'https://covid.ourworldindata.org/data/owid-covid-data.csv'</span>,
@ -2856,34 +2832,15 @@ continents = pd.read_csv(<span class="hljs-string">'https://datahub.io/JohnSnowL
merged = pd.merge(covid, continents, left_on=<span class="hljs-string">'iso_code'</span>, right_on=<span class="hljs-string">'Three_Letter_Country_Code'</span>)
summed = merged.groupby([<span class="hljs-string">'Continent_Name'</span>, <span class="hljs-string">'date'</span>]).sum().reset_index()
summed[<span class="hljs-string">'Total Deaths per Million'</span>] = summed.total_deaths * <span class="hljs-number">1e6</span> / summed.population
summed = summed[(<span class="hljs-string">'2020-03-14'</span> &lt; summed.date) &amp; (summed.date &lt; <span class="hljs-string">'2020-05-31'</span>)]
summed = summed[(<span class="hljs-string">'2020-03-14'</span> &lt; summed.date) &amp; (summed.date &lt; <span class="hljs-string">'2020-06-25'</span>)]
summed = summed.rename({<span class="hljs-string">'date'</span>: <span class="hljs-string">'Date'</span>, <span class="hljs-string">'Continent_Name'</span>: <span class="hljs-string">'Continent'</span>}, axis=<span class="hljs-string">'columns'</span>)
plotly.express.line(summed, x=<span class="hljs-string">'Date'</span>, y=<span class="hljs-string">'Total Deaths per Million'</span>, color=<span class="hljs-string">'Continent'</span>).show()
</code></pre>
<div><h3 id="confirmedcasesofcovid19dowjonesindexgoldandbitcoinprice">Confirmed Cases of COVID-19, Dow Jones Index, Gold, and Bitcoin Price</h3><pre><code class="text language-text">|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
+----------------------------------------------------------------------------------------------
</code></pre></div>
<pre><code class="python language-python hljs"><span class="hljs-keyword">import</span> pandas, datetime
</code></pre></div></div>
<div><h3 id="confirmedcovidcasesdowjonesgoldandbitcoinprice">Confirmed Covid Cases, Dow Jones, Gold, and Bitcoin Price</h3><div id="e23ccacc-a456-478b-b467-7282a2165921" class="plotly-graph-div" style="height:400px; width:100%;"></div><pre><code class="python language-python hljs"><span class="hljs-keyword">import</span> pandas, datetime
<span class="hljs-keyword">import</span> plotly.graph_objects <span class="hljs-keyword">as</span> go
<span class="hljs-function"><span class="hljs-keyword">def</span> <span class="hljs-title">main</span><span class="hljs-params">()</span>:</span>
@ -2925,7 +2882,9 @@ plotly.express.line(summed, x=<span class="hljs-string">'Date'</span>, y=<span c
<span class="hljs-keyword">if</span> __name__ == <span class="hljs-string">'__main__'</span>:
main()
</code></pre>
</code></pre></div>
<div><h2 id="basicscripttemplate"><a href="#basicscripttemplate" name="basicscripttemplate">#</a>Basic Script Template</h2><pre><code class="python language-python hljs"><span class="hljs-comment">#!/usr/bin/env python3</span>
<span class="hljs-comment">#</span>
<span class="hljs-comment"># Usage: .py</span>
@ -2967,5 +2926,8 @@ plotly.express.line(summed, x=<span class="hljs-string">'Date'</span>, y=<span c
<script src="web/jquery-3.4.0.min.js"></script>
<script src="web/script_2.js"></script>
<script type="text/javascript" src="https://transactions.sendowl.com/assets/sendowl.js" ></script>
<script src="web/plotly.min.js"></script>
<script src="web/covid_deaths.js"></script>
<script src="web/covid_cases.js"></script>
</body>
</html>

11
web/covid_cases.js
File diff suppressed because it is too large
View File

11
web/covid_deaths.js
File diff suppressed because it is too large
View File

61
web/plotly.min.js
File diff suppressed because it is too large
View File

101
web/script_2.js

@ -246,6 +246,101 @@ const DIAGRAM_12_B =
'┃ isdecimal() │ │ │ │ │ ✓ ┃\n' +
'┗━━━━━━━━━━━━━━━┷━━━━━━━━━━┷━━━━━━━━━━┷━━━━━━━━━━┷━━━━━━━━━━┷━━━━━━━━━━┛\n';
const DIAGRAM_13_A =
'| sr.apply(…) | 3 | sum 3 | s 3 |'
const DIAGRAM_13_B =
"┏━━━━━━━━━━━━━┯━━━━━━━━━━━━━┯━━━━━━━━━━━━━┯━━━━━━━━━━━━━━━┓\n" +
"┃ │ 'sum' │ ['sum'] │ {'s': 'sum'} ┃\n" +
"┠─────────────┼─────────────┼─────────────┼───────────────┨\n" +
"┃ sr.apply(…) │ 3 │ sum 3 │ s 3 ┃\n" +
"┃ sr.agg(…) │ │ │ ┃\n" +
"┗━━━━━━━━━━━━━┷━━━━━━━━━━━━━┷━━━━━━━━━━━━━┷━━━━━━━━━━━━━━━┛\n";
const DIAGRAM_14_A =
'| sr.apply(…) | | rank | |';
const DIAGRAM_14_B =
"┏━━━━━━━━━━━━━┯━━━━━━━━━━━━━┯━━━━━━━━━━━━━┯━━━━━━━━━━━━━━━┓\n" +
"┃ │ 'rank' │ ['rank'] │ {'r': 'rank'} ┃\n" +
"┠─────────────┼─────────────┼─────────────┼───────────────┨\n" +
"┃ sr.apply(…) │ │ rank │ ┃\n" +
"┃ sr.agg(…) │ x 1 │ x 1 │ r x 1 ┃\n" +
"┃ sr.trans(…) │ y 2 │ y 2 │ y 2 ┃\n" +
"┗━━━━━━━━━━━━━┷━━━━━━━━━━━━━┷━━━━━━━━━━━━━┷━━━━━━━━━━━━━━━┛\n";
const DIAGRAM_15_A =
'| df.apply(…) | | x y | |';
const DIAGRAM_15_B =
"┏━━━━━━━━━━━━━┯━━━━━━━━━━━━━┯━━━━━━━━━━━━━┯━━━━━━━━━━━━━━━┓\n" +
"┃ │ 'sum' │ ['sum'] │ {'x': 'sum'} ┃\n" +
"┠─────────────┼─────────────┼─────────────┼───────────────┨\n" +
"┃ df.apply(…) │ │ x y │ ┃\n" +
"┃ df.agg(…) │ x 4 │ sum 4 6 │ x 4 ┃\n" +
"┃ │ y 6 │ │ ┃\n" +
"┗━━━━━━━━━━━━━┷━━━━━━━━━━━━━┷━━━━━━━━━━━━━┷━━━━━━━━━━━━━━━┛\n";
const DIAGRAM_16_A =
'| df.apply(…) | x y | x y | x |';
const DIAGRAM_16_B =
"┏━━━━━━━━━━━━━┯━━━━━━━━━━━━━┯━━━━━━━━━━━━━┯━━━━━━━━━━━━━━━┓\n" +
"┃ │ 'rank' │ ['rank'] │ {'x': 'rank'} ┃\n" +
"┠─────────────┼─────────────┼─────────────┼───────────────┨\n" +
"┃ df.apply(…) │ x y │ x y │ x ┃\n" +
"┃ df.agg(…) │ a 1 1 │ rank rank │ a 1 ┃\n" +
"┃ df.trans(…) │ b 2 2 │ a 1 1 │ b 2 ┃\n" +
"┃ │ │ b 2 2 │ ┃\n" +
"┗━━━━━━━━━━━━━┷━━━━━━━━━━━━━┷━━━━━━━━━━━━━┷━━━━━━━━━━━━━━━┛\n";
const DIAGRAM_17_A =
'| gb.agg(…) | x y | x y | x y | x |';
const DIAGRAM_17_B =
"┏━━━━━━━━━━━━━┯━━━━━━━━━━━━━┯━━━━━━━━━━━━━┯━━━━━━━━━━━━━┯━━━━━━━━━━━━━━━┓\n" +
"┃ │ 'sum' │ 'rank' │ ['rank'] │ {'x': 'rank'} ┃\n" +
"┠─────────────┼─────────────┼─────────────┼─────────────┼───────────────┨\n" +
"┃ gb.agg(…) │ x y │ x y │ x y │ x ┃\n" +
"┃ │ z │ a 1 1 │ rank rank │ a 1 ┃\n" +
"┃ │ 3 1 2 │ b 1 1 │ a 1 1 │ b 1 ┃\n" +
"┃ │ 6 11 13 │ c 2 2 │ b 1 1 │ c 2 ┃\n" +
"┃ │ │ │ c 2 2 │ ┃\n" +
"┠─────────────┼─────────────┼─────────────┼─────────────┼───────────────┨\n" +
"┃ gb.trans(…) │ x y │ x y │ │ ┃\n" +
"┃ │ a 1 2 │ a 1 1 │ │ ┃\n" +
"┃ │ b 11 13 │ b 1 1 │ │ ┃\n" +
"┃ │ c 11 13 │ c 1 1 │ │ ┃\n" +
"┗━━━━━━━━━━━━━┷━━━━━━━━━━━━━┷━━━━━━━━━━━━━┷━━━━━━━━━━━━━┷━━━━━━━━━━━━━━━┛\n";
const DIAGRAM_18_A =
'+------------------------+---------------+------------+------------+--------------------------+';
const DIAGRAM_18_B =
"┏━━━━━━━━━━━━━━━━━━━━━━━━┯━━━━━━━━━━━━━━━┯━━━━━━━━━━━━┯━━━━━━━━━━━━┯━━━━━━━━━━━━━━━━━━━━━━━━━━┓\n" +
"┃ how/join │ 'outer' │ 'inner' │ 'left' │ description ┃\n" +
"┠────────────────────────┼───────────────┼────────────┼────────────┼──────────────────────────┨\n" +
"┃ l.merge(r, on='y', │ x y z │ x y z │ x y z │ Joins/merges on column. ┃\n" +
"┃ how=…) │ 0 1 2 . │ 3 4 5 │ 1 2 . │ Also accepts left_on and ┃\n" +
"┃ │ 1 3 4 5 │ │ 3 4 5 │ right_on parameters. ┃\n" +
"┃ │ 2 . 6 7 │ │ │ Uses 'inner' by default. ┃\n" +
"┠────────────────────────┼───────────────┼────────────┼────────────┼──────────────────────────┨\n" +
"┃ l.join(r, lsuffix='l', │ x yl yr z │ │ x yl yr z │ Joins/merges on row_keys.┃\n" +
"┃ rsuffix='r', │ a 1 2 . . │ x yl yr z │ 1 2 . . │ Uses 'left' by default. ┃\n" +
"┃ how=…) │ b 3 4 4 5 │ 3 4 4 5 │ 3 4 4 5 │ ┃\n" +
"┃ │ c . . 6 7 │ │ │ ┃\n" +
"┠────────────────────────┼───────────────┼────────────┼────────────┼──────────────────────────┨\n" +
"┃ pd.concat([l, r], │ x y z │ y │ │ Adds rows at the bottom. ┃\n" +
"┃ axis=0, │ a 1 2 . │ 2 │ │ Uses 'outer' by default. ┃\n" +
"┃ join=…) │ b 3 4 . │ 4 │ │ By default works the ┃\n" +
"┃ │ b . 4 5 │ 4 │ │ same as `l.append(r)`. ┃\n" +
"┃ │ c . 6 7 │ 6 │ │ ┃\n" +
"┠────────────────────────┼───────────────┼────────────┼────────────┼──────────────────────────┨\n" +
"┃ pd.concat([l, r], │ x y y z │ │ │ Adds columns at the ┃\n" +
"┃ axis=1, │ a 1 2 . . │ x y y z │ │ right end. ┃\n" +
"┃ join=…) │ b 3 4 4 5 │ 3 4 4 5 │ │ Uses 'outer' by default. ┃\n" +
"┃ │ c . . 6 7 │ │ │ ┃\n" +
"┠────────────────────────┼───────────────┼────────────┼────────────┼──────────────────────────┨\n" +
"┃ l.combine_first(r) │ x y z │ │ │ Adds missing rows and ┃\n" +
"┃ │ a 1 2 . │ │ │ columns. ┃\n" +
"┃ │ b 3 4 5 │ │ │ ┃\n" +
"┃ │ c . 6 7 │ │ │ ┃\n" +
"┗━━━━━━━━━━━━━━━━━━━━━━━━┷━━━━━━━━━━━━━━━┷━━━━━━━━━━━━┷━━━━━━━━━━━━┷━━━━━━━━━━━━━━━━━━━━━━━━━━┛\n";
// isFontAvailable:
(function(d){function c(c){b.style.fontFamily=c;e.appendChild(b);f=b.clientWidth;e.removeChild(b);return f}var f,e=d.body,b=d.createElement("span");b.innerHTML=Array(100).join("wi");b.style.cssText=["position:absolute","width:auto","font-size:128px","left:-99999px"].join(" !important;");var g=c("monospace"),h=c("serif"),k=c("sans-serif");window.isFontAvailable=function(b){return g!==c(b+",monospace")||k!==c(b+",sans-serif")||h!==c(b+",serif")}})(document);
@ -263,6 +358,12 @@ if (isFontAvailable('Menlo')) {
$(`code:contains(${DIAGRAM_10_A})`).html(DIAGRAM_10_B);
$(`code:contains(${DIAGRAM_11_A})`).html(DIAGRAM_11_B);
$(`code:contains(${DIAGRAM_12_A})`).html(DIAGRAM_12_B);
$(`code:contains(${DIAGRAM_13_A})`).html(DIAGRAM_13_B);
$(`code:contains(${DIAGRAM_14_A})`).html(DIAGRAM_14_B);
$(`code:contains(${DIAGRAM_15_A})`).html(DIAGRAM_15_B);
$(`code:contains(${DIAGRAM_16_A})`).html(DIAGRAM_16_B);
$(`code:contains(${DIAGRAM_17_A})`).html(DIAGRAM_17_B);
$(`code:contains(${DIAGRAM_18_A})`).html(DIAGRAM_18_B);
}
var isMobile = false;

3
web/template.html

@ -221,5 +221,8 @@ pre.prettyprint {
<script src="web/jquery-3.4.0.min.js"></script>
<script src="web/script_2.js"></script>
<script type="text/javascript" src="https://transactions.sendowl.com/assets/sendowl.js" ></script>
<script src="web/plotly.min.js"></script>
<script src="web/covid_deaths.js"></script>
<script src="web/covid_cases.js"></script>
</body>
</html>
Loading…
Cancel
Save