[PYTHON] Utilisez la date sur l'axe des x du tsplot représenté dans seaborn

Convertir l'index DataFrame en DatetimeIndex lors du sous-échantillonnage (http://qiita.com/TomHortons/items/9633394afb55bd777fa0#4-%E3%82%B5%E3%83%B3%E3%83%97 % E3% 83% AB% E9% 96% 93% E9% 9A% 94% E3% 81% 8C% E3% 81% BE% E3% 81% B0% E3% 82% 89% E3% 81% AA% E3 % 83% 87% E3% 83% BC% E3% 82% BF% E3% 82% 92% E3% 83% 80% E3% 82% A6% E3% 83% B3% E3% 82% B5% E3% 83 % B3% E3% 83% 97% E3% 83% AA% E3% 83% B3% E3% 82% B0% E3% 81% 99% E3% 82% 8B), ce qui est très pratique, mais à partir de là sns.tsplot Il faut beaucoup de temps pour visualiser avec.

À titre d'exemple, créez un DataFrame.

import datetime
import pandas as pd

df = []
start_date = datetime.datetime(2015, 7, 1)
for i in range(10):
    for j in [1,2]:
        unit = 'Ones' if j == 1 else 'Twos'
        date = start_date + datetime.timedelta(days=i)
        df.append({
                'Date': date,
                'Value': i * j,
                'Unit': unit
            })
df = pd.DataFrame(df)

Une fois exécuté, un DataFrame contenant les colonnes de type Datetime suivantes sera créé.


Date	Unit	Value
0	2015-07-01	Ones	0
1	2015-07-01	Twos	0
2	2015-07-02	Ones	1
3	2015-07-02	Twos	2
4	2015-07-03	Ones	2
5	2015-07-03	Twos	4
6	2015-07-04	Ones	3
7	2015-07-04	Twos	6
8	2015-07-05	Ones	4
9	2015-07-05	Twos	8
10	2015-07-06	Ones	5
11	2015-07-06	Twos	10
12	2015-07-07	Ones	6
13	2015-07-07	Twos	12
14	2015-07-08	Ones	7
15	2015-07-08	Twos	14
16	2015-07-09	Ones	8
17	2015-07-09	Twos	16
18	2015-07-10	Ones	9
19	2015-07-10	Twos	18

Si vous décrivez ce DataFrame avec sns.tsplot,

import seaborn as sns
import matplotlib.pyplot as plt

sns.tsplot(df, time='Date', value='Value', unit='Unit')

download.png

La date et l'heure ne sont pas affichées normalement même si la date est spécifiée sur l'axe horizontal. Si vous utilisez DataFrame.plot (), cette zone s'affichera en douceur, mais si vous utilisez tsplot, vous voulez certainement utiliser seaborn.

Les questions autour de ce domaine ont été résumées dans StackOverflow.

Screen Shot 2017-07-26 at 15.14.07.png

Matplotlib utilise des nombres à virgule flottante pour les dates, et les pandas et les marins semblent avoir besoin de les indiquer explicitement. Par conséquent, utilisez le localisateur de date et le formateur de date.

Tout d'abord, convertissez la date pour que matplotlib.date puisse la comprendre.

import datetime
import pandas as pd
import matplotlib.dates as mdates

df = []
start_date = datetime.datetime(2015, 7, 1)
for i in range(10):
    for j in [1,2]:
        unit = 'Ones' if j == 1 else 'Twos'
        date = start_date + datetime.timedelta(days=i)

        df.append({
                'Date': mdates.date2num(date),
                'Value': i * j,
                'Unit': unit
            })
df = pd.DataFrame(df)

C'est presque le même que le premier DataFrame, mais avant de mettre la date dans Date, il est converti par matplotlib.dates.date2num ().

Vous pouvez également traiter le DataFrame existant avec la carte comme suit.

df.index = map(lambda x: mdates.date2num(x), df.index)

Après avoir converti Date, dessinez tsplot.

import seaborn as sns
import matplotlib.pyplot as plt

# build the figure
fig, ax = plt.subplots()
sns.tsplot(df, time='Date', value='Value', unit='Unit', ax=ax)

# assign locator and formatter for the xaxis ticks.
ax.xaxis.set_major_locator(mdates.AutoDateLocator())
ax.xaxis.set_major_formatter(mdates.DateFormatter('%Y.%m.%d'))

