Создание одного боксплота из нескольких фреймов данных - PullRequest
0 голосов
/ 18 октября 2018

У меня есть три кадра данных, содержащие только один столбец «Время» и различающееся количество строк значений панд datetime.Пример:

      Time
0  3 days    
1  16 days   
2  6 days     
3  4 days     
4  4 days     
5  4 days     

Я хотел бы создать отдельный прямоугольник (подсвечник), который имеет три бара, представляющих распределение времени во всех кадрах данных рядом.Как мне добиться этого?

1 Ответ

0 голосов
/ 18 октября 2018

Вы можете сделать это, добавив столбец к каждому фрейму данных, который содержит информацию для группировки отдельных значений.Вот небольшой пример:

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")

Это приводит к следующему изображению:

enter image description here

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...