Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/357.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 熊猫:计算给定时间范围内每个唯一元素(';ID';)的值之和,然后计算所有';ID';s_Python_Pandas_Median - Fatal编程技术网

Python 熊猫:计算给定时间范围内每个唯一元素(';ID';)的值之和,然后计算所有';ID';s

Python 熊猫:计算给定时间范围内每个唯一元素(';ID';)的值之和,然后计算所有';ID';s,python,pandas,median,Python,Pandas,Median,我正在研究一个数据集,其中包含芝加哥市出租车出行的数据。数据包含每次出行的信息,如出租车ID、时间戳、车费等。下面显示了来自df.head()的数据示例,时间戳为datetime: Taxi ID Pickup Community Area Trip Total Trip End Timestamp 2016-04-25 18:00:00 bfec2c659fcbed3

我正在研究一个数据集,其中包含芝加哥市出租车出行的数据。数据包含每次出行的信息,如出租车ID、时间戳、车费等。下面显示了来自
df.head()
的数据示例,时间戳为datetime:

                                            Taxi ID     Pickup Community Area   Trip Total
Trip End Timestamp          
2016-04-25 18:00:00     bfec2c659fcbed3b508dc6caaf6f7ef39e17801e8ca0cc...   8.0     16.00
2016-11-16 15:45:00     f45c4bfa9d6c445eb03ab69093f7ec1e9cdecef83cb2ce...   32.0    9.75
2016-01-15 17:45:00     ecfb6f2cdce5d4c4e80218f58070ae719060ee47e648f4...   32.0    14.75
2016-01-20 21:30:00     7d8179131ea9952793af4cda8635e94b56c2b92d3c376c...   32.0    7.25
2016-02-11 09:15:00     d5c4fbae1c0c510364404a90fd477b19f7f03408ce40ff...   35.0    18.75
假设我有一周的数据,我想实现以下目标:

  • 考虑用户选择的装箱选项:例如:小时
  • 按出租车ID对数据进行分组,并将每辆出租车在一小时内的金额相加
  • 根据出租车ID计算所有出租车之间所有此类“小时收入”的中位数(仍在该小时内)
  • 在时间范围内每小时重复一次。一周内,这是24*7=168次
  • 绘制一周中所有小时的每小时中位数
  • 这可以延长到一周中的几个小时,一年中的几个星期等等


    到目前为止,我能够使用
    pivot_table
    来获取整个时间范围内每天每小时的收入中值(但这不是一周中的每小时),或者
    重新采样
    来获取一段时间内的票价中值(但这不是出租车的“小时收入”,这是每次出行的票价中值)。这两种方法都不能达到我想要的效果,我应该如何实现这一点呢?

    我首先将
    df.grouby
    与pandas中的
    Grouper
    功能相结合,实现了我的数据。因此,首先根据ID对数据进行分组,对于每个ID,每个时间段(例如,小时)对数据进行重新采样,最终可以通过此命令汇总该特定ID的每小时票价

    dfGrouped = (df.groupby(['Taxi ID', pd.Grouper(freq='H', key='Trip End Timestamp')])
         ['Trip Total']
         .sum()
         .unstack(fill_value=0))
    
    由于最后的取消堆叠操作,
    dfGrouped
    现在包含一个二维滑行ID与小时数的数组。所有出租车ID(行)的中位数仅通过以下方式获得:

    dfGrouped.median()
    

    如果您可以将数据框作为文本而不是图像包含,则会更有帮助。将其更改为文本