【发布时间】:2021-11-22 18:05:57
【问题描述】:
我希望获取年度人口数据并将其插入到每小时的时间序列中。我正在尝试创建一个函数,该函数为给定样本年份的每小时人口的每个唯一名称生成一个时间序列。我已经包含了下面的代码以及示例数据:
import pandas as pd
import random
from scipy.interpolate import interp1d
name = ['RI', 'NH', 'MA', 'RI', 'NH', 'MA','RI', 'NH', 'MA','RI', 'NH', 'MA']
year = [2015, 2015, 2015, 2016, 2016, 2016, 2017, 2017, 2017, 2018, 2018, 2018]
population = random.sample(range(10000, 300000), 12)
df_pop = pd.DataFrame(list(zip(name, year, population)))
start_year = 2015
end_year = 2018
def pop_sum(df_pop, start_year, end_year):
names = df_pop['name'].unique()
df = pd.DataFrame([])
for i in names):
t = df_pop['year']
y1 = df_pop['population']
x = pd.DataFrame({'Hours': pd.date_range(f'{start_year}-01-01', f'{end_year}-12-31',
freq='1H', closed='left')})
pop_interp = interp1d(t, y1, x, 'linear')
df = df.append(pop_interp)
return df
但是,此脚本不起作用,并且不能循环名称。我尝试在网上寻找资源,但从每年到每小时的时间序列转换远没有每小时到每年那么常见。我已经尝试过 scipy 的 interp1d,但我愿意接受其他可能也可以完成相同工作的软件包的建议。提前感谢您的建议。
【问题讨论】:
-
请创建一个具有预期输出的小型可重复数据框
-
一年有8760小时。您确定要获得这样的粒度吗?
-
@ddejohn,是的,它稍后需要与将在 ML 模型中使用的其他小时数据集结合起来
标签: python pandas scipy time-series