python - 从多个数据帧创建单个箱线图

标签 python pandas dataframe matplotlib

我有三个数据帧,仅包含一列“时间”和不同行数的 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")

这会产生以下图像:

enter image description here

关于python - 从多个数据帧创建单个箱线图,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52868485/

相关文章:

python - 普劳 : Comment Submitter's Username

python - 将矩阵数组制作成矩阵的三元组数组/Python Pandas

python - 将具有多行的 Pandas 数据框转换为一行

python - 比较两个数据帧,一个有时间范围,另一个有特定时间

python - Kivy - 解除绑定(bind)到按钮的所有方法

python - 使用参数 '*' 和关键字参数 '()' 找不到 '{}' 反向

Python BeautifulSoup 获取图像、文本和 URL

python - Pandas sqlalchemy create_engine 与 SQL Server Windows 身份验证的连接

python - 类型错误 : argument of type 'float' is not iterable

scala - 更改 DataFrame 中嵌套列的值