[PYTHON] Extrahieren Sie Zeilen, die die Bedingungen erfüllen, aus Excel mit Datumsdaten (% Y /% m /% d).

Überblick

-Pd.to_datetime ist praktisch. -Wenn Sie pd.read_csv ausführen, müssen Sie mit dem Zeichencode vorsichtig sein. ・ Meer geboren kann gut sein.

Über die zu verwendenden Daten

Excel-Datei ・ Einschließlich Datumsdaten ・ Es gibt verschiedene Zeilen ・ Die erste Zeile enthält nutzlose Daten ○○,○○,2016/8/11,○○,○○ Daten wie. Der Elementname des Datums wird als "Frist" angenommen. Um ein wenig mehr über die Daten zu schreiben,

..., Betreff (Zeichenkette), ..., Frist (% Y /% m /% d), ...,

Daten laden (Pandas)

Zuerst habe ich es aus Excel im CSV-Format exportiert, um es aus Pandas als CSV-Datei zu lesen. Lesen Sie als Nächstes einen DataFrame.

data = pd.read_csv('./Datei.csv', encording='Shift-jis', skiprows=1)

Es dauerte eine Weile, bis = 'Shift-jis' aufgenommen wurde. Mit Python3 hatte ich das Bild, dass kein Fehler auftreten würde, selbst wenn mir der Zeichencode egal wäre, aber das war nicht der Fall.

Extraktion des Zielortes

Dieses Mal extrahieren wir den Teil, in dem sich der Datumsteil in der Zukunft befindet. Daher wird die Datenextraktion des Datumsteils mit dem heutigen Datum verglichen und als Filter gespeichert.

