[PYTHON] Verwendung vergangener Wetterdaten 4 (Wettergefühle während der Olympischen Spiele in Tokio)

Die Meteorologische Agentur wird historische Wetterdaten bis Ende März 2020 kostenlos zur Verfügung stellen. (Referenz) Nutzungsumgebung vergangener Wetterdaten https://www.data.jma.go.jp/developer/past_data/index.html

Die grundlegenden Wetterdaten lauten "Jeder kann sie unabhängig von Zweck und Verwendungszweck verwenden", daher werden wir anhand der Wetterdaten etwas unternehmen.

Sie können es auch von der Seite "Past Meteorological Data Download" der Meteorological Agency herunterladen. Dies ist jedoch sehr praktisch, da Sie alles auf einmal herunterladen können. Die verfügbaren Daten sind unten aufgeführt. https://www.data.jma.go.jp/developer/past_data/data_list_20200114.pdf Die Frist kommt bald. Wenn Sie sie benötigen, laden Sie sie frühzeitig herunter.

Dieses Mal werde ich versuchen, das Wetter während der Olympischen Spiele in Tokio in Buchstaben auszudrücken. WordCloud (1.6.0) wird zum Anzeigen von Zeichen verwendet.

Daten herunterladen

Verwenden Sie wie bei "Verwendung vergangener Wetterdaten 2 (Änderung der Maximaltemperatur während der Olympischen Spiele in Tokio)" "Bodenwetterbeobachtung" - "Stunden- / Tageswert". Überprüfen Sie Folgendes für das Dateiformat. http://data.wxbc.jp/basic_data/kansoku/surface/format_surface.pdf

Laden Sie die Datei in den Oberflächenordner herunter. Es braucht Zeit, weil es eine Kapazität von ca. 2 GB hat.

import os
import urllib.request

#Download der stündlichen / täglichen Wertwetterbeobachtungsdatei
url    = 'http://data.wxbc.jp/basic_data/kansoku/surface/hourly_daily_1872-2019_v191121.tar'
folder = 'surface'
path   = 'surface/hourly_daily_1872-2019_v191121.tar'
#Ordner erstellen
os.makedirs(folder, exist_ok=True)
if not os.path.exists(path):
    #herunterladen
    urllib.request.urlretrieve(url, path)

Einzelheiten zur Datei finden Sie unter "Verwendung vergangener Wetterdaten 2 (Änderung der Maximaltemperatur während der Olympischen Spiele in Tokio)".

Wetterdaten lesen

Für die Wetterdaten werden "Tag" - und "Nacht" -Daten als allgemeine Wetterbedingungen gespeichert. Dieses Mal werden wir die "Tages" -Daten verwenden. Die Wetterübersicht besteht aus bis zu vier Wetter- und Konnektiva. Wenn es zum Beispiel den ganzen Tag sonnig ist, ist es "gut".

Code Verbindung
0 Keine Daten
1 Leer
2 Temporär
3 Manchmal
4 Rückseite
5 Vorübergehend danach
6 Manchmal später
7 Begleitet von (begleitet von ○○)
Code Wetter Code Wetter Code Wetter
0 Kein Wetter 10 Mizore 20 Wind
1 Sonnig 11 Schnee 21 Donner
2 Fein 12 starker Schneefall 22 Hagelkorn
3 Lichtwolke 13 Schneesturm 23 Leopard
4 Wolkig 14 Fubuki 24 Wind und Donner
5 Nebel 15 Fubuki 25 Donner und Hagel
6 Nebelregen 16 Reservieren 26 Donner / Hyo
7 Regen 17 Reservieren 27 Donner / Nebel
8 Starkregen 18 Reservieren 28 Kein Niederschlag
9 Sturm 19 Reservieren 29 Es ist ein sonniger Tag
30 Reservieren
31 ×

"Starker Regen" wird verwendet, wenn es 30 mm oder mehr regnet. Weitere Informationen finden Sie auf der folgenden Website. http://www.data.jma.go.jp/obd/stats/data/mdrr/man/gaikyo.html

Bereiten Sie eine Liste für die Konvertierung vor.

conjunction = ['Keine Daten', 'Leer', 'Temporär', 'Manchmal', 'Rückseite', 'RückseiteTemporär', 'RückseiteManchmal', '、']
conjunction7 = 'Begleitet von'
weather = ['Kein Wetter', 'Sonnig', 'Fein', 'Lichtwolke', 'Wolkig', 'Nebel', 'NebelRegen', 'Regen', '大Regen', '暴風Regen',
           'Mizore', 'Schnee', '大Schnee', '暴風Schnee', 'Fubuki', '地Fubuki', 'Reservieren', 'Reservieren', 'Reservieren', 'Reservieren',
           'Wind', 'Donner', 'Hagelkorn', 'Leopard', 'Wind・Donner', 'Donner・Hagelkorn', 'Donner・Leopard', 'Donner・霧', 'Kein Niederschlag', 'Es ist ein sonniger Tag',
           'Reservieren', '×']