Après avoir spécifié ax dans le sous-tracé, définissez l'axe avec set_major_locator et set_major_formatter. Ici,% Y.% M.% D est modifié si nécessaire.

Une fois exécuté, cela ressemble à ceci.

download.png

La date peut être affichée sur l'axe des x. Inclinez l'angle des lettres de 45 degrés pour mieux voir les parties qui se chevauchent.

# put the labels at 45deg since they tend to be too long
fig.autofmt_xdate()

download.png

J'ai pu utiliser la date sur l'axe des x en toute sécurité. ** Il existe plusieurs façons d'incliner l'affichage de l'axe, mais sachez que la date peut avoir été déformée plusieurs fois selon la méthode. ** **

Recommended Posts

Utilisez la date sur l'axe des x du tsplot représenté dans seaborn
Erreur de date de l'adresse déjà utilisée dans Flask
Comparaison de l'utilisation des fonctions d'ordre supérieur dans Python 2 et 3
Utilisez <input type = "date"> avec Flask
Résumé de l'utilisation de pandas.DataFrame.loc
Comment utiliser les classes dans Theano
Mock in python - Comment utiliser mox
Comment utiliser SQLite en Python
Résumé de l'utilisation de pyenv-virtualenv
Utilisez PyCaret pour prédire le prix des appartements d'occasion à Tokyo!
Comment utiliser ChemSpider en Python
Comment utiliser PubChem avec Python
Résumé de l'utilisation de csvkit
J'ai essayé différents modèles de chaînes de date à saisir dans pandas.to_datetime
Comment utiliser les colonnes calculées dans CASTable
Conversion de la chaîne <-> date (date, datetime) en Python
[Python] Résumé de l'utilisation des pandas
[Introduction à Python] Comment utiliser la classe en Python?
Utilisation du fichier de contraintes ajouté dans pip 7.1
Comment utiliser Google Test en langage C
Un moyen simple d'utiliser Wikipedia avec Python
Connaissances minimales pour utiliser Form avec Flask
[Python2.7] Résumé de l'utilisation d'unittest
Comment utiliser l'interpréteur d'Anaconda avec PyCharm
R: Utilisez le japonais au lieu du japonais dans le script
Comment utiliser __slots__ dans la classe Python
Jupyter Notebook Principes d'utilisation
Bases de PyTorch (1) -Comment utiliser Tensor-
Résumé de l'utilisation de la liste Python
Comment utiliser les expressions régulières en Python
[Python2.7] Résumé de l'utilisation du sous-processus
Comment utiliser Map dans ViewPager d'Android
Comment utiliser is et == en Python
[Question] Comment utiliser plot_surface de python
Obtenez le résultat du GeoCoding inversé en japonais à l'aide du SDK Java de GoogleMapsAPI.
Je souhaite utiliser Python dans l'environnement de pyenv + pipenv sous Windows 10
Comment utiliser la bibliothèque C en Python
Comment utiliser Folium (visualisation des informations de localisation)
[Python] Comment utiliser deux types de type ()
Comment suivre le travail avec Powershell
Convertir le «nombre» de date Excel en date / heure Python
Résumé de la façon d'importer des fichiers dans Python 3
Comment utiliser la bibliothèque d'images Python dans la série python3
Pas beaucoup de mention de la façon d'utiliser Pickle
EP 11 Utiliser `zip` pour traiter les itérateurs en parallèle
Utilisez un module de cryptographie qui gère OpenSSL en Python
Histoire d'essayer d'utiliser Tensorboard avec Pytorch
Comment utiliser tkinter avec python dans pyenv
Résumé de l'étude de Python pour utiliser AWS Lambda
Connectez-vous avec json en utilisant pygogo.
Pour représenter la date, l'heure, l'heure et les secondes en Python
Utilisez os.getenv pour obtenir des variables d'environnement en Python
Comment afficher la date de modification d'un fichier en langage C jusqu'à nanosecondes
Utilisez l'API pour modifier collectivement un grand nombre d'e-mails non lus dans Gmail à lire
[Explication de la mise en œuvre] Comment utiliser la version japonaise de BERT dans Google Colaboratory (PyTorch)