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.
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)".
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.
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.
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.
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.
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.
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