Вы можете сделать это, добавив столбец к каждому фрейму данных, который содержит информацию для группировки отдельных значений.Вот небольшой пример:
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
Я сгенерировал только некоторые случайные значения типа int.
time1 = pd.DataFrame(np.random.randint(1,30,10), columns=['Time'] )
time2 = pd.DataFrame(np.random.randint(1,30,10), columns=['Time'] )
time3 = pd.DataFrame(np.random.randint(1,30,10), columns=['Time'] )
Вместо значений int
вы также можете использовать pands Timedelta
.Но вам нужно получить значение дней.
time1 = pd.DataFrame([pd.Timedelta(days=random.randint(0,30)).days for x in range(10)], columns=['Time'] )
time2 = pd.DataFrame([pd.Timedelta(days=random.randint(0,30)).days for x in range(10)], columns=['Time'] )
time3 = pd.DataFrame([pd.Timedelta(days=random.randint(0,30)).days for x in range(10)], columns=['Time'] )
Затем я добавил столбец «Данные» к каждому фрейму данных с уникальным идентификатором.
time1["Data"] = "A"
time2["Data"] = "B"
time3["Data"] = "C"
Теперь я объединяю все фреймы данных.
times = [time1, time2, time3]
allTimes = pd.concat(times)
Сметод boxplot Теперь вы можете сгруппировать данные по столбцу «Данные»
plt.figure()
allTimes.boxplot(by="Data")
Это приводит к следующему изображению:
