[PYTHON] Verwenden Sie das Datum auf der x-Achse des in seaborn dargestellten tsplot

Konvertieren Sie den DataFrame-Index beim Downsampling in DatetimeIndex (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), was sehr praktisch ist, aber von dort aus sns.tsplot Die Visualisierung dauert lange.

Erstellen Sie beispielsweise einen 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)

Bei der Ausführung wird ein DataFrame erstellt, der die folgenden Spalten vom Typ Datetime enthält.


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

Wenn Sie diesen DataFrame mit sns.tsplot beschreiben,

import seaborn as sns
import matplotlib.pyplot as plt

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

download.png

Die Datums- und Uhrzeitangabe wird normalerweise nicht angezeigt, obwohl auf der horizontalen Achse das Datum angegeben ist. Wenn Sie DataFrame.plot () verwenden, wird dieser Bereich reibungslos angezeigt. Wenn Sie jedoch tsplot verwenden, möchten Sie auf jeden Fall seaborn verwenden.

Fragen zu diesem Bereich wurden in StackOverflow zusammengefasst.

Screen Shot 2017-07-26 at 15.14.07.png

Matplotlib verwendet Gleitkommazahlen für Daten, und Pandas und Seaborn müssen diese offenbar explizit angeben. Verwenden Sie daher den Datums-Locator und den Datumsformatierer.

Konvertieren Sie zuerst das Datum, damit matplotlib.date es verstehen kann.

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)

Es ist fast dasselbe wie der erste DataFrame, wird jedoch vor dem Einfügen des Datums in das Datum von matplotlib.dates.date2num () konvertiert.

Alternativ können Sie den vorhandenen DataFrame mit Map wie folgt verarbeiten.

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

Zeichnen Sie nach der Konvertierung von Date 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'))

Nachdem Sie ax im Unterplot angegeben haben, setzen Sie die Achse mit set_major_locator und set_major_formatter. Hier wird% Y.% M.% D nach Bedarf modifiziert.

Wenn es ausgeführt wird, sieht es so aus.

download.png

Das Datum kann als x-Achse angezeigt werden. Neigen Sie den Winkel der Buchstaben um 45 Grad, um die überlappenden Teile besser erkennen zu können.

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

download.png

Ich konnte das Datum sicher auf der x-Achse verwenden. ** Es gibt verschiedene Möglichkeiten, die Achsenanzeige zu neigen. Beachten Sie jedoch, dass das Datum je nach Methode möglicherweise mehrmals verstümmelt wurde. ** ** **

Recommended Posts

Verwenden Sie das Datum auf der x-Achse des in seaborn dargestellten tsplot
Datum der bereits verwendeten Adresse Fehler in der Flasche
Vergleich der Verwendung von Funktionen höherer Ordnung in Python 2 und 3
Verwenden Sie <input type = "date"> mit Flask
Zusammenfassung der Verwendung von pandas.DataFrame.loc
Verwendung von Klassen in Theano
Mock in Python-Wie man Mox benutzt
Verwendung von SQLite in Python
Zusammenfassung der Verwendung von pyenv-virtualenv
Verwenden Sie PyCaret, um den Preis von Gebrauchtwohnungen in Tokio vorherzusagen!
Verwendung von ChemSpider in Python
Verwendung von PubChem mit Python
Zusammenfassung der Verwendung von csvkit
Ich habe versucht, verschiedene Muster von Datumszeichenfolgen in pandas.to_datetime einzugeben
Verwendung berechneter Spalten in CASTable
Konvertierung der Zeichenfolge <-> Datum (Datum, Datum / Uhrzeit) in Python
[Python] Zusammenfassung der Verwendung von Pandas
[Einführung in Python] Wie verwende ich eine Klasse in Python?
Verwendung der in Pip 7.1 hinzugefügten Einschränkungsdatei
Verwendung von Google Test in C-Sprache
Einfache Möglichkeit, Wikipedia mit Python zu verwenden
Mindestkenntnisse zur Verwendung von Form with Flask
[Python2.7] Zusammenfassung der Verwendung von unittest
Verwendung von Anacondas Interpreter mit PyCharm
R: Verwenden Sie im Skript Japanisch anstelle von Japanisch
Verwendung von __slots__ in der Python-Klasse
Jupyter Notebook Grundlagen der Verwendung
Grundlagen von PyTorch (1) - Verwendung von Tensor-
Zusammenfassung der Verwendung der Python-Liste
Verwendung regulärer Ausdrücke in Python
[Python2.7] Zusammenfassung der Verwendung des Unterprozesses
So verwenden Sie Map in ViewPager von Android
Verwendung ist und == in Python
[Frage] Wie verwende ich plot_surface von Python?
Holen Sie sich das Ergebnis der umgekehrten GeoCoding auf Japanisch mit dem Java SDK von GoogleMapsAPI.
Ich möchte Python in der Umgebung von pyenv + pipenv unter Windows 10 verwenden
Verwendung der C-Bibliothek in Python
Verwendung von Folium (Visualisierung von Standortinformationen)
[Python] Verwendung von zwei Arten von type ()
So verfolgen Sie die Arbeit mit Powershell
Konvertieren Sie die "Anzahl" des Excel-Datums in die Python-Datumszeit
Zusammenfassung zum Importieren von Dateien in Python 3
Verwendung der Python-Bildbibliothek in der Python3-Serie
Nicht viel erwähnt, wie man Pickle benutzt
EP 11 Verwenden Sie "zip", um Iteratoren parallel zu verarbeiten
Verwenden Sie ein Kryptografiemodul, das OpenSSL in Python verarbeitet
Die Geschichte des Versuchs, Tensorboard mit Pytorch zu verwenden
Wie man tkinter mit Python in Pyenv benutzt
Zusammenfassung des Studiums von Python zur Verwendung von AWS Lambda
Loggen Sie sich mit json mit pygogo ein.
Zur Darstellung von Datum, Uhrzeit, Uhrzeit und Sekunden in Python
Verwenden Sie os.getenv, um Umgebungsvariablen in Python abzurufen
So zeigen Sie das Änderungsdatum einer Datei in C-Sprache bis zu Nanosekunden an
Verwenden Sie die API, um gemeinsam eine große Anzahl ungelesener E-Mails in Google Mail zum Lesen zu ändern
[Erklärung zur Implementierung] Verwendung der japanischen Version von BERT in Google Colaboratory (PyTorch)