Pandas数据帧平均值真正唯一

2024-06-01 10:37:07 发布

您现在位置:Python中文网/ 问答频道 /正文

我使用了许多测量集,每个测量集包含两个值:日期时间和温度。示例:

# measurement 1:
    time | value
00:00:00 | 10.1
00:00:10 | 10.12
00:00:20 | 10.14
00:00:30 | 10.12
00:00:40 | 10.11
00:00:50 | 10.13

# measurement 2:
    time | value
00:00:01 | 10.11
00:00:11 | 10.13
00:00:21 | 10.14
00:00:31 | 10.12
00:00:41 | 10.12
00:00:51 | 10.11

# measurement 3:
    time | value
00:00:00 | 10.2
00:00:10 | 10.22
00:00:20 | 10.24
00:00:30 | 10.22
00:00:40 | 10.21
00:00:50 | 10.23

我将这些集合加载到pandas数据帧中,并使用外部联接将它们合并到单个数据帧中:

^{pr2}$

我想平均三个数据帧的值,但是: 有时时间不完全相同,导致不同行上的值很难取平均值。以测量2和测量3的连接为例:

# measurement 2 & 3 merged:
    time | value2 | value3
00:00:01 | 10.11  | -
00:00:11 | 10.13  | -
00:00:21 | 10.14  | -
00:00:31 | 10.12  | -
00:00:41 | 10.12  | -
00:00:51 | 10.11  | -
00:00:00 | -      | 10.2
00:00:10 | -      | 10.22
00:00:20 | -      | 10.24
00:00:30 | -      | 10.22
00:00:40 | -      | 10.21
00:00:50 | -      | 10.23

在这种情况下,时间是不完全相同的,有没有一种方法可以把这些时间放在同一行上,这样就可以求出它们的平均值了吗?在

有时,设备已多次导出数据(在不同的时间)。这意味着某些测量不是唯一的(完全相同的时间和完全相同的值)。我如何确保在求平均值时不考虑这些(两倍)测量值?在

希望有人能帮忙。在

编辑:添加图像和一些说明 我已经画出了六个数据集。为了更好地解释,我在不同的图表上加了0,10,20,30,40和50,因为其他一些会在每个图表之上。黄色、洋红和青色的测量值在值和日期时间上都是完全一致的,因为它们来自同一个源(除了数据被多次导出)。在

绿色和红色数据集的值不同(大约为40),并且没有在完全相同的时间进行测量(例如,可能会关闭几分钟)。在

根据所有这些测量值,我想创建平均线。因为洋红、青色和黄色是相同的,所以平均值应该是它们的值之一。但从某个角度看,有蓝色、绿色和红色。在这种情况下,我在寻找一个计算出的平均值,但是日期时间并不完全相同。在

graph with measurements


Tags: 数据timevalue图表时间情况温度平均值
2条回答

为了在同一列上获得value1、value2和value3,我使用了:

df = pd.concat([df1, df2, df3])

下面的示例与您的类似:

^{pr2}$

解决了:

我首先连接了所有不重复的条目:

for idf, df in enumerate(data[:-1]):
if idf == 0:
    df_new = data[idf]
df_new = pd.concat([df_new, data[idf+1][(~(data[idf+1].datetime.isin(df_new.datetime)) | ~(data[idf+1].value.isin(df_new.value)))]])

然后我设置索引:

^{pr2}$

最后我重新取样取平均值:

avg = df_new.resample('1800s').mean().dropna()

这样就得到了正确的平均值。在

相关问题 更多 >