熊猫:处理多层原木的最佳方法?

时间:2018-07-18 15:57:02

标签: python pandas

对于一个研究项目,我们正在对话系统中记录击键。我们的日志分为3层:ext(有关会话本身的元数据,包括用户/发言人),ext2(会话中的每条消息)和conversation(每个键)键入或删除的时间戳(以毫秒为单位)。

样本数据:

message

我们的目标是为每个用户,总计,每个消息和每个会话计算各种类型的打字率度量(例如,每分钟有多少个字母,还包括单词之间的停顿之类的东西)。

考虑到我们的数据分析目标和方法,keystrokes似乎是一个合理的选择。

但是,操纵3个相关的分层数据帧(1 import pandas as pd conversations = pd.DataFrame({'convId': [1], 'userId': [849]}) messages = pd.DataFrame({'convId': [1,1], 'msgId': [1,2], 'text': ['Hi!', 'How are you?']}) keystrokes = pd.DataFrame({'msgId': [1,1,1,2,2,2,2], 'key': ['H', 'i', '!', 'H', 'o', 'w', ' '], 'time': ['2018-07-13 13:16:56.001', '2018-07-13 13:16:56.354', '2018-07-13 13:16:56.958', '2018-07-13 13:17:07.012', '2018-07-13 13:17:07.123', '2018-07-13 13:17:07.653', '2018-07-13 13:17:07.430']}) ∋N pandas∋NNN conversation)孤立地产生了很多复杂性。例如,我们尝试计算写一条消息所花费的总时间(=最后的messages-确定的keystrokes的第一个keystroke.time),但是从一个数据帧开始计算(keystroke.time ),然后填充另一个(message.msgId)在矢量化命令中似乎已经非常复杂。

管理此数据集的最佳方法是什么?我最近了解了hierarchical indexes and multi-index:我们是否应将所有内容都放入一个巨大的单个数据帧中,而每个单独的keystrokes的{​​{1}}和messages数据要重复多次(一种“长”格式)?会不会引起更多的性能问题(我们正在查看成千上万的消息和数百万的按键)?还是有一种方法可以在conversations的{​​{1}}中进行messages的操作?

0 个答案:

没有答案