L'intrigue de séries temporelles a commencé ~ édition python ~

introduction

Cet article est l'article du 22ème jour de MicroAd Advent Calendar 2019.

Chose que tu veux faire

Les graphiques de séries chronologiques sont un outil très utile lors de la visualisation des données de journal. Jusqu'à présent, j'ai vécu une telle vie où je me suis échappé en traçant en remplaçant la date sur l'axe horizontal par un nombre approprié. Mais maintenant, c'est différent. Maintenant, vous pouvez bien tracer avec l'axe horizontal dans l'ordre chronologique! Alors, je voudrais résumer l'histoire sous forme de mémorandum. Le graphique créé ici utilise uniquement l'option ** minimum **.

Méthode

Vous pouvez tracer correctement avec matplotlib.dates. Voici un exemple de code.

du quotidien

import io
import pandas as pd
import matplotlib.dates as mdates
import matplotlib.pyplot as plt
from pandas.plotting import register_matplotlib_converters
register_matplotlib_converters()


def main():
    data = """date,value
    2018-12-01,15
    2018-12-02,30
    2018-12-03,25
    2018-12-04,18
    2018-12-05,9
    2018-12-06,22
    2018-12-07,34
    2018-12-08,33
    2018-12-09,28
    2018-12-10,22
    2018-12-11,26
    2018-12-12,31"""
    df = pd.read_csv(io.StringIO(data), parse_dates=[0])

    fig = plt.figure()
    ax = fig.add_subplot(1, 1, 1)
    ax.plot(df['date'], df['value'])

    ##Personnalisez les éléments suivants
    daysFmt = mdates.DateFormatter('%Y-%m-%d')
    ax.xaxis.set_major_formatter(daysFmt)
    fig.autofmt_xdate()

    plt.show()


if __name__ == '__main__':
    main()

La figure créée par ce code est la suivante. qiita.png

Si vous souhaitez modifier un peu la méthode d'affichage,

    daysFmt = mdates.DateFormatter('%Y-%m-%d')

Vous pouvez jouer avec ici.

    daysFmt = mdates.DateFormatter('%m/%d')

Si vous le modifiez comme ci-dessus, l'étiquette de l'axe x ressemblera à ceci: qiita2.png

Par date et heure

Je vais changer un peu les données et l'essayer pour chaque date et heure.


import io
import pandas as pd
import matplotlib.dates as mdates
import matplotlib.pyplot as plt
from pandas.plotting import register_matplotlib_converters
register_matplotlib_converters()


def main():
    data = """date,value
        2018-12-01 00,15
        2018-12-01 01,30
        2018-12-01 02,25
        2018-12-01 03,18
        2018-12-01 04,9
        2018-12-01 05,22
        2018-12-01 06,34
        2018-12-01 07,33
        2018-12-01 08,28
        2018-12-01 09,22
        2018-12-01 10,26
        2018-12-01 11,31"""
    df = pd.read_csv(io.StringIO(data), parse_dates=[0])

    fig = plt.figure()
    ax = fig.add_subplot(1, 1, 1)
    ax.plot(df['date'], df['value'])

    ##Personnalisez les éléments suivants
    daysFmt = mdates.DateFormatter('%m/%d %H:%M')
    ax.xaxis.set_major_formatter(daysFmt)
    fig.autofmt_xdate()

    plt.show()


if __name__ == '__main__':
    main()

Le chiffre obtenu est le suivant. qiita3.png

Changer la fréquence de l'échelle

Si vous souhaitez modifier la fréquence de l'échelle, ajoutez les deux lignes suivantes.

    daysLoc = mdates.HourLocator(byhour=None, interval=3, tz=None)
    ax.xaxis.set_major_locator(daysLoc)

Cela changera la fréquence de l'échelle. qiita4.png C'est devenu un personnage très solitaire. Cette fois, je l'ai défini avec ʻinterval, mais vous pouvez obtenir exactement le même résultat en supprimant l'option ʻinterval et en la définissant avecbyhour = range (2, 12, 3). En plus du HourLocater utilisé ici, il en existe de nombreux tels que MonthLocator, WeekdayLocator, DayLocator, MonthLocator, MinuteLocator, SecondLocator.

