我有三个数据帧,仅包含一列“时间”和不同行数的 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
我只生成了一些随机 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
值,您还可以使用pandsTimedelta
。但您需要获取天数。
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")
这会产生以下图像:
关于python - 从多个数据帧创建单个箱线图,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52868485/