【问题标题】:Using Python to analyze large set of sensor-data使用 Python 分析大量传感器数据
【发布时间】:2019-04-02 20:14:45
【问题描述】:

我是一名 Python 新手,我必须分析一个包含 Excel 格式的原始传感器数据的大型数据集。

每个研究参与者的每个 Excel 数据文件都大于 100 MB。 excel 文件包含 5 张表,用于测量 5 种不同的生理参数。每张表包含超过 100 万行和两列(时间、生理参数)。

在传感器数据达到 100 万行后,数据会自动在 Excel 文件的以下列(C 和 D)中继续。

每次我尝试在 Python 中加载数据文件时,都需要很长时间。我想知道几件事:

1) 如何告诉 Python 从特定 Excel 表中读取数据?这需要这么长时间是正常的吗?

这是我尝试过的:

df = pd.read_excel("filepath", sheet_name="Sheetname")
print (df.head (5)) 

2) 在 Python 中使用 Pandas 对这个大型数据文件进行数据处理是否可行?我试过这个来加快这个过程:

import xlrd
work_book = xlrd.open_workbook('filepath', on_demand=True)
work_book.release_resources()

3) 稍后:我想比较不同研究参与者的生理参数。由于这是研究参与者之间的时间序列分析,我该如何开始在 Python 中进行此操作?

我在几天内学会了 Python 的基础知识,到目前为止我很喜欢它。我意识到我还有很长的路要走。

更新:我想我刚刚完成了时间序列分析(实际上只是趋势分析,使用了 Dickey-Fuller 检验和滚动平均可视化技术)! :D 非常感谢大家的帮助!!! pandas 中的“日期时间”模块对我来说是最难解决的,我的日期时间列仍然被识别为“对象”。这是正常的吗?不应该是 datetime64 吗?

【问题讨论】:

  • 为了帮助你加快加载速度,我们需要看看你现在是怎么做的。您可以编辑您的问题以包含您的代码的那部分吗?
  • 我刚刚添加了,谢谢! :)

标签: python excel pandas sensors


【解决方案1】:

IIUC,听起来您不需要不断地从不断变化的 Excel 工作表中读取数据。我建议您阅读 Excel 工作表,并使用to_pickle() 将它们存储在序列化的pandas 数据帧中:

import pandas as pd

participants = ['P1','P2','P3']
physios = ['Ph1','Ph2','Ph3','Ph4','Ph5']

for p in participants:
    for ph in physios:
        df = pd.read_excel(p + r'.xlsx', sheet_name=ph)
        df.to_pickle(p + '_' + ph + r'.pkl')

您现在可以更有效地读取这些腌制数据帧,因为您不必承担所有 Excel 开销。一个很好的讨论是可用的here

【讨论】:

  • 啊,太有帮助了!我也试试,谢谢! :)
【解决方案2】:

您描述的数据集听起来像是dask 项目所针对的问题。它允许您并行使用大多数标准pandas 命令,内存不足。

唯一的问题是,据我所知,dask 没有 Excel 阅读器。由于您的问题表明数据不适合内存...您可能希望在 excel 中手动将数据转换为 csv,那么您可以简单地:

# After pip install dask
import dask.dataframe as dd
df = dd.read_csv("./relpath/to/csvs/*.csv")
# Do data munging here
df.compute()

如果这不起作用,也许你尝试将数据加载到 spark 或数据库中并在那里进行转换会更好。

Re:关于时间序列的问题,首先阅读有关此主题的文档here

【讨论】:

  • 谢谢,非常感谢您的回复! :) 我会试试这个并报告结果如何。
  • 这个问题描述的数据集只有几百兆,完全可以放入内存中。
  • @Michael 只说大于100,还提到无法及时加载到内存中,这就是给我的印象。你是对的,我可能弄错了。
  • 每个数据文件包含 5 个电子表格。每个电子表格包含 2 列和 100 万行。使用 PyCharm 仅打印 1 个电子表格的前 5 行的加载时间约为 4 分钟。我有 8 GB RAM 内存,英特尔酷睿 I5 处理器。我希望这不是内存问题..
  • 这很好@SamFloral!如果其中一个回答回答了您的问题,请记住将其标记为这样!
猜你喜欢
  • 2017-05-24
  • 1970-01-01
  • 2020-04-17
  • 2015-12-08
  • 2017-05-02
  • 1970-01-01
  • 2013-06-21
  • 2018-04-27
  • 2015-04-04
相关资源
最近更新 更多