Das Verbindungswort wird im Allgemeinen vor das Wetter gestellt, aber im Fall von "begleitet" ist das Wetter (der Teil von XX) in der Mitte wie "begleitet von XX".

Laden Sie Daten in einen Pandas-Datenrahmen. Die Wetterübersicht wird ab dem 1500. Byte eines jeden Tages gespeichert. Lesen Sie, während Sie Zahlen in Zeichen umwandeln. Fügen Sie zwischen jedem Wort ein Leerzeichen ein, um es später in WordCloud anzuzeigen. WordCloud zerlegt keine Wörter. Sie müssen es in Worte zerlegen und im Voraus weitergeben.

#Erstellen eines Datenrahmens für die Datenspeicherung
import pandas as pd

tokyo_df = pd.DataFrame()
#Wetterübersicht erhalten
import tarfile

#Punkteinstellung=Tokio
p_no = '662'

#Holen Sie sich die in der TAR-Datei enthaltenen Dateien
with tarfile.open(path, 'r') as tf:
    for tarinfo in tf:
        if tarinfo.isfile():
            # tar.Holen Sie sich die in der gz-Datei enthaltenen Dateien
            with tarfile.open(fileobj=tf.extractfile(tarinfo), mode='r') as tf2:
                for tarinfo2 in tf2:
                    if tarinfo2.isfile():
                        #Schreibgeschützte Dateien mit übereinstimmenden Punkten
                        if tarinfo2.name[-3:] == p_no:
                            print(tarinfo2.name)
                            #Datei öffnen
                            with tf2.extractfile(tarinfo2) as tf3:
                                lines = tf3.readlines()
                                for line in lines:
                                    #Ignorieren Sie Dateien, die keine Daten enthalten
                                    if line[0:3] == b'   ':
                                        continue
                                    #Jahr
                                    year = line[14:18].decode()
                                    #Zeit
                                    date = line[18:22].decode().replace(' ', '0')
                                    #Wetterübersicht erhalten
                                    conditions = ''
                                    p = 1500
                                    #
                                    for i in range(4):
                                        #Verbindung
                                        c = int(line[p:p+1])
                                        c_rmk = int(line[p+1:p+2])
                                        if c_rmk == 8:
                                            conditions += conjunction[c] + ' '
                                        #Wetter
                                        w = int(line[p+2:p+4])
                                        w_rmk = int(line[p+4:p+5])
                                        if w_rmk == 8:
                                            conditions += weather[w] + ' '
                                            if c == 7: #Wenn von 〇〇 begleitet, befestigen Sie es an der Rückseite.
                                                conditions += conjunction7 + ' '
                                        p += 5

                                    #Datenspeicher
                                    tokyo_df.loc[year, date] = conditions

Überprüfen Sie die Daten.

#Datenbestätigung
tokyo_df

Früher gab es keine Wetterinformationen. Es scheint, dass das aktuelle Format nach 1989 ist, also werde ich die Daten nach 1989 herausnehmen. Das Datum wird die olympische Periode sein.

tokyo_olympic_df = tokyo_df.loc['1989':'2019','0724':'0809']
tokyo_olympic_df

Das Wetter ist richtig.

Anzeige durch Word Cloud

Lassen Sie uns das Wetter mit WordCloud anzeigen. Die Größe der Buchstaben ändert sich entsprechend der Anzahl der Wörter, die unter den Wetterbedingungen verwendet werden. Es ist möglicherweise nicht möglich, das Wetter genau wiederzugeben, aber Sie sollten sich eine ungefähre Vorstellung von der Situation machen können, da "gut" den ganzen Tag für "gut" und "vorübergehend bewölkt" als gleich gezählt wird. Es enthält auch ein Verbindungswort, aber lassen Sie es so, wie es ist, um die Änderung des Wetters anzuzeigen.

Lassen Sie uns zunächst jedes Jahr das Wetter während der Olympischen Zeit überprüfen. Für jedes Jahr kombinieren wir die Wetterübersichtszeichenfolgen und übergeben sie an WordCloud. Es ist ein Punkt zu beachten.

