[PYTHON] Berechnen Sie den Zeitunterschied zwischen zwei Spalten mit Pandas DataFrame

Pandas sowie Datums- und Zeitdaten

Pandas ist eine sehr nützliche Bibliothek, die Daten flexibel liest und eine Typkonvertierung durchführt. Im Vergleich zu den Typen int und float erfordert der Typ ** datetime (Typ datetime64 in 64-Bit-Betriebssystemen) jedoch eine sorgfältige Behandlung, und die Subtraktion ist besonders einfach zu verknüpfen **.

Datums- und Uhrzeitsubtraktion

Versuchen wir, die Spalten zwischen Datum und Uhrzeit zu subtrahieren.

Zu verwendende Daten

time_diff_test.csv


A,B
2020-06-02 13:45:16,2020-06-02 13:50:23
2020-06-02 13:50:15,2020-06-02 14:55:19
2020-06-02 13:52:10,2020-06-03 13:57:21

Code, der Daten liest und Subtraktion durchführt

Beachten Sie, dass wenn Sie beim Lesen mit pd.read_csv () kein Argument angeben, es als str-Typ anstelle des datetime-Typs gelesen wird. Es gibt verschiedene Möglichkeiten, es als Spalte vom Typ Datum / Uhrzeit zu lesen. Es ist jedoch einfacher, das Argument parse_dates wie unten gezeigt anzugeben.

time_diff_test.py


import pandas as pd
df = pd.read_csv('time_diff_test.csv',parse_dates=['A', 'B'])
df['diff'] = df['B'] - df['A']
print(df)

#0   0 days 00:05:07
#1   0 days 01:05:04
#2   1 days 00:05:11
#Name: diff, dtype: timedelta64[ns]

Wenn Sie die Spalten einfach wie oben beschrieben subtrahieren, wird sie als timedelta64-Typ ausgegeben.

Erhalten Sie die Subtraktion von Datum und Uhrzeit in Sekunden (Minuten, Stunden, Tage ...)

In der Praxis gibt es viele Situationen, in denen Sie es in Sekunden oder Minuten erhalten möchten.

Code, der nicht funktioniert

Wenn Sie eine Variable vom Typ timedelta in Sekunden konvertieren möchten **. Total_seconds () ** ist wirksam, Es funktioniert nicht, selbst wenn ich es so ausführe, wie es in der Spalte (Serie) von DateFrame steht

python


import pandas as pd
df = pd.read_csv('time_diff_test.csv',parse_dates=['A', 'B'])
df['diff'] = df['B'] - df['A']
print(df['diff'].total_seconds())

#'Series' object has no attribute 'total_seconds'

Code, der funktioniert

Es gibt verschiedene Möglichkeiten, eine Serie vom Typ Timedelta in Sekunden umzuwandeln. Durch die Kombination von ** Karte und Lambda wie unten gezeigt ist es einfach, in einer Zeile zu schreiben **

time_diff_test_seconds.py


import pandas as pd
df = pd.read_csv('time_diff_test.csv',parse_dates=['A', 'B'])
df['diff'] = df['B'] - df['A']
df['diff_ts'] = df['diff'].map(lambda x: x.total_seconds())
print(df['diff_ts'])

#0       307.0
#1     3904.0
#2    86711.0
#Name: diff_ts, dtype: float64

[Ergänzung] Verwenden Sie Series.dt.total_seconds ()

df['diff_ts'] = df['diff'].dt.total_seconds()
print(df['diff_ts'])

#0      307.0
#1     3904.0
#2    86711.0
#Name: diff, dtype: float64

Zeitunterschied in Minuten und Stunden

total_minutes (), total_hours () ‥ ** Es gibt keine Methode, lol ** Teilen Sie total_seconds () durch 60, 3600

print(df['diff'].map(lambda x: x.total_seconds()/60.0))
print(df['diff'].map(lambda x: x.total_seconds()/3600.0))

