!python --version
Python 3.7.3
import pandas as pd
import numpy as np
from pandas.plotting import register_matplotlib_converters
register_matplotlib_converters()
import datetime
import dateutil
import matplotlib.pyplot as plt
import seaborn as sns
sns.set()
df = pd.read_csv('https://raw.githubusercontent.com/covid19-eu-zh/covid19-eu-data/master/dataset/covid-19-de.csv')
df['date'] = df.datetime.apply(lambda x: dateutil.parser.parse(x).date())
df['time'] = df.datetime.apply(lambda x: dateutil.parser.parse(x).time())
df_daily = df.groupby(['date', 'nuts_1']).apply(lambda x: x.sort_values(by='time').reset_index(drop=True).iloc[-1])
df_daily.head()
df_daily_vis = df_daily.melt(
id_vars=["datetime", "nuts_1", "country"],
value_vars=["cases", "deaths", "cases/100k pop."],
var_name="dimension",
value_name="value"
)
df_daily_vis.head()
fig, ax = plt.subplots(figsize=(20, 6.18))
sns.lineplot(
x='datetime',
y='value',
data = df_daily_vis.loc[df_daily_vis.nuts_1 == 'Nordrhein-Westfalen'],
hue='dimension',
ax=ax
)
ax.set_yscale('log')
plt.xticks(rotation=45);
fig, ax = plt.subplots(figsize=(20, 6.18))
sns.lineplot(
x='datetime',
y='value',
data = df_daily_vis.loc[
(
df_daily_vis.nuts_1 == 'Nordrhein-Westfalen'
) &
(
df_daily_vis.dimension == 'cases'
)
],
ax=ax, color="blue", label="Cases"
)
ax.set_ylabel('Cases')
plt.xticks(rotation=45);
ax_r = ax.twinx()
sns.lineplot(
x='datetime',
y='value',
data = df_daily_vis.loc[
(
df_daily_vis.nuts_1 == 'Nordrhein-Westfalen'
) & (
df_daily_vis.dimension == 'deaths'
)
],
ax=ax_r, color="red", label="Deaths"
)
ax_r.set_ylabel('Deaths')
ax.set_yscale('log')
plt.xticks(rotation=45);