gpt4 book ai didi

Python Pandas : Store multiple time series of variable length for multiple attributes for multiple users

转载 作者:太空宇宙 更新时间:2023-11-03 16:46:55 28 4
gpt4 key购买 nike

我一直在进行一项实验,其中多个调查参与者使用可穿戴技术聆听多首音乐来跟踪多条信息,两个例子是 BPM(心率)和 T(体温)。

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

目前,所有数据都已存储到具有以下结构的多个目录中的 .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 代码来遍历并读取所有文件中的值。

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

User_ID Song_ID BPM       T
1 1 [65,...] [36,...]
1 2 [65,...] [36,...]
2 1 [65,...] [36,...]
2 2 [65,...] [36,...]

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

最佳答案

我认为使用数据帧的字典会更容易。在单元格中包含列表需要大量额外的工作,这在您的情况下可以避免。

我认为对您的情况最有用的数据结构是为每个 song_id 提供一个DataFrame。即使每个用户的数据略有不同,您仍然可以通过使用一些 NaN 来解决问题。您的数据是时间序列,因此您应该将时间作为轴。您很可能不想知道确切的时间,而是想要知道歌曲开始后的秒数。

结构示例:

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

或者,您可以使用多列索引(指标位于级别 0,用户 ID 位于级别 1)

示例:

          BPM         T
TimeStamp user1 user2 user1 user2
1 65 80 34 38
2 64 78 35 37
3 66 77 39 37
4 69 76 40 37

如果您有许多特定于指标的转换,则第二种方法更好

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

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

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

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

此工作流程通常比使用 pd.Panel 更容易且不易出错

关于Python Pandas : Store multiple time series of variable length for multiple attributes for multiple users,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36226972/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com