df-drills pandas · Polars · DuckDB SQL · DuckDB Relational 题目列表 登录

组均值填充

中等 05-null 缺失值 Nonefillwindowsentinel

用传感器自身的平均温度填补缺失的温度读数。

  1. temperature 等于 -999 的是坏读数,先把它当成 null。
  2. 对每个 sensor_id,计算它所有非 null 温度的平均值(第 1 步变成 null 的值不参与平均)。
  3. 把 temperature 为 null 的位置(包括原来是 -999 的位置)填成该传感器的平均值;原本有值的读数保持不变。
  4. 如果某个传感器的温度全部是 null(或 -999),算不出平均值,填完后仍然是 null。

humidity 不做任何处理,原样输出。

输入

  • readings(sensor_id, ts, temperature, humidity)

输出

列为 sensor_id, ts, temperature, humidity,行数与输入相同,行顺序不限。

输入表 (case base,共 2 个 case:base、all_null)

readings iot/readings
#sensor_idstringtsdatetimetemperaturefloat64humidityfloat64
1 s01 2026-09-01 00:23:47 21.7 60.2
2 s01 2026-09-01 00:45:48 22.1 60.2
3 s01 2026-09-01 00:59:29 22.2 46.2
4 s01 2026-09-01 01:12:53 22.3 51.3
5 s01 2026-09-01 01:37:08 22.5 43.4
6 s01 2026-09-01 01:55:18 22.5 57.9
7 s01 2026-09-01 02:03:26 22.3 39.0
8 s01 2026-09-01 02:09:39 22.1 58.2
9 s01 2026-09-01 02:21:34 22.2 41.0
10 s01 2026-09-01 02:33:45 22.4 63.2
11 s01 2026-09-01 02:46:42 null 47.4
12 s01 2026-09-01 02:56:58 null 37.0
13 s01 2026-09-01 03:12:50 null 55.3
14 s01 2026-09-01 03:28:54 22.4 44.3
15 s01 2026-09-01 03:44:24 22.3 49.2
16 s01 2026-09-01 03:55:27 22.1 42.7
17 s01 2026-09-01 04:02:14 21.9 51.5
18 s01 2026-09-01 04:21:37 -999.0 46.3
19 s01 2026-09-01 04:28:05 22.4 63.7
20 s01 2026-09-01 04:40:12 22.4 57.7
显示前 20 行,共 600 行

期望输出 (case base,行顺序不限)

#sensor_idStringtsDatetime(time_unit='us', time_zone=None)temperatureFloat64humidityFloat64
1 s01 2026-09-01 00:23:47 21.7 60.2
2 s01 2026-09-01 00:45:48 22.1 60.2
3 s01 2026-09-01 00:59:29 22.2 46.2
4 s01 2026-09-01 01:12:53 22.3 51.3
5 s01 2026-09-01 01:37:08 22.5 43.4
6 s01 2026-09-01 01:55:18 22.5 57.9
7 s01 2026-09-01 02:03:26 22.3 39.0
8 s01 2026-09-01 02:09:39 22.1 58.2
9 s01 2026-09-01 02:21:34 22.2 41.0
10 s01 2026-09-01 02:33:45 22.4 63.2
11 s01 2026-09-01 02:46:42 22.24555556 47.4
12 s01 2026-09-01 02:56:58 22.24555556 37.0
13 s01 2026-09-01 03:12:50 22.24555556 55.3
14 s01 2026-09-01 03:28:54 22.4 44.3
15 s01 2026-09-01 03:44:24 22.3 49.2
16 s01 2026-09-01 03:55:27 22.1 42.7
17 s01 2026-09-01 04:02:14 21.9 51.5
18 s01 2026-09-01 04:21:37 22.24555556 46.3
19 s01 2026-09-01 04:28:05 22.4 63.7
20 s01 2026-09-01 04:40:12 22.4 57.7
21 s01 2026-09-01 05:00:34 21.8 42.5
22 s01 2026-09-01 05:20:40 21.7 52.7
23 s01 2026-09-01 05:38:35 21.6 64.4
24 s01 2026-09-01 05:50:56 21.9 50.4
25 s01 2026-09-01 06:08:54 22.1 56.1
26 s01 2026-09-01 06:17:13 22.3 55.6
27 s01 2026-09-01 06:32:24 22.4 56.6
28 s01 2026-09-01 06:47:54 22.0 39.8
29 s01 2026-09-01 06:54:59 22.4 47.2
30 s01 2026-09-01 07:08:46 22.3 52.8
31 s01 2026-09-01 07:23:15 22.2 64.4
32 s01 2026-09-01 07:31:06 22.1 49.8
33 s01 2026-09-01 07:43:14 22.5 39.0
34 s01 2026-09-01 08:02:20 22.4 40.1
35 s01 2026-09-01 08:19:29 22.7 39.2
36 s01 2026-09-01 08:31:02 22.9 48.6
37 s01 2026-09-01 08:52:46 22.8 43.7
38 s01 2026-09-01 09:11:43 22.5 39.4
39 s01 2026-09-01 09:30:35 23.2 53.8
40 s01 2026-09-01 09:52:30 23.2 45.2
41 s01 2026-09-01 10:01:01 23.1 61.0
42 s01 2026-09-01 10:18:05 23.6 58.6
43 s01 2026-09-01 10:35:49 23.6 44.2
44 s01 2026-09-01 10:59:34 23.5 55.0
45 s01 2026-09-01 11:20:50 23.6 43.8
46 s01 2026-09-01 11:37:31 23.1 40.4
47 s01 2026-09-01 11:44:01 22.9 55.1
48 s01 2026-09-01 12:04:19 22.8 59.5
49 s01 2026-09-01 12:21:41 22.8 63.1
50 s01 2026-09-01 12:41:03 23.1 62.7
显示前 50 行,共 600 行