Ho diversi DataFrames contenenti dati di serie temporali e vorrei creare una visualizzazione semplice dell'ampiezza degli intervalli di tempo per ciascuno di questi DataFrames. Dato che non ero in grado di generare questo con codice ho incluso uno schizzo per illustrare il mio obiettivo.Come tracciare un intervallo di tempo come valore da Pandas o MatPlotLib
Ecco il codice per creare tre DataFrames che sono essenzialmente semplificati, le versioni più piccole dei DataFrames sto lavorando con.
from pandas import DataFrame
from numpy import datetime64, random
# example data recorded by two different sensors
example_data = random.rand(5,2)
example_data2 = random.rand(9,2)
example_data3 = random.rand(9,2)
# timestamps from sensor1
times = ['2000-01-01 09:00:00',
'2000-01-01 09:15:00',
'2000-01-01 09:30:00',
'2000-01-01 09:45:00',
'2000-01-01 10:00:00']
# timestamps from sensor2
times2 = ['2000-01-01 08:45:00',
'2000-01-01 09:00:00',
'2000-01-01 09:15:00',
'2000-01-01 09:30:00',
'2000-01-01 09:45:00',
'2000-01-01 10:00:00',
'2000-01-01 10:15:00',
'2000-01-01 10:30:00',
'2000-01-01 10:45:00']
# timestamps from sensor2
times3 = ['2000-01-01 09:20:00',
'2000-01-01 09:40:00',
'2000-01-01 10:00:00',
'2000-01-01 10:20:00',
'2000-01-01 10:40:00',
'2000-01-01 11:00:00',
'2000-01-01 11:20:00',
'2000-01-01 11:40:00',
'2000-01-01 12:00:00']
# create the DataFrame object for sensor1 with the times and data above
sensor1 = DataFrame({'Time': times,
'measure1': example_data[:,0],
'measure2': example_data[:,1]})
# create the DataFrame object for sensor2 with the times and data above
sensor2 = DataFrame({'Time': times2,
'measure1': example_data2[:,0],
'measure2': example_data2[:,1]})
# create the DataFrame object for sensor2 with the times and data above
sensor3 = DataFrame({'Time': times3,
'measure1': example_data3[:,0],
'measure2': example_data3[:,1]})
# coerce the 'Time' column from string to a numpy datetime64 value
sensor1['Time'] = sensor1['Time'].astype(datetime64)
sensor2['Time'] = sensor2['Time'].astype(datetime64)
sensor3['Time'] = sensor3['Time'].astype(datetime64)
ho cercato di prendere il minimo e il massimo valore datetime da ciascuno dei DataFrames e mettendoli in un nuovo dataframe ma quando provo e li tracciare ottengo un errore che non ci sono valori da tracciare.
Ho anche provato a prendere solo la colonna 'Ora' e assegnare un intero a una colonna 'valore' (cioè il sensore 1 ottiene la trasmissione Int 1 alla colonna 'valore', sensor2 get è la trasmissione Int 2 e così via), quindi unendo questi DataFrames.
Ma questo risulta in molti valori duplicati nella colonna "Ora" e nei valori Nan nella colonna "valore".
Ho esaurito le idee su come farlo funzionare.
EDIT: Corretto un '2001' timestamp subdolo nel blocco di codice ;-)
Grazie mille. E sì - hai ragione - l'ultimo timestamp del 2001 è stato un refuso, avrebbe dovuto anche essere "2000". –