python - 绘制具有时间间隔的 Panda 数据框的箱线图
问题描述
我有一个带有以下数据的熊猫数据框:
df1[['interval','answer']]
interval answer
0 0 days 06:19:17.767000 no
1 0 days 00:26:35.867000 no
2 0 days 00:29:12.562000 no
3 0 days 01:04:36.362000 no
4 0 days 00:04:28.746000 yes
5 0 days 02:56:56.644000 yes
6 0 days 00:20:13.600000 no
7 0 days 02:31:17.836000 no
8 0 days 02:33:44.575000 no
9 0 days 00:08:08.785000 no
10 0 days 03:48:48.183000 no
11 0 days 00:22:19.327000 no
12 0 days 00:05:05.253000 question
13 0 days 01:08:01.338000 unsubscribe
14 0 days 15:10:30.503000 no
15 0 days 11:09:05.824000 no
16 1 days 12:56:07.526000 no
17 0 days 18:10:13.593000 no
18 0 days 02:25:56.299000 no
19 2 days 03:54:57.715000 no
20 0 days 10:11:28.478000 no
21 0 days 01:04:55.025000 yes
22 0 days 13:59:40.622000 yes
df 的格式为:
id object
datum datetime64[ns]
datum2 datetime64[ns]
answer object
interval timedelta64[ns]
dtype: object
结果箱线图看起来像: 在此处输入图像描述
任何想法?
任何帮助表示赞赏...
罗伯特
解决方案
Seaborn
可以帮助你实现你想要的。
首先,需要确保列是所需的类型。
为了重现您的问题,创建了相同的数据框(并为其命名df1
)。在这里可以看到列的数据类型
[In]: df1.dtypes
[Out]:
interval object
answer object
dtype: object
对于“答案”列,可以使用pandas.factorize
如下
df1['NewAnswer'] = pd.factorize(df1['answer'])[0] + 1
这将创建一个新列并将值 1 分配给 No,2 分配给 Yes,3 分配给 Question,4 分配给 Unscribe。
有了这个,已经可以使用sns.boxplot
as创建一个箱形图
ax = sns.boxplot(x="interval", y="NewAnswer", hue="answer", data=df1)
结果如下
一个人可以做的组合数量是多种多样的,所以我只留下这些,因为 OP 没有指定它的要求,也没有给出预期输出的例子。
笔记:
- 确保您已安装所需的库。
- 可能还有其他可视化可以更好地与这些数据框一起使用,这里可以看到带有示例的图库。
推荐阅读
- python - 如何在打印函数中将两个整数放在一起而不在 python 中添加它们?
- python - Webscrape 当前的 chrome 选项卡
- docker - 如何停止 Kubernetes 中从 docker 镜像运行的 Confluence 应用程序?
- .htaccess - 如何为 301 重定向创建 htaccess 重写规则
- python - 是否可以绘制出 PySpark 中列之间的依赖关系?
- javascript - Puppeteer - 从框架集中的第 5 级深子页面调用外部 JS 函数
- r - 来自函数的消息被多次重复
- python-3.x - 如何冻结循环中的迭代以打印python
- c++ - 向量 c++ 中的对象
- keras - 如何在 Keras/Openvino 模型中跳过一层