【问题标题】:Pandas create additional data frames with for loopPandas 使用 for 循环创建额外的数据帧
【发布时间】:2020-02-15 00:16:02
【问题描述】:

出于 SO 目的,这是一些编造的时间序列数据:

import pandas as pd 
import numpy as np 
from numpy.random import randint 

np.random.seed(10)  # added for reproductibility                                                                                                                                                                 

rng = pd.date_range('10/9/2018 00:00', periods=1000, freq='1H') 
df = pd.DataFrame({'Random_Number':randint(1, 100, 1000)}, index=rng) 

问题,我如何创建一个函数,该函数可以在 pandas 数据框中为每一天返回重新采样的每日 97.5 和 2.5 个百分位数值?我知道下面的代码甚至没有关闭它只会返回整个数据集的上下百分位数。最终我试图每天打破这个,返回索引的数据框将是重新采样当天的时间戳(日期)..

def createDfs(data):
    for day in df:
        dfDay = pd.DataFrame()

        hi = df.quantile(0.975)[0]
        low = df.quantile(0.025)[0]

        data = {'upper_97.5%': [hi],
                'lower_2.5%' : [low]}     

        dfUpperLower = pd.DataFrame(data)
        #dfUpperLower.set_index('Date')

    return dfUpperLower

非常感谢任何提示..

【问题讨论】:

    标签: python pandas data-science


    【解决方案1】:

    我认为您只想将.resample.quantile 一起使用:

    In [10]: df.resample('1D').quantile([0.025, 0.975]).unstack()
    Out[10]:
               Random_Number
                       0.025   0.975
    2018-10-09         5.600  91.700
    2018-10-10        12.575  94.425
    2018-10-11         5.575  92.400
    2018-10-12         9.875  97.425
    2018-10-13         2.725  87.550
    2018-10-14        10.200  96.425
    2018-10-15        10.725  96.425
    ...
    

    【讨论】:

      猜你喜欢
      • 2013-07-23
      • 2023-03-19
      • 2020-08-14
      • 2019-06-21
      • 1970-01-01
      • 2021-04-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多