【问题标题】:Drawing a boxplot of a Panda dataframe with time intervals绘制具有时间间隔的 Panda 数据框的箱线图
【发布时间】:2021-07-27 14:44:24
【问题描述】:

我有一个带有以下数据的 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

因此箱线图如下所示: enter image description here

有什么想法吗?

感谢任何帮助...

罗伯特

【问题讨论】:

    标签: python pandas dataframe statistics boxplot


    【解决方案1】:

    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 没有指定它的要求,也没有给出预期输出的例子。


    注意事项:

    1. 确保您已安装所需的库。
    2. 可能还有其他可视化效果更适合这些数据框,here one can see a gallery with examples

    【讨论】:

    • 首先感谢。不幸的是,出现错误:“xy 变量似乎都不是数字。” x 是一个时间间隔 y 是一个值
    • id object datum datetime64[ns] datum2 datetime64[ns] answer object interval timedelta64[ns] dtype: object
    • 亲爱的 Goncalo,再次感谢您。我在问题中添加了格式。
    • @Robert_the_Python 在您分享的图中只有轴。看来您可能需要正确考虑这一点,如果是这种情况,请发布一个不同的问题。
    猜你喜欢
    • 2021-06-17
    • 1970-01-01
    • 1970-01-01
    • 2016-04-05
    • 1970-01-01
    • 2017-12-16
    • 1970-01-01
    • 2022-07-26
    • 2019-04-14
    相关资源
    最近更新 更多