我有三个只包含一列“时间”的数据帧,它们包含不同数量的pandas datetime
值行。例如:
Time
0 3 days
1 16 days
2 6 days
3 4 days
4 4 days
5 4 days
我想创建一个单独的箱线图(蜡烛图),其中有三个条形图,表示所有数据框中时间分布并排放置。我该如何实现?
我有三个只包含一列“时间”的数据帧,它们包含不同数量的pandas datetime
值行。例如:
Time
0 3 days
1 16 days
2 6 days
3 4 days
4 4 days
5 4 days
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
我只生成了一些随机的整数值。
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
值外,您还可以使用Pandas的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'] )
然后我向每个数据帧添加了一个名为“Data”的列,并附带唯一标识符。
time1["Data"] = "A"
time2["Data"] = "B"
time3["Data"] = "C"
现在我将所有的数据框连接起来。
times = [time1, time2, time3]
allTimes = pd.concat(times)
使用方法boxplot,你可以按“Data”列对数据进行分组。
plt.figure()
allTimes.boxplot(by="Data")