@ -2660,12 +2660,11 @@ Name: a, dtype: int64
< pre > < code class = "python language-python hljs" > < span class = "hljs-meta" > > > > < / span > sr = Series([< span class = "hljs-number" > 1< / span > , < span class = "hljs-number" > 2< / span > ], index=[< span class = "hljs-string" > 'x'< / span > , < span class = "hljs-string" > 'y'< / span > ])
x < span class = "hljs-number" > 1< / span >
y < span class = "hljs-number" > 2< / span >
dtype: int64
< / code > < / pre >
< pre > < code class = "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.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 >
@ -2677,6 +2676,9 @@ dtype: int64
┃ 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 >
< ul >
< li > < strong > Last result has a hierarchical index. < code class = "python hljs" > < span class = "hljs-string" > '< Sr> [< key_1> , < key_2> ]'< / span > < / code > returns the value.< / strong > < / li >
< / ul >
< 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" > > > > < / 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
a < span class = "hljs-number" > 1< / span > < span class = "hljs-number" > 2< / span >
@ -2839,12 +2841,12 @@ covid = pd.read_csv(<span class="hljs-string">'https://covid.ourworldindata.org/
continents = pd.read_csv(< span class = "hljs-string" > 'https://datahub.io/JohnSnowLabs/country-and-continent-codes-'< / span > + \
< span class = "hljs-string" > 'list/r/country-and-continent-codes-list-csv.csv'< / span > ,
usecols=[< span class = "hljs-string" > 'Three_Letter_Country_Code'< / span > , < span class = "hljs-string" > 'Continent_Name'< / span > ])
merge d = pd.merge(covid, continents, left_on=< span class = "hljs-string" > 'iso_code'< / span > , right_on=< span class = "hljs-string" > 'Three_Letter_Country_Code'< / span > )
summe d = merge d.groupby([< span class = "hljs-string" > 'Continent_Name'< / span > , < span class = "hljs-string" > 'date'< / span > ]).sum().reset_index()
summe d[< span class = "hljs-string" > 'Total Deaths per Million'< / span > ] = summe d.total_deaths * < span class = "hljs-number" > 1e6< / span > / summe d.population
summe d = summe d[(< span class = "hljs-string" > '2020-03-14'< / span > < summe d.date) & (summe d.date < < span class = "hljs-string" > '2020-06-25'< / span > )]
summe d = summe d.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(summe d, 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()
df = pd.merge(covid, continents, left_on=< span class = "hljs-string" > 'iso_code'< / span > , right_on=< span class = "hljs-string" > 'Three_Letter_Country_Code'< / span > )
df = df .groupby([< span class = "hljs-string" > 'Continent_Name'< / span > , < span class = "hljs-string" > 'date'< / span > ]).sum().reset_index()
df [< span class = "hljs-string" > 'Total Deaths per Million'< / span > ] = df .total_deaths * < span class = "hljs-number" > 1e6< / span > / df .population
df = df [(< span class = "hljs-string" > '2020-03-14'< / span > < df .date) & (df .date < < span class = "hljs-string" > '2020-06-25'< / span > )]
df = df .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(df , 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 > < / div >
@ -2857,7 +2859,7 @@ plotly.express.line(summed, x=<span class="hljs-string">'Date'</span>, y=<span c
display_data(wrangle_data(*scrape_data()))
< span class = "hljs-function" > < span class = "hljs-keyword" > def< / span > < span class = "hljs-title" > scrape_data< / span > < span class = "hljs-params" > ()< / span > :< / span >
< span class = "hljs-function" > < span class = "hljs-keyword" > def< / span > < span class = "hljs-title" > scrape_yah< / span > < span class = "hljs-params" > (id_)< / span > :< / span >
< span class = "hljs-function" > < span class = "hljs-keyword" > def< / span > < span class = "hljs-title" > scrape_yahoo < / span > < span class = "hljs-params" > (id_)< / span > :< / span >
BASE_URL = < span class = "hljs-string" > 'https://query1.finance.yahoo.com/v7/finance/download/'< / span >
now = int(datetime.datetime.now().timestamp())
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 >
@ -2865,23 +2867,23 @@ plotly.express.line(summed, x=<span class="hljs-string">'Date'</span>, y=<span c
covid = pd.read_csv(< span class = "hljs-string" > 'https://covid.ourworldindata.org/data/owid-covid-data.csv'< / span > ,
usecols=[< span class = "hljs-string" > 'date'< / span > , < span class = "hljs-string" > 'total_cases'< / span > ])
covid = covid.groupby(< span class = "hljs-string" > 'date'< / span > ).sum()
dow_jones , gold, bitcoin = scrape_yah(< span class = "hljs-string" > '^DJI'< / span > ) , scrape_yah( < span class = "hljs-string" > 'GC=F'< / span > ) , scrape_yah( < span class = "hljs-string" > 'BTC-USD'< / span > )
dow_jones .name, gold.name, bitcoin.name = < span class = "hljs-string" > 'Dow Jones'< / span > , < span class = "hljs-string" > 'Gold'< / span > , < span class = "hljs-string" > 'Bitcoin'< / span >
< span class = "hljs-keyword" > return< / span > covid, dow_jones , gold, bitcoin
< span class = "hljs-function" > < span class = "hljs-keyword" > def< / span > < span class = "hljs-title" > wrangle_data< / span > < span class = "hljs-params" > (covid, dow_jones , gold, bitcoin)< / span > :< / span >
out = pandas.concat([covid, dow_jones , gold, bitcoin], axis=< span class = "hljs-number" > 1< / span > )
out = out .loc[< span class = "hljs-string" > '2020-02-23'< / span > :].iloc[:< span class = "hljs-number" > -2< / span > ]
out = out .interpolate()
out .iloc[:, < span class = "hljs-number" > 1< / span > :] = out .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 > :]
out .iloc[:, < span class = "hljs-number" > 1< / span > :] = out .iloc[:, < span class = "hljs-number" > 1< / span > :] / out .iloc[< span class = "hljs-number" > 0< / span > , < span class = "hljs-number" > 1< / span > :] * < span class = "hljs-number" > 100< / span >
< span class = "hljs-keyword" > return< / span > out
< span class = "hljs-function" > < span class = "hljs-keyword" > def< / span > < span class = "hljs-title" > display_data< / span > < span class = "hljs-params" > (out )< / span > :< / span >
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 > )]
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 >
< span class = "hljs-keyword" > return< / span > covid, dow, gold, bitcoin
< 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 >
df = pandas.concat([covid, dow , gold, bitcoin], axis=< span class = "hljs-number" > 1< / span > )
df = df .loc[< span class = "hljs-string" > '2020-02-23'< / span > :].iloc[:< span class = "hljs-number" > -2< / span > ]
df = df .interpolate()
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 > :]
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 >
< span class = "hljs-keyword" > return< / span > df
< span class = "hljs-function" > < span class = "hljs-keyword" > def< / span > < span class = "hljs-title" > display_data< / span > < span class = "hljs-params" > (df )< / span > :< / span >
< 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 >
< span class = "hljs-keyword" > return< / span > go.Scatter(x=out.index, y=out [col_name], name=col_name, yaxis=< span class = "hljs-string" > 'y2'< / span > )
traces = [get_trace(col_name) < span class = "hljs-keyword" > for< / span > col_name < span class = "hljs-keyword" > in< / span > out .columns[< span class = "hljs-number" > 1< / span > :]]
traces.append(go.Scatter(x=out.index, y=out .total_cases, name=< span class = "hljs-string" > 'Total Cases'< / span > , yaxis=< span class = "hljs-string" > 'y1'< / span > ))
< span class = "hljs-keyword" > return< / span > go.Scatter(x=df.index, y=df [col_name], name=col_name, yaxis=< span class = "hljs-string" > 'y2'< / span > )
traces = [get_trace(col_name) < span class = "hljs-keyword" > for< / span > col_name < span class = "hljs-keyword" > in< / span > df .columns[< span class = "hljs-number" > 1< / span > :]]
traces.append(go.Scatter(x=df.index, y=df .total_cases, name=< span class = "hljs-string" > 'Total Cases'< / span > , yaxis=< span class = "hljs-string" > 'y1'< / span > ))
figure = go.Figure()
figure.add_traces(traces)
figure.update_layout(