import matplotlib.pyplot as plt
from wordcloud import WordCloud
#Anzeige nach Jahr
i = 1
plt.figure(figsize=(16, 33))
for row in tokyo_olympic_df.index:
    text = ''
    for column in tokyo_olympic_df.columns:
        text += tokyo_olympic_df.loc[row, column]
    #Charakterbilderstellung mit WordCloud
    wordcloud = WordCloud(colormap='jet', font_path="msgothic.ttc", regexp="\w+").generate(text)
    plt.subplot(11,3,i)
    plt.imshow(wordcloud)
    plt.title(row)
    plt.axis("off")
    i += 1
plt.show()

Das Ergebnis. Eigentlich wäre es schön, wenn die Textfarbe je nach Wetterlage wie Schönwetter und Regen geändert werden könnte, aber die Textfarbe scheint zufällig ausgewählt zu werden. Je nach Jahr gibt es einige Variationen, aber es ist meist sonnig und bewölkt. WordCloud_year.png

Nach Datum.

#Anzeige nach Datum
i = 1
plt.figure(figsize=(16, 18))
for column in tokyo_olympic_df.columns:
    text = ''
    for row in tokyo_olympic_df.index:
        text += tokyo_olympic_df.loc[row, column]
    #Charakterbilderstellung mit WordCloud
    wordcloud = WordCloud(colormap='jet', font_path="msgothic.ttc", regexp="\w+").generate(text)
    plt.subplot(6,3,i)
    plt.imshow(wordcloud)
    plt.title(column)
    plt.axis("off")
    i += 1
plt.show()

Es ist Hochsommer, also ist es sonnig. WordCloud_date.png

Wettergefühl Kalender

Da es eine große Sache ist, erstellen wir einen Wetterkalender. Es ist für ein Jahr. 2019 wird bis 2018 sein, da es nur halbe Daten gibt. Auch der 29. Februar des Uru-Jahres wurde gestrichen.

tokyo_365_df = tokyo_df.loc['1989':'2018']
tokyo_365_df = tokyo_365_df.drop('0229', axis=1)
tokyo_365_df
#Anzeige nach Datum
i = 1
plt.figure(figsize=(16, 40))
for column in tokyo_365_df.columns:
    text = ''
    for row in tokyo_365_df.index:
        text += tokyo_365_df.loc[row, column]
    #Charakterbilderstellung mit WordCloud
    wordcloud = WordCloud(colormap='jet', font_path="msgothic.ttc", regexp="\w+").generate(text)
    plt.subplot(37,10,i)
    plt.imshow(wordcloud)
    plt.title(column)
    plt.axis("off")
    i += 1
plt.show()

Es ist ein Kalender für ein Jahr in Tokio. WordCloud_tokyo.png

Während der Regenzeit macht sich der Regen bemerkbar. Am 10. Oktober, als die Eröffnungsfeier der letzten Olympischen Spiele in Tokio stattfand, die ein besonderer Tag mit schönem Wetter sein soll, scheint es weniger zu regnen als in den umliegenden Daten. Ich denke, es ist ein besonderer Tag mit schönem Wetter.

Punkte können durch Ändern der Punktnummer von "p_no =" 662 "adressiert werden. Wenn Sie einen Kalender für Ihren lokalen Standort erstellt haben, ändern Sie die Standortnummer. Sie können die Punktnummer in der Punktinformationsverlaufsdatei (smaster_201909.tar.gz) überprüfen.

Dies ist ein Beispiel für Sapporo (412). Im Winter liegt viel Schnee.

WordCloud_sapporo.png

Dieses Mal habe ich versucht, das Wetter durch die Größe der Buchstaben auszudrücken. Es ist genauer, es numerisch oder in einem Diagramm auszudrücken, aber es ist intuitiv und interessant, es in Zeichengröße auszudrücken.

Die Daten werden bis Ende März 2020 veröffentlicht. Wenn Sie sie benötigen, empfehlen wir Ihnen, sie so bald wie möglich herunterzuladen.

Recommended Posts

Verwendung vergangener Wetterdaten 4 (Wettergefühle während der Olympischen Spiele in Tokio)
Verwendung vergangener Wetterdaten 1 (Amedas Punktanzeige)
Verwendung früherer meteorologischer Daten 3 (Zeitreihen-Wärmekartenanzeige des Niederschlags bei starkem Regen)
Verwenden wir die offenen Daten von "Mamebus" in Python
Versuchen Sie, COVID-19 Tokyo-Daten mit Python zu kratzen
Datenanalyse basierend auf den Wahlergebnissen der Gouverneurswahl von Tokio (2020)
Verwenden Sie PyCaret, um den Preis von Gebrauchtwohnungen in Tokio vorherzusagen!
Erläutern Sie den Mechanismus der PEP557-Datenklasse
Holen Sie sich die Spaltenliste und Datenliste von CASTable
Visualisieren Sie die Exportdaten des Piyo-Protokolls