|
2861 | 2861 |
|
2862 | 2862 |
|
2863 | 2863 | <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 |
2865 | 2865 | <span class="hljs-keyword">import</span> plotly.graph_objects <span class="hljs-keyword">as</span> go
|
| 2866 | +<span class="hljs-keyword">import</span> datetime |
2866 | 2867 |
|
2867 | 2868 | <span class="hljs-function"><span class="hljs-keyword">def</span> <span class="hljs-title">main</span><span class="hljs-params">()</span>:</span>
|
2868 | 2869 | display_data(wrangle_data(*scrape_data()))
|
|
2872 | 2873 | BASE_URL = <span class="hljs-string">'https://query1.finance.yahoo.com/v7/finance/download/'</span>
|
2873 | 2874 | now = int(datetime.datetime.now().timestamp())
|
2874 | 2875 | url = <span class="hljs-string">f'<span class="hljs-subst">{BASE_URL}</span><span class="hljs-subst">{id_}</span>?period1=1579651200&period2=<span class="hljs-subst">{now}</span>&interval=1d&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>, |
2877 | 2878 | usecols=[<span class="hljs-string">'date'</span>, <span class="hljs-string">'total_cases'</span>])
|
2878 | 2879 | covid = covid.groupby(<span class="hljs-string">'date'</span>).sum()
|
2879 | 2880 | 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>)]
|
2880 | 2881 | 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>
|
2881 | 2882 | <span class="hljs-keyword">return</span> covid, dow, gold, bitcoin
|
2882 | 2883 |
|
2883 | 2884 | <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() |
2885 | 2887 | 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>) |
2890 | 2891 |
|
2891 | 2892 | <span class="hljs-function"><span class="hljs-keyword">def</span> <span class="hljs-title">display_data</span><span class="hljs-params">(df)</span>:</span>
|
2892 | 2893 | <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 | 2950 | <span class="hljs-keyword">from</span> collections <span class="hljs-keyword">import</span> namedtuple
|
2950 | 2951 | <span class="hljs-keyword">from</span> dataclasses <span class="hljs-keyword">import</span> make_dataclass
|
2951 | 2952 | <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 |
2953 | 2954 | <span class="hljs-keyword">import</span> re
|
2954 | 2955 |
|
2955 | 2956 |
|
|
0 commit comments