Python Pandas:为多个用户存储多个可变长度的时间序列

2024-09-29 19:24:57 发布

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

我一直在做一个实验,在这个实验中,多个被调查者使用可穿戴技术收听多段音乐来跟踪多段信息,两个例子是BPM(心率)和{}(体温)。在

其目的是测量每一首音乐(以用户反馈为特征)对人类情感的影响。在

目前,所有数据都存储在多个目录中的.txt文件(文本文件中的每一行都有一个条目),这些目录具有以下结构:

/user_1
    /BPM
        song_1.txt
           76
           78
        song_2.txt
           76
           78
           85
    /T
        song_1.txt
           35.7
           35.3
           35.3
           35.3
           35.3
        song_2.txt
           32.2
           32.4
           37.8
           32.4
           37.8

由于歌曲长度等变量和可穿戴设备传输的时间段不一致,每个单独的.txt文件可能具有不同的长度。例如,即使是同一首歌,BPMT的时间序列也可以是不同的长度。在

我已经编写了Python代码来遍历和读取所有文件中的值。在

目前,我正在考虑创建一个如下所示的数据帧:

^{pr2}$

但我担心在每个单元格中存储一个数组可能会使数据标准化等任务变得困难——我现在想知道是否有更好的方法来利用multi-index将其存储在Pandas中?在


Tags: 文件数据用户目的目录txt信息song
1条回答
网友
1楼 · 发布于 2024-09-29 19:24:57

我认为处理数据帧的dicts会更容易。在单元格中创建列表需要大量额外的工作,这在您的情况下是可以避免的。在

我想对您的案例最有帮助的数据结构是为每个歌曲id设置一个数据帧。即使每个用户的数据略有不同,您仍然可以通过使用一些NaN来解决问题。 你的数据是一个时间序列,所以你应该以时间为轴。很可能你不想知道确切的时间,而是歌曲开始后的秒数。在

示例结构:

TimeStamp BPM_user1 BPM_user2
1       65      34
2       64      35
3       66      39
4       69      40

或者,您可以使用多列索引(在级别0上使用度量,在级别1使用用户标识

示例:

^{pr2}$

如果您有许多特定于度量的转换,那么第二种方法更好

然后使用dict保存所有数据帧:

df_dict = {
     'song1': read_df(song_id=1),
     'song2': read_df(song_id=2),
}

然后您可以轻松地迭代以执行分析:

for songid, df in df_dict.items():
       *do analysis*

这个workfow通常比使用更容易出错pd面板在

相关问题 更多 >

    热门问题