#0       5.116667
#1      65.066667
#2    1445.183333
#Name: diff, dtype: float64
#0     0.085278
#1     1.084444
#2    24.086389
#Name: diff, dtype: float64

Unterschied zwischen total_seconds () und Sekunden

Neben ** total_seconds () ** gibt es ** Sekunden **, um das Zeitdelta in Sekunden umzuwandeln. Lassen Sie uns den Unterschied herausfinden

total_seconds()


print(df['diff'].map(lambda x: x.total_seconds()))
#0      307.0
#1     3904.0
#2    86711.0
#Name: diff, dtype: float64

seconds


print(df['diff'].map(lambda x: x.total_seconds()))
#0     307
#1    3904
#2     311
#Name: diff, dtype: int64

Laut hier ** total_seconds (): Differenz in Sekunden (Float-Typ) ** ** Sekunden: Die Anzahl der Sekunden (Typ int) der Differenz, zerlegt in Tage, Sekunden, Mikrosekunden, Millisekunden, Minuten, Stunden und Wochen ** Es scheint so.

Es scheint, dass total_seconds () ** die sogenannte ** "Zeitdifferenz" darstellt.

** Dieser Artikel ist vorbei ** Danke, dass du bis zum Ende zugesehen hast!

Recommended Posts

Berechnen Sie den Zeitunterschied zwischen zwei Spalten mit Pandas DataFrame
Typkonvertierung mehrerer Spalten von Pandas DataFrame mit Astype gleichzeitig
Berechnen Sie den Winkel zwischen n-dimensionalen Vektoren mit TensorFlow
Bayes Modellierung-Schätzung des Unterschieds zwischen den beiden Gruppen-
Überprüfen Sie mit apply () (dataframe, Pandas), welche Zeile den Fehler verursacht hat.
Formatieren Sie die Zeitachse des Pandas-Zeitreihendiagramms mit matplotlib neu
Berechnen Sie die Ähnlichkeit zwischen Sätzen mit Doc2Vec, einer Weiterentwicklung von Word2Vec
Durchsuchen Sie .loc und .iloc gleichzeitig in pandas DataFrame
Untersuchen Sie die Beziehung zwischen zwei Variablen (2)
Extrahieren Sie den Maximalwert mit Pandas.
Schätzen Sie die Verzögerung zwischen zwei Signalen
Untersuchen Sie die Beziehung zwischen zwei Variablen (1)
[Python] Verbinde zwei Tabellen mit Pandas
Extrahieren Sie bestimmte mehrere Spalten mit Pandas
Bulk Insert Pandas DataFrame mit psycopg2
Untersuchen Sie die Beziehung zwischen zwei Variablen (2)
Berechnen Sie den Zeitunterschied zwischen zwei Spalten mit Pandas DataFrame
Schätzen Sie die Verzögerung zwischen zwei Signalen
Untersuchen Sie die Beziehung zwischen zwei Variablen (1)
Berechnen Sie den Winkel zwischen n-dimensionalen Vektoren mit TensorFlow
Bayes Modellierung-Schätzung des Unterschieds zwischen den beiden Gruppen-
Verschiedene Methoden zur Berechnung der Ähnlichkeit zwischen Daten mit Python
Berechnen Sie die Anzahl der Änderungen
Berechnen Sie die Ähnlichkeit zwischen Sätzen mit Doc2Vec, einer Weiterentwicklung von Word2Vec
So ermitteln Sie mit Python den Unterschied zwischen Datum und Uhrzeit in Sekunden
Passen Sie den Abstand zwischen den Figuren mit Matplotlib an
Zeichnen Sie den Nikkei Average Stock Index mit Pandas
[Pandas] Erweitern Sie die Zeichenfolgen zu DataFrame
Ersetzen Sie Spaltennamen / -werte durch Pandas-Datenrahmen
Gibt es NaN im Pandas DataFrame?