【问题标题】:Pandas Dataframe Timedelta mean() not showing correct valuesPandas Dataframe Timedelta mean() 未显示正确值
【发布时间】:2021-11-19 05:51:00
【问题描述】:

我已经搜索和搜索,但没有找到解决方案,也没有找到为什么会发生这种情况的答案。

我正在尝试在我的 pandas 数据框中为 Request_Closing_Time 确定每个自治市镇的 mean()。当我groupby Borough 然后得到请求关闭时间的平均值时,我得到了非常大的值,1344 天,然后甚至 87,426 天以获得一个结果。最大值仅为24 天,整个数据帧的平均值仅为4 小时。如果我用 get_group 命令挑出一个单独的自治市镇,那么我似乎会得到一个更正常的答案,我认为这是正确的。

groupby 仅由自治市镇提供时,为什么平均值相差如此之远?

In [283]:nyc_sr_calls_trimmed.describe()
Out[283]:        Unique Key     Request_Closing_Time       Incident Zip
         count  3.006980e+05    298534  298083.000000
         mean   3.130054e+07    0 days 04:18:51.832782865   10848.888645
         std    5.738547e+05    0 days 06:05:22.141833856   583.182081
         min    3.027948e+07    0 days 00:01:00 83.000000
         25%    3.080118e+07    0 days 01:16:33 10310.000000
         50%    3.130436e+07    0 days 02:42:55.500000  11208.000000
         75%    3.178446e+07    0 days 05:21:00 11238.000000
         max    3.231065e+07    24 days 16:52:22    11697.000000

In [284]: nyc_sr_calls_trimmed['Request_Closing_Time'].mean()
Out[284]:Timedelta('0 days 04:18:51.832782865')

In [285]:by_burrough = nyc_sr_calls_trimmed.groupby(['Borough'])
         by_burrough['Request_Closing_Time'].mean(numeric_only=None).dt.floor('s')

Out[285]:Borough
         BRONX              -13 days +03:21:47
         BROOKLYN           -13 days +03:18:24
         MANHATTAN          -36 days +14:38:51
         QUEENS             -16 days +07:37:05
         STATEN ISLAND      -44 days +22:01:24
         Unspecified     -87426 days +14:15:03
         Name: Request_Closing_Time, dtype: timedelta64[ns]

In [286]:b = by_burrough.get_group('QUEENS')
         b['Request_Closing_Time'].mean(numeric_only=False)

Out[286]:Timedelta('0 days 04:52:16.450111002')

任何帮助将不胜感激。我不确定我没有想到或考虑什么。谢谢。

【问题讨论】:

    标签: python pandas dataframe pandas-groupby mean


    【解决方案1】:

    “如果我用 get_group 命令挑出一个单独的自治市镇,那么我似乎会得到一个更正常的答案,我认为这是正确的”。

    既然你提到了上面,我会尝试为每个自治市单独获取Request_Closing_Time 的平均值,如下所示:

    by_burrough["Request_Closing_Time"].apply(lambda df_group: df_group.mean(numeric_only=False))
    

    by_burrough.apply(lambda df_group: df_group["Request_Closing_Time"].mean(numeric_only=False))
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-06-02
      • 2021-05-18
      • 1970-01-01
      • 2019-05-03
      • 1970-01-01
      • 2018-01-14
      • 2020-07-30
      • 2017-09-01
      相关资源
      最近更新 更多