Skip to content

Commit e246cd4

Browse files
committed
Pandas
1 parent dde0e30 commit e246cd4

File tree

2 files changed

+20
-18
lines changed

2 files changed

+20
-18
lines changed

README.md

Lines changed: 10 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -3377,8 +3377,9 @@ plotly.express.line(df, x='Date', y='Total Deaths per Million', color='Continent
33773377

33783378
```python
33793379
# $ pip3 install pandas plotly
3380-
import pandas, datetime
3380+
import pandas as pd
33813381
import plotly.graph_objects as go
3382+
import datetime
33823383

33833384
def main():
33843385
display_data(wrangle_data(*scrape_data()))
@@ -3388,21 +3389,21 @@ def scrape_data():
33883389
BASE_URL = 'https://query1.finance.yahoo.com/v7/finance/download/'
33893390
now = int(datetime.datetime.now().timestamp())
33903391
url = f'{BASE_URL}{id_}?period1=1579651200&period2={now}&interval=1d&events=history'
3391-
return pandas.read_csv(url, usecols=['Date', 'Close']).set_index('Date').Close
3392-
covid = pd.read_csv('https://covid.ourworldindata.org/data/owid-covid-data.csv',
3392+
return pd.read_csv(url, usecols=['Date', 'Close']).set_index('Date').Close
3393+
covid = pd.read_csv('https://covid.ourworldindata.org/data/owid-covid-data.csv',
33933394
usecols=['date', 'total_cases'])
33943395
covid = covid.groupby('date').sum()
33953396
dow, gold, bitcoin = [scrape_yahoo(id_) for id_ in ('^DJI', 'GC=F', 'BTC-USD')]
33963397
dow.name, gold.name, bitcoin.name = 'Dow Jones', 'Gold', 'Bitcoin'
33973398
return covid, dow, gold, bitcoin
33983399

33993400
def wrangle_data(covid, dow, gold, bitcoin):
3400-
df = pandas.concat([covid, dow, gold, bitcoin], axis=1)
3401+
df = pd.concat([dow, gold, bitcoin], axis=1)
3402+
df = df.sort_index().interpolate()
34013403
df = df.loc['2020-02-23':].iloc[:-2]
3402-
df = df.interpolate()
3403-
df.iloc[:, 1:] = df.rolling(10, min_periods=1, center=True).mean().iloc[:, 1:]
3404-
df.iloc[:, 1:] = df.iloc[:, 1:] / df.iloc[0, 1:] * 100
3405-
return df
3404+
df = df.rolling(10, min_periods=1, center=True).mean()
3405+
df = df / df.iloc[0] * 100
3406+
return pd.concat([covid, df], axis=1, join='inner')
34063407

34073408
def display_data(df):
34083409
def get_trace(col_name):
@@ -3478,7 +3479,7 @@ $ pyinstaller script.py --add-data '<path>:.' # Adds file to the root of the ex
34783479
from collections import namedtuple
34793480
from dataclasses import make_dataclass
34803481
from enum import Enum
3481-
from sys import argv
3482+
from sys import argv, exit
34823483
import re
34833484

34843485

index.html

Lines changed: 10 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -2861,8 +2861,9 @@
28612861

28622862

28632863
<div><h3 id="confirmedcovidcasesdowjonesgoldandbitcoinprice">Confirmed Covid Cases, Dow Jones, Gold, and Bitcoin Price</h3><p></p><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-comment"># $ pip3 install pandas plotly</span>
2864-
<span class="hljs-keyword">import</span> pandas, datetime
2864+
<span class="hljs-keyword">import</span> pandas <span class="hljs-keyword">as</span> pd
28652865
<span class="hljs-keyword">import</span> plotly.graph_objects <span class="hljs-keyword">as</span> go
2866+
<span class="hljs-keyword">import</span> datetime
28662867

28672868
<span class="hljs-function"><span class="hljs-keyword">def</span> <span class="hljs-title">main</span><span class="hljs-params">()</span>:</span>
28682869
display_data(wrangle_data(*scrape_data()))
@@ -2872,21 +2873,21 @@
28722873
BASE_URL = <span class="hljs-string">'https://query1.finance.yahoo.com/v7/finance/download/'</span>
28732874
now = int(datetime.datetime.now().timestamp())
28742875
url = <span class="hljs-string">f'<span class="hljs-subst">{BASE_URL}</span><span class="hljs-subst">{id_}</span>?period1=1579651200&amp;period2=<span class="hljs-subst">{now}</span>&amp;interval=1d&amp;events=history'</span>
2875-
<span class="hljs-keyword">return</span> pandas.read_csv(url, usecols=[<span class="hljs-string">'Date'</span>, <span class="hljs-string">'Close'</span>]).set_index(<span class="hljs-string">'Date'</span>).Close
2876-
covid = pd.read_csv(<span class="hljs-string">'https://covid.ourworldindata.org/data/owid-covid-data.csv'</span>,
2876+
<span class="hljs-keyword">return</span> pd.read_csv(url, usecols=[<span class="hljs-string">'Date'</span>, <span class="hljs-string">'Close'</span>]).set_index(<span class="hljs-string">'Date'</span>).Close
2877+
covid = pd.read_csv(<span class="hljs-string">'https://covid.ourworldindata.org/data/owid-covid-data.csv'</span>,
28772878
usecols=[<span class="hljs-string">'date'</span>, <span class="hljs-string">'total_cases'</span>])
28782879
covid = covid.groupby(<span class="hljs-string">'date'</span>).sum()
28792880
dow, gold, bitcoin = [scrape_yahoo(id_) <span class="hljs-keyword">for</span> id_ <span class="hljs-keyword">in</span> (<span class="hljs-string">'^DJI'</span>, <span class="hljs-string">'GC=F'</span>, <span class="hljs-string">'BTC-USD'</span>)]
28802881
dow.name, gold.name, bitcoin.name = <span class="hljs-string">'Dow Jones'</span>, <span class="hljs-string">'Gold'</span>, <span class="hljs-string">'Bitcoin'</span>
28812882
<span class="hljs-keyword">return</span> covid, dow, gold, bitcoin
28822883

28832884
<span class="hljs-function"><span class="hljs-keyword">def</span> <span class="hljs-title">wrangle_data</span><span class="hljs-params">(covid, dow, gold, bitcoin)</span>:</span>
2884-
df = pandas.concat([covid, dow, gold, bitcoin], axis=<span class="hljs-number">1</span>)
2885+
df = pd.concat([dow, gold, bitcoin], axis=<span class="hljs-number">1</span>)
2886+
df = df.sort_index().interpolate()
28852887
df = df.loc[<span class="hljs-string">'2020-02-23'</span>:].iloc[:<span class="hljs-number">-2</span>]
2886-
df = df.interpolate()
2887-
df.iloc[:, <span class="hljs-number">1</span>:] = df.rolling(<span class="hljs-number">10</span>, min_periods=<span class="hljs-number">1</span>, center=<span class="hljs-keyword">True</span>).mean().iloc[:, <span class="hljs-number">1</span>:]
2888-
df.iloc[:, <span class="hljs-number">1</span>:] = df.iloc[:, <span class="hljs-number">1</span>:] / df.iloc[<span class="hljs-number">0</span>, <span class="hljs-number">1</span>:] * <span class="hljs-number">100</span>
2889-
<span class="hljs-keyword">return</span> df
2888+
df = df.rolling(<span class="hljs-number">10</span>, min_periods=<span class="hljs-number">1</span>, center=<span class="hljs-keyword">True</span>).mean()
2889+
df = df / df.iloc[<span class="hljs-number">0</span>] * <span class="hljs-number">100</span>
2890+
<span class="hljs-keyword">return</span> pd.concat([covid, df], axis=<span class="hljs-number">1</span>, join=<span class="hljs-string">'inner'</span>)
28902891

28912892
<span class="hljs-function"><span class="hljs-keyword">def</span> <span class="hljs-title">display_data</span><span class="hljs-params">(df)</span>:</span>
28922893
<span class="hljs-function"><span class="hljs-keyword">def</span> <span class="hljs-title">get_trace</span><span class="hljs-params">(col_name)</span>:</span>
@@ -2949,7 +2950,7 @@
29492950
<span class="hljs-keyword">from</span> collections <span class="hljs-keyword">import</span> namedtuple
29502951
<span class="hljs-keyword">from</span> dataclasses <span class="hljs-keyword">import</span> make_dataclass
29512952
<span class="hljs-keyword">from</span> enum <span class="hljs-keyword">import</span> Enum
2952-
<span class="hljs-keyword">from</span> sys <span class="hljs-keyword">import</span> argv
2953+
<span class="hljs-keyword">from</span> sys <span class="hljs-keyword">import</span> argv, exit
29532954
<span class="hljs-keyword">import</span> re
29542955

29552956

0 commit comments

Comments
 (0)