[PYTHON] Jouons avec les données Amedas - Partie 1

Je voudrais traiter certaines données dans le cadre d'une étude des réseaux de neurones. J'ai donc décidé de jouer avec les données Amedas, qui semblent être facilement disponibles. Il semble que les données peuvent être téléchargées à partir de l'URL suivante.

https://www.jma.go.jp/jma/menu/menureport.html

Météorologie → Télécharger les données météorologiques passées

Donc, il semble que vous puissiez obtenir les données appropriées au moment approprié. Il semble que la quantité de données pouvant être téléchargées en une seule fois soit limitée, définissez-la de manière appropriée et essayez de télécharger. Cette fois, j'ai utilisé les données de la ville de Matsumoto, préfecture de Nagano, que je fais souvent du jogging.

matsu.jpg

L'élément sélectionné est ... ■ Température ■ Direction / vitesse du vent ■ Météo Trois de. Après avoir sélectionné la période appropriée et cliqué sur le bouton "Télécharger le fichier CSV", le téléchargement a réussi.

Quand je l'ouvre, cela ressemble à un format étrange. matsu_data.jpg

Il y a un en-tête, mais il est peut-être un peu cassé. Afin d'analyser avec Tensorflow, il est nécessaire d'importer des données dans Python, mais cette fois j'utiliserai Pandas. Ensuite, il semble qu'il existe des restrictions sur le fichier CSV. Probablement ...

Est-ce là? Je ne peux pas l'utiliser tel quel, et comme la direction du vent est japonaise, j'ai décidé de le convertir en une valeur numérique.

