[PYTHON] Versuchen Sie, die offenen Daten von COVID-19 aus Yokohama / Tokio / Osaka zu verwenden

Hintergrund

Ich bin ein Gehaltsempfänger, der in Yokohama lebt. Es ist zwei Jahre her, seit ich angefangen habe, Python zu machen. Ich habe den # 3 G-Test 2019 und den Test des ersten AI-Implementierers bestanden. Es gibt kein "was Sie tun können". Wenn ich Fernsehberichte über COVID-19 sehe, habe ich große Angst, aber manchmal Ist es in Ordnung? Ich dachte, oder um es einfach auszudrücken, ich fühlte mich wie im Fernsehen. Können Sie die Situation nicht selbst herausfinden? Ich dachte, das wäre der Auslöser.

Ich habe den Umfang eingegrenzt

Das ist der Grund.

Ich habe auch Kaggles CORD-19 gesehen, aber ... Englisch ...

was ist zu tun

Ich habe Google nach [Tokyo Open Data Corona] durchsucht und gefunden.

CIO-Portal der Regierung

Beziehen Sie sich von hier aus auf die Daten und versuchen Sie zuerst die grafische Darstellung.

1. Erstellen Sie eine Link-CSV für die URL offener Daten

elements url
tokyo_consultation https://stopcovid19.metro.tokyo.lg.jp/data/130001_tokyo_covid19_combined_telephone_advice_center.csv
tokyo_call https://stopcovid19.metro.tokyo.lg.jp/data/130001_tokyo_covid19_call_center.csv
tokyo_confirm https://stopcovid19.metro.tokyo.lg.jp/data/130001_tokyo_covid19_patients.csv
kanagawa_confirm http://www.pref.kanagawa.jp/osirase/1369/data/csv/patient.csv
kanagawa_consultation http://www.pref.kanagawa.jp/osirase/1369/data/csv/contacts.csv
kanagawa_returnee http://www.pref.kanagawa.jp/osirase/1369/data/csv/querent.csv
osaka_confirm http://www.pref.osaka.lg.jp/attach/23711/00346644/youseisyajyouhou.xlsx

2. Stellen Sie eine einfache kumulative Zahl aus Index- und Datumsdaten grafisch dar

Bibliothek importieren

import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
from datetime import datetime as dt
#↓ Ich habe immer gesagt
plt.close('all')

Datenrahmen und Verarbeitung von Daten

Da das Format in jeder Präfektur unterschiedlich ist, ist jeder Prozess


'''
##########################################
0.Tokyo Metropolitan New Corona Beratungsservice Anzahl der Konsultationen [neu]
1.Anzahl der Konsultationen im neuen Corona Call Center in Tokio [neu]
2.Tokio_Details zur Ankündigung eines neuen Coronavirus-positiven Patienten
3.Präfektur Kanagawa_Anzahl und Eigenschaften positiver Patienten
4.Präfektur Kanagawa_Anzahl der dedizierten Wählkonsultationen
5.Präfektur Kanagawa_Telefonische Beratungsstelle für Rückkehrer / Kontaktpersonen Anzahl der Konsultationen
6.Präfektur Osaka_Status des positiven Auftretens des Patienten
##########################################
'''
#Listen Sie die Nummern auf, die in dieser Liste angezeigt werden sollen
#Entspricht der Anzahl der Patienten 2,3,Setze 6 in die Liste ein
sel_list = [2, 3, 6]

for sel_num in sel_list:
    #Laden Sie csv mit jeder URL
    url_df = pd.read_csv('opendata.csv')
    if sel_num < 3: #Für Tokio-Daten
        df = pd.read_csv(url_df.loc[sel_num,'url'], encoding='utf-8')
    elif sel_num == 6: #Für Osaka-Daten
        df = pd.read_excel(url_df.loc[sel_num,'url'], encoding='shift_jis',header=1)
    else: #Für Kanagawa-Daten
        df = pd.read_csv(url_df.loc[sel_num, 'url'], encoding='shift-jis')

    #Für Tokio-Daten
    if sel_num == 2:
        fig1 = plt.figure()
        ax1 = fig1.add_subplot()
        #Da es nicht auf Japanisch angezeigt werden kann, wechseln Sie zur alphabetischen Notation
        df = df.rename(columns={'Veröffentlicht_Datum': 'date', 'No':'Tokyo'})
        df['date'] = pd.to_datetime(df['date'],format='%Y-%m-%d')
        df = df.set_index('date')
        df['Tokyo'].plot(ax=ax1, legend=True)
    
    #Für Kanagawa-Daten
    elif sel_num == 3:
        df = df.rename(columns={'Ankündigungsdatum': 'date'})
        df['date'] = pd.to_datetime(df['date'],format='%Y-%m-%d')
        df = df.set_index('date')
        #Da es keine Indexnummer gibt, werde ich es schaffen
        serial_num = pd.RangeIndex(start=1, stop=len(df.index) + 1, step=1)
        #Ändern Sie den Spaltennamen für den Legendennamen in Kanagawa
        df['Kanagawa'] = serial_num
        df['Kanagawa'].plot(ax=ax1, legend=True)
    
    #Für Osaka-Daten
    elif sel_num == 6:
        df = df.rename(columns={'Nummer':'num', 'Datum der Berichterstattung': 'date'})
        #Konvertieren Sie Excel-Datumsdaten
        excel_time = datetime.date(1899, 12, 30)
        ##Verarbeiten Sie jede Zeile mit Iteration
        #Durch das Ersetzen von DataFrame wird eine Liste erstellt und überschrieben
        new_date = []
        for index, row in df.iterrows():
            new_date.append(excel_time + datetime.timedelta(row['date']))        
        df['date'] = new_date
        
        df['Osaka'] = df['num']
        df = df.set_index('date')
        df['Osaka'].plot(ax=ax1, legend=True) 

3. Wo ich mir Sorgen machte - Excel-Zeitnotation -

Ich habe mich gefragt, ob es sich um eine UNIX-Zeitnotation handelt, aber ich habe Excel-spezifische Datumsnummern verwendet. Ich habe diese Seite gefunden, auf der ich sie gelesen habe.

Konvertieren Sie die "Anzahl" des Excel-Datums in die Python-Datumszeit

Ich konnte mir nicht helfen.

4. Ergebnis

Figure_1.png

5. Eindrücke

Ich konnte eine kumulative Grafik erstellen. Der Code ist nicht klug. Das ist vorerst alles für heute. Python hat viele Websites, die Ihnen genau sagen, was Sie tun möchten Es besteht ein Gefühl der Sicherheit, dass Sie in Schwierigkeiten etwas tun können. Die Datums- / Uhrzeitnotation in Excel kannte ich jedoch nicht.

Recommended Posts

Versuchen Sie, die offenen Daten von COVID-19 aus Yokohama / Tokio / Osaka zu verwenden
Tokyo Corona: Machen Sie mit der Exponentialfunktion kurve_fit eine einfache Vorhersage aus offenen Daten
Holen Sie sich Daten von Twitter mit Tweepy
Versuchen Sie es mit Amazon DynamoDB von Python
Versuchen Sie es mit der Datenintegrationsfunktion von scanpy (sc.tl.ingest).
Versuchen Sie, mit django-import-export csv-Daten zu django hinzuzufügen
Senden Sie Daten von Raspberry Pi mit AWS IOT
Verschlüsseln / Entschlüsseln von Daten aus Golang mit Azure KeyVault