我是Python的新手,我必须分析一个包含Excel格式的原始感觉数据的大型数据集。
对于每个研究参与者来说,每个Excel-数据文件都大于100 MB。该文件包含5张表格,用于测量5个不同的生理参数。每个工作表包含100多万行和两列(时间、生理参数)。
在100万行感应器数据之后,数据自动在Excel文件中的下列列(C和D)中继续进行。
每次我尝试用Python加载数据文件时,都要花费很长时间。我想知道几件事:
1)如何告诉Python从特定的 Excel表中读取数据?这需要这么长时间是正常的吗?
这就是我试过的:
df = pd.read_excel("filepath", sheet_name="Sheetname")
print (df.head (5))
2)用Pandas对Python中的大型数据文件进行数据处理是否可行?我试过这样做是为了加速这个过程:
import xlrd
work_book = xlrd.open_workbook('filepath', on_demand=True)
work_book.release_resources()
( 3)随后:我想比较不同研究对象的生理参数。由于这是研究参与者之间的时间序列分析,我怎么才能开始用Python进行分析呢?
几天前我已经学习了Python的基础知识,到目前为止我很喜欢它。我知道我还有很长的路要走。
更新:我想我刚刚完成了时间序列分析(实际上只是趋势分析,使用Dickey-Fuller测试和滚动平均可视化技术)!:D非常感谢你们的帮助!熊猫中的“日期时间”模块对我来说是最难的,而我的“日期时间”栏仍然被认为是“对象”。这是正常的吗?不是应该是datetime64吗?
发布于 2018-10-29 21:07:03
IIUC,听起来不像你需要不断地从一个不断变化的Excel表格中读取数据。我建议您像以前一样在Excel表中阅读,并使用to_pickle()
将它们存储在序列化的to_pickle()
数据格式中。
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开销。一个很好的讨论是可用的这里。
发布于 2018-10-29 21:03:50
您所描述的数据集听起来像是dask
项目所针对的问题。它允许您在并行内存中使用大多数标准的pandas
命令.
唯一的问题是,根据我的判断,达斯克没有一个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或数据库中并在那里进行转换,可能会更好。
关于时间序列的问题,从阅读关于这个主题的文档这里开始.
https://stackoverflow.com/questions/53053270
复制相似问题