Je pense que l'utilisation de Script comme Perl est la voie royale pour ce genre de choses, mais comme l'environnement que j'utilise est Windows, j'écrirai facilement un programme avec VBS. Que diriez-vous de quelque chose comme ce qui suit? (Est-ce correct de publier ce genre de chose ?? ... Ceux qui l'utilisent sont à leurs risques et périls)

transCSV.vbs


if WScript.Arguments.Count = 0 then
    WScript.echo("too few arguments.")
    WScript.Quit(-1)
end if

Set objFso = CreateObject("Scripting.FileSystemObject")
FileName = WScript.Arguments(0)

if objFso.FileExists(FileName) = 0 then
    WScript.echo("filename err")
    WScript.Quit(-1)
end if


tmpFileName = split(FileName,".")
outFileName = tmpFileName(0) & "_out." & tmpFileName(1)


Set objReadFile = objFso.OpenTextFile(FileName , 1, False)
Set objWriteFile = objFso.OpenTextFile(outFileName , 2, True)

If Err.Number > 0 Then
    WScript.Echo "Open Error"
Else
    ' write header
    objWriteFile.WriteLine "year,month,day,hour,temp,wind,angle,weather,"
    line_cnt = 0
    Do Until objReadFile.AtEndOfStream
        line_str = objReadFile.ReadLine
        If line_cnt > 5 then
            line_info = split(line_str,",")
            yearValue = split(split(line_info(0)," ")(0),"/")(0)
            monthValue = split(split(line_info(0)," ")(0),"/")(1)
            dayValue = split(split(line_info(0)," ")(0),"/")(2)
            hourValue = split(split(line_info(0)," ")(1),":")(0)
            temp = line_info(1)
            wind = line_info(4)
            
            strAngle = line_info(6)
            
            weather = line_info(9)

            If Not(len(temp)=0 or len(wind)=0 or len(strAngle)=0 or len(weather)=0) then
                If strcomp(strAngle,"Nord") = 0 then
                    angle = 0
                ElseIf strcomp(strAngle,"Nord-nord-ouest") = 0 then
                    angle = 1
                ElseIf strcomp(strAngle,"Nord-nord-ouest") = 0 then
                    angle = 2
                ElseIf strcomp(strAngle,"Nord Ouest") = 0 then
                    angle = 3
                ElseIf strcomp(strAngle,"Ouest-nord-ouest") = 0 then
                    angle = 4
                ElseIf strcomp(strAngle,"Ouest") = 0 then
                    angle = 5
                ElseIf strcomp(strAngle,"Ouest-sud-ouest") = 0 then
                    angle = 6
                ElseIf strcomp(strAngle,"Sud-ouest") = 0 then
                    angle = 7
                ElseIf strcomp(strAngle,"Sud-sud-ouest") = 0 then
                    angle = 8
                ElseIf strcomp(strAngle,"Sud") = 0 then
                    angle = 9
                ElseIf strcomp(strAngle,"Sud-sud-est") = 0 then
                    angle = 10
                ElseIf strcomp(strAngle,"Sud-est") = 0 then
                    angle = 11
                ElseIf strcomp(strAngle,"Est-sud-est") = 0 then
                    angle = 12
                ElseIf strcomp(strAngle,"est") = 0 then
                    angle = 13
                ElseIf strcomp(strAngle,"Est-nord-est") = 0 then
                    angle = 14
                ElseIf strcomp(strAngle,"Nord-est") = 0 then
                    angle = 15
                ElseIf strcomp(strAngle,"Nord-nord-est") = 0 then
                    angle = 16
                End If
                line_out_str = yearValue
                line_out_str = line_out_str & "," & monthValue
                line_out_str = line_out_str & "," & dayValue
                line_out_str = line_out_str & "," & hourValue
                line_out_str = line_out_str & "," & temp
                line_out_str = line_out_str & "," & wind
                line_out_str = line_out_str & "," & angle
                line_out_str = line_out_str & "," & weather
                objWriteFile.WriteLine line_out_str
            End If
        End If
        line_cnt = line_cnt + 1
    Loop
End If


objReadFile.Close
objWriteFile.Close
Set objReadFile  = Nothing
Set objFso = Nothing

WScript.Echo FileName & " > " & outFileName & " transport end!"

Pour ce faire, depuis la ligne de commande:

cscript transCSV.vbs data.csv

Ensuite, data_out.csv a été créé dans le même dossier. (Affichage à mi-chemin)

data_out.csv


hour,temp,wind,angle,weather,
1,-3.0,1.8,0,2
2,-3.2,1.7,3,2
3,-4.1,1.1,0,2
4,-4.6,1.1,9,2
5,-4.6,1.0,12,2
6,-4.5,0.6,14,2
7,-5.1,1.0,0,2
8,-4.2,0.7,16,2
9,-2.7,0.5,13,2

Vous êtes maintenant prêt à importer avec Pandas. En référence à d'autres exemples, il semble qu'il puisse être importé avec le code Python suivant.

import pandas as pd
import numpy as np
import tensorflow as tf

# deta making???
csv_input = pd.read_csv(filepath_or_buffer="data_out.csv", encoding="ms932", sep=",")

#Nombre d'éléments d'entrée (nombre de lignes)*Le nombre de colonnes) sera renvoyé.
print(csv_input.size)

#Renvoie l'objet DataFrame extrait uniquement pour la colonne spécifiée.
x = np.array(csv_input[["hour","day","month"]])
y = np.array(csv_input[["wind"]])

Alors, comment jouez-vous à partir d'ici ??? Tout d'abord, je vais essayer l'analyse de régression en utilisant un réseau de neurones (prédire y à partir de x) ... mais c'est devenu un peu plus long, donc je vais le reporter à la prochaine fois. Je n'ai pas eu beaucoup de temps ces derniers temps, mais j'ai l'intention d'écrire plus quelque part ... Je ferai de mon mieux.

Recommended Posts

Jouons avec les données Amedas - Partie 1
Jouons avec les données Amedas - Partie 4
Jouons avec les données Amedas - Partie 3
Jouons avec les données Amedas - Partie 2
Jouons avec la 4e dimension 4e
Jouons avec Excel avec Python [Débutant]
Jouez avec Prophet
[Introduction à WordCloud] Jouez avec le scraping ♬
[Complément] [PySide] Jouons avec Qt Designer
Jouez avec PyTorch
Jouez avec 2016-Python
Jouez avec CentOS 8
Jouez avec Pyramid
Jouez avec Fathom
Jeu à la main en Python (commençons avec AtCoder?)
[Piyopiyokai # 1] Jouons avec Lambda: création d'une fonction Lambda
Jouer avec Othello (Reversi)
[Jouons avec Python] Créer un livre de comptes de ménage
Jouons avec JNetHack 3.6.2 qui est plus facile à compiler!
[Piyopiyokai # 1] Jouons avec Lambda: créez un compte Twitter
[Piyopiyokai # 1] Jouons avec Lambda: création d'un script Python
Jouez avec les notifications push avec imap4lib
Jouez avec les partitions Linux
Faisons Othello avec wxPython
Jouer avec Jupyter Notebook (IPython Notebook)
[Python] Jouez avec le Webhook de Discord.
[Jouons avec Python] Traitement d'image en monochrome et points
Écrivons python avec cinema4d.
Faisons R-CNN avec Sklearn-theano
Construisons git-cat avec Python
Jouez avec le module MD de ASE
Jouez avec A3RT (texte suggéré)
[Jouons avec Python] Viser la génération automatique de phrases ~ Achèvement de la génération automatique de phrases ~
Téléchargeons des fichiers S3 avec CLI
Jouez avec une tortue avec des graphiques de tortue (partie 1)
Faisons une interface graphique avec python.
Jouez avec la série Poancare et SymPy
HTTPS avec Django et Let's Encrypt
Apprenons Deep SEA avec Selene
Faisons une rupture de bloc avec wxPython
Faisons l'IA d'Othello avec Chainer-Part 1-
Jouer avec l'implémentation de l'interface utilisateur Pythonista [Action implementation]
Jouez avec le module de capteur PIR [DSUN-PIR]
Jouez avec les partitions Linux ~ Suite ~
Faisons du scraping d'images avec Python
Faisons un graphe avec python! !!
Faisons un spacon avec xCAT
Faisons l'IA d'Othello avec Chainer-Part 2-
Spark play avec WSL anaconda jupyter (2)
Reconnaissons les émotions avec Azure Face
Jouez avec Turtle sur Google Colab
Jouez avec les démons parce que c'est une section
Analysons la voix avec Python # 1 FFT
Jouons avec le jeu de données d'analyse d'entreprise "CoARiJ" créé par TIS ①
Créons un modèle de reconnaissance d'image avec vos propres données et jouons!
[Jouons avec Python] Viser la génération automatique de phrases ~ Effectuer une analyse morphologique ~