【发布时间】:2018-05-21 08:01:11
【问题描述】:
我的数据如下所示:
有每日记录,除了从 2017-06-12 到 2017-06-16 的间隔。
df2['timestamp'] = pd.to_datetime(df['timestamp'])
df2['timestamp'] = df2['timestamp'].map(lambda x:
datetime.datetime.strftime(x,'%Y-%m-%d'))
df2 = df2.convert_objects(convert_numeric = True)
df2 = df2.groupby('timestamp', as_index = False).sum()
我需要用所有字段的值来填补这个缺失的空白和其他空白(例如timestamp、temperature、humidity、light、pressure、speed、battery_voltage 等。 .).
如何使用 Pandas 完成此任务?
这是我以前做过的
weektime = pd.date_range(start = '06/04/2017', end = '12/05/2017', freq = 'W-SUN')
df['week'] = 'nan'
df['weektemp'] = 'nan'
df['weekhumidity'] = 'nan'
df['weeklight'] = 'nan'
df['weekpressure'] = 'nan'
df['weekspeed'] = 'nan'
df['weekbattery_voltage'] = 'nan'
for i in range(0,len(weektime)):
df['week'][i+1] = weektime[i]
df['weektemp'][i+1] = df['temperature'].iloc[7*i+1:7*i+7].sum()
df['weekhumidity'][i+1] = df['humidity'].iloc[7*i+1:7*i+7].sum()
df['weeklight'][i+1] = df['light'].iloc[7*i+1:7*i+7].sum()
df['weekpressure'][i+1] = df['pressure'].iloc[7*i+1:7*i+7].sum()
df['weekspeed'][i+1] = df['speed'].iloc[7*i+1:7*i+7].sum()
df['weekbattery_voltage'][i+1] =
df['battery_voltage'].iloc[7*i+1:7*i+7].sum()
i = i + 1
sum 的值不正确。因为 2017-06-17 的值是 2017-06-12 到 2017-06-16 的总和。我不想再次添加它们。这个差距不仅是一个时期的差距。我想把它们都填满。
【问题讨论】:
-
有很多关于填补缺失日期时间的链接。 Here is one 但还有更多
-
您没有解释,填充缺失数据的基本假设是什么。除时间外的所有参数都是非线性的,并且在五个缺失数据点的时间过程中发生显着变化。
-
我需要将每个第一个数据到第 7 个数据的 7 天数据相加。(每周)(例如第一个数据集是:df.iloc[0:6].sum[] 和第二个数据集是 df.iloc[7:13].sum() 等等)。如果日期时间有间隔,则sum的值会出错,其他的也会出错。
-
你的数据点无论如何都是错误的,因为你的数据点包含纯猜测的 6/7。与其假装发明的数据点反映了现实,不如说清楚数据点丢失了。例外情况是您可以证明如何预测缺失值。但是例如查看
pressure数据点。他们会在缺失的一周内以线性方式上升吗?他们会在缺失的一周开始或结束时突然上升吗?你不知道。