myfilter = pd.to_datetime(data['Frist']. format='%Y/%m/%d', error='coerce' > datetime.datetime.today()

Wenn Sie das Teil extrahieren möchten, das die Frist überschritten hat, können Sie es sich leisten, es zu ändern.

myfilter = pd.to_datetime(data['Frist']. format='%Y/%m/%d', error='coerce' < datetime.datetime.today()

Ich habe eine Weile gebraucht, um zu pd.to_datetime zu gelangen. Sie wissen, dass Pandas eine sehr bequeme Methode zum Bearbeiten von Daten haben. http://sinhrks.hatenablog.com/entry/2014/11/09/183603 Ich bezog mich auf.

error = 'coerce' wurde auch ein wenig erwischt. In den Datumsdaten befand sich eine Zeile, in der das Datum nicht eingegeben und das Symbol eingegeben wurde, was den Fehler verursachte. Dieses Mal habe ich beschlossen, den Fehler auf NaT zu setzen. Es gibt zwei andere Methoden. http://pandas.pydata.org/pandas-docs/stable/generated/pandas.to_datetime.html Bitte beziehen Sie sich auf.

Andere Muster (Anzahl der Tage Berechnung)

Wenn Sie wissen möchten, wie viele Tage von der festgelegten Frist bis heute vergangen sind, können Sie die Datums- und Uhrzeitangabe abziehen. Zum Beispiel

days = datetime.datetime.today() - pd.to_datetime(data['Frist'], format=%Y/%m/%d, errors='coerce')

Wenn Sie dies zeichnen möchten, können Sie es nicht so ausgeben, wie es ist (es wird gesagt, dass es sich nicht um numerische Daten handelt), also zum Beispiel

days = days / np.timedelta64(1, 'D')

Es ist erforderlich, einen Float-Typ durch Ausführen einer Berechnung zu erstellen. Ich habe einige Zeit gebraucht, um hierher zu kommen.

Andere Filtererstellungsmuster (NaT-Teile extrahieren)

Wenn Sie bei pd.to_datetime () error = 'coerce' setzen, lautet der Fehler NaT. Wenn Sie jedoch NaT extrahieren möchten, z. B. wenn Sie Daten ohne Datumsdaten extrahieren möchten ,

filter = pd.to_datetime(...).isnull()

ist. NaT ist isnull (). Das Suchen und Finden dauerte ebenfalls einige Zeit.

Daten für die Ausgabe erstellen

Danach habe ich nur noch mit einem Filter ausgegeben, musste aber nur bestimmte Informationen (Spalten) ausgeben

print(data[myfilter]['Name einer bestimmten Spalte'])

Es wurde gemacht. Wenn Sie es danach entsprechend ändern, können Sie es als Datei ausgeben, sodass ich bestimmte Daten (Zeilen) aus einer großen Excel-Datei extrahiere und die Tage bis zum Stichtag visualisiere.

Grafik

Es scheint gut, die Daten von DataFrame von Pandas mit Seegeborenen grafisch darzustellen. Wenn Sie ein Balkendiagramm mit dem Motiv auf der vertikalen Achse und der horizontalen Achse auf der Anzahl der Tage wünschen,

sns.barplot(x='Tage', y='Gegenstand',data=data)

Ich fühle mich so. Wenn Sie den Spaltennamen, den Sie für das Diagramm verwenden möchten, mit x und y angeben, organisiert seaborn ihn gut.

Als Referenz https://stanford.edu/~mwaskom/software/seaborn/examples/horizontal_boxplot.html ist.

Wenn Sie die Grafikposition von Seaborn (Matplotlib) optimieren möchten

plt.subplot_adjust(left=*, right=*, top=*, bottom=*)Benutzen.


 Dies kann gefühlt werden, indem das Diagramm tatsächlich angezeigt und Feineinstellungen vorgenommen werden. Es scheint jedoch die Position des linken Endes und des rechten Endes des Diagramms zu sein, wenn das am weitesten rechts liegende Ende des sichtbaren Bereichs des Diagramms 1,0 beträgt.
 Wenn Sie es daher größer als rechts = 1,0 machen, erstreckt sich das Diagramm über den sichtbaren Bereich hinaus. Wenn beispielsweise left = 0,5 und right = 1,0 ist, ist die Hälfte die Grafikfläche und die linke Seite viele leere Grafiken. Und immer links <rechts. Die Beziehung zwischen oben und unten ist ähnlich.

## Wenn Sie japanische Schrift in der Grafik verwenden möchten

```python
fp = FontProperties(fname='C:\Windows\Fonts\YUGOTHL.TTC`. size=10)

Irgendwie,

plt.xtics(fontproperties=fp)
plt.ytics(fontproperties=fp)

In diesem Fall werden japanische Zeichen weder auf der x-Achse noch auf der y-Achse verstümmelt. Sie können eine beliebige Schriftart verwenden. Sie finden es, indem Sie es im Explorer nachschlagen. Da es sich jedoch um eine grafische Benutzeroberfläche zum Anzeigen von Schriftarten handelt, kann es etwas schwierig sein, den Pfad anzuzeigen.

Wenn Sie Japanisch auf dem Etikett verwenden möchten,

plt.ylabel('Etikette', fontproperties=fp)

ist.

Zeigen Sie das Diagramm an oder speichern Sie es

Die Anzeige des gezeichneten Diagramms ist

plt.show()

Wenn Sie speichern möchten

plt.savefig('Dateiname')

Beim Speichern einer Datei können Sie auch eine Auflösung wie `plt.savefig ('Dateiname', dpi = 300)` angeben. Wenn Sie beispielsweise das Datum im Dateinamen verwenden möchten

today = datetime.datetime.now()
plt.savefig("Dateiname_{}-{}-{}.png ".format(today.year, today.month, today.day))

Es gibt eine Möglichkeit, dies zu tun (Beispiel: Dateiname_2016-08-14.png). Ich denke, es gibt einen klügeren Weg, aber das weiß ich erst jetzt. Die Formatierungsfunktion ist jedoch praktisch, nicht wahr?

Recommended Posts

Extrahieren Sie Zeilen, die die Bedingungen erfüllen, aus Excel mit Datumsdaten (% Y /% m /% d).
Extrahieren Sie mit Python Zeilen, die den Bedingungen entsprechen, aus einer Textdatei
[Python] Verschieben Sie Dateien, die die Bedingungen erfüllen
Python> Yyyymmdd vom Datumstyp abrufen> parsed = time.strptime (mddt) / yyyymmdd = time.strftime ("% Y% m% d", analysiert)
Löschen qualifizierender Eckpunkte in networkx
Derjenige, der den grafisch darstellt, der die Fitbit-Daten vom Server erhalten hat
Extrahieren Sie nur Elemente, die bestimmte Bedingungen in Python erfüllen