Visualisieren Sie die Ausbreitung von Corona in jeder Präfektur Das Ziel ist dies.
Verwenden Sie Python Seaborn. Klicken Sie hier für die Anzahl der infizierten Personen (bis zu 4/5). https://toyokeizai.net/sp/visual/tko/covid19/ Klicken Sie hier, um Daten zum Präfekturnamen anzuzeigen. https://gist.github.com/mugifly/d6e68a516de4a008687c Hier ist eine Zusammenfassung verschiedener Dinge. https://github.com/kyasby/colona.git
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
import seaborn as sns
%matplotlib inline
% matplotlib inline ist magisch.
Numpy-Importe für cumsum ()
.
df = pd.read_csv("COVID-19.csv")
df = df[["Beratungspräfektur", "Präfektur des Wohnsitzes", "Anzahl der Personen", "Datum des Beginns", "Festes Datum"]]
df = df.rename(columns={"Alter":"age", "Sex":"sex", "Beratungspräfektur":"hsp", "Präfektur des Wohnsitzes":"house"})
df
Extrahieren Sie die erforderlichen Spalten und benennen Sie sie gleichzeitig um. Durch Übergeben einer Liste an df [] können Sie nur diese Spalte extrahieren.
df.rename(columns={"old_columns_name":"new_name"},index={"old_index_name":"new_name"})
Sie können den Spaltennamen und den Indexnamen ändern, indem Sie ein Wörterbuch übergeben, z.
for i, row in df.iterrows():
if type(row["Datum des Beginns"])==float:
df.at[i, "Datum des Beginns"] = row["Festes Datum"]
else:
pass
df = df.rename(columns = {"Datum des Beginns":"Date"})
Ich möchte, dass die horizontale Achse der Wärmekarte das Datum ist, also erhalte ich das Datum. Da NaN jedoch wie unten gezeigt im "Startdatum" enthalten ist, ersetzen Sie es in diesem Fall durch das "bestätigte Datum".
hsp | house | Anzahl der Personen | Datum des Beginns | Festes Datum |
---|---|---|---|---|
Präfektur Kanagawa | Präfektur Kanagawa | 1 | 1/3/2020 | 1/15/2020 |
Tokio | Volksrepublik China | 1 | 1/14/2020 | 1/24/2020 |
Tokio | Volksrepublik China | 1 | 1/21/2020 | 1/25/2020 |
Präfektur Osaka | Präfektur Osaka | 1 | 1/20/2020 | 1/29/2020 |
Unbekannt | Volksrepublik China | 1 | 1/29/2020 | 1/30/2020 |
Präfektur Chiba | Volksrepublik China | 1 | NaN | 1/30/2020 |
Ändern Sie abschließend den Spaltennamen in "Datum".
NaN Urteil
type (row [" Startdatum "]) == float
Ich habe es so geschrieben, aber bitte lassen Sie mich wissen, ob es einen besseren Weg gibt, es zu schreiben.
todofuken = pd.read_csv("japan.csv", header=None)[0]
df["hsp"].value_counts()
Wenn Sie also den Inhalt von "hsp" überprüfen, können Sie sehen, dass es "Haneda Airport" und "Unknown" gibt.
df["hsp"]= df["hsp"].apply(lambda x : "Andere" if x not in list(todofuken) else x)
Verwenden Sie apply und die Lambda-Funktion, um den Inhalt von df ["hsp"] teilweise neu zu schreiben. Wenn es nicht in der Liste der Präfekturnamen enthalten ist, geben Sie "Andere" ein. Wenn dies der Fall ist, geben Sie die Präfektur so ein, wie sie ist. Bei Verwendung der Apply- und Lambda-Funktionen wird wahrscheinlich ein Syntaxfehler ohne sonst angezeigt. (Nicht bestätigt) Bitte seien Sie vorsichtig.
Bisher sieht df so aus.
hsp | house | Anzahl der Personen | Date | Festes Datum |
---|---|---|---|---|
Präfektur Kanagawa | Präfektur Kanagawa | 1 | 1/3/2020 | 1/15/2020 |
Tokio | Volksrepublik China | 1 | 1/14/2020 | 1/24/2020 |
Tokio | Volksrepublik China | 1 | 1/21/2020 | 1/25/2020 |
Präfektur Aichi | Volksrepublik China | 1 | 1/23/2020 | 1/26/2020 |
Präfektur Aichi | Volksrepublik China | 1 | 1/22/2020 | 1/28/2020 |
Präfektur Nara | Präfektur Nara | 1 | 1/14/2020 | 1/28/2020 |
Hokkaido | Volksrepublik China | 1 | 1/26/2020 | 1/28/2020 |
Präfektur Osaka | Präfektur Osaka | 1 | 1/20/2020 | 1/29/2020 |
pvt = df.pivot_table(index="hsp", columns="Date", values="Anzahl der Personen").fillna(0)
pvt = pvt.rename(index = dict(zip(jpn[0], jpn[2]))).rename(index={"Andere":"others"})
pandas hat eine Methode namens pivot_table, mit der Sie buchstäblich eine Pivot-Tabelle erstellen können. (Sie benötigen kein Excel.) Füllen Sie NaN außerdem mit 0.
Benennen Sie es dann von Hokkaido in Hokkaido um. In meiner Umgebung werden Zeichen nicht angezeigt, wenn der Indexname oder der Spaltenname Japanisch enthält. Es scheint, dass es durch die Installation von etwas gelöst wird, aber es wird durch Umbenennen behandelt. (Bitte lassen Sie mich wissen, ob es einen besseren Weg gibt.)
Der Inhalt von jpn [0] sind die Namen von Präfekturen in chinesischen Schriftzeichen wie Hokkaido und Aomori. Der Inhalt von jpn [2] sind die Namen von Präfekturen in römischen Schriftzeichen wie Hokkaido und Aomori.
Koppeln Sie sie mit der "Zip-Funktion", machen Sie sie mit der "Dikt-Funktion" zu einem Wörterbuch und übergeben Sie sie an die "Umbenennungsfunktion". Ändern Sie außerdem "Andere" in "Andere".
Bis zu diesem Punkt sieht der Datenrahmen so aus.
for i in range(len(pvt)):
pvt.iloc[i]=pvt.iloc[i].cumsum()
Extrahieren Sie Zeile für Zeile aus pvt und verwenden Sie die Funktion cumsum ()
von numpy
, um die kumulierte Anzahl von Personen zu ermitteln.
Auf diese Weise wurde es auf die kumulierte Anzahl von Personen aktualisiert.
plt.figure(figsize=(20,10))
sns.heatmap(pvt.iloc[:,-60:] , linewidths=0, cmap='Spectral', cbar=True, xticklabels=5)
plt.savefig("colona.png ")
Ich habe beschlossen, den Tag des jungen Datums von vor 60 Tagen anzuzeigen, da es (zum Glück) nur wenige Infizierte gibt und es sinnlos ist, ihn anzuzeigen.
Sie können :
(Slice) verwenden. Zum Beispiel bedeutet "10: 20" 10 oder mehr und weniger als 20.
Ich konnte die Heatmap so anzeigen.
Recommended Posts