Rotation de l'étiquette d'axe

L'étiquette de l'axe est trop longue et dépasse! Dans ce cas, vous pouvez le faire pivoter. Vous pouvez le faire en ajoutant les deux lignes suivantes.

    labels = ax.get_xticklabels()
    plt.setp(labels, rotation=45)

C'est le chiffre obtenu. qiita5.png Vous pouvez voir que l'angle de l'étiquette a changé.

finalement

Voici un résumé des ** options minimales ** dont j'avais besoin pour tracer au fil du temps. Créez un graphique plus compréhensible en fonction de la situation! Maintenant que nous avons la visualisation, c'est l'analyse des séries chronologiques ...

Matériel de référence

matplotlib.dates (document officiel) Réglage de l'axe lors du traçage des données de séries temporelles avec matplotlib + bonus Graphique de séries temporelles Python matplotlib (réglage de l'axe des temps) [Définissez l'échelle de l'axe du graphique des données de séries chronologiques avec matplotlib.dates] (https://bunseki-train.com/setting_ticks_by_matplotlib_dates/)

Recommended Posts

L'intrigue de séries temporelles a commencé ~ édition python ~
[Python] Tracer des données de séries chronologiques
Python: analyse des séries chronologiques
Question sur la série chronologique Python
Diagramme de séries chronologiques / Matplotlib
Série Python 2 et série 3 (édition Anaconda)
Python: analyse des séries chronologiques: prétraitement des données des séries chronologiques
a commencé python
[Python] Accélère le chargement du fichier CSV de séries chronologiques
Commençons avec TopCoder en Python (version 2020)
[Python] Parcelle de violon
Décomposition des séries temporelles
J'ai commencé Python
mesure du temps python
Premier Python
Tracer CSV de données de séries temporelles avec une valeur unixtime en Python (matplotlib)
Python: analyse des séries temporelles: création d'un modèle SARIMA
Obtenez des données de séries chronologiques de k-db.com avec Python
Django 1.11 a démarré avec Python3.6
Algorithme A * (édition Python)
Première 3e édition de Python
1.1 Premiers pas avec Python
Python 3.4 Créer un environnement Windows7-64bit (pour l'analyse des séries chronologiques financières)
Affiche l'heure à partir du moment où le programme a été lancé en python
Premiers pas avec Python
Analyse des séries chronologiques RNN_LSTM1
Analyse des séries chronologiques 1 Principes de base
Sortie du temps d'exécution de python
Fonction de plancher de temps (Python)
[Série chronologique avec plotly] Visualisation dynamique avec plotly [python, cours boursier]
Premiers pas avec Python
python Obtenir l'heure actuelle
Afficher les séries chronologiques TOPIX
J'ai créé un package pour filtrer les séries chronologiques avec python
Reformatez l'axe des temps du graphique de la série chronologique des pandas avec matplotlib
Graphique des données de séries chronologiques en Python à l'aide de pandas et matplotlib
Introduction aux fonctions Python
Application Python: Pandas Partie 2: Série
Mémo de mesure du temps d'exécution Python
PyTorch C ++ VS Python (édition 2019)
Premiers pas avec Python Django (1)
Construction de l'environnement CI ~ Édition Python ~
Premiers pas avec Python Django (4)
Installation de Python (édition Mac) (ancienne)
Premiers pas avec Python Django (3)
Installation de la série Python 3 pour Mac
Mesure du temps d'exécution avec Python avec
Analyse des séries chronologiques partie 4 VAR
Analyse de séries chronologiques Partie 3 Prévisions
Python lancé par des programmeurs C
Introduction à Python Django (6)
Commencez avec Python! ~ ② Grammaire ~
Analyse de séries chronologiques Partie 1 Autocorrélation
Tracer des informations géographiques en Python
Les liaisons Python IfcOpenShell commencent
Synchronisation de l'heure (Windows) avec Python