繁体   English   中英

使用Python / Pandas从大型csv文件获取相关矩阵时出现问题

[英]Problem getting correlation matrix from large csv file with Python / Pandas

首先:我是python和数据分析的初学者,但我有信心我对这些概念已经足够了解,因此您不必过度简化答案。

我的挑战是我必须分析大量的机器数据(两年中的时间序列; 24个结构相同的csv文件,每个文件具有170列,〜250万行,〜2.6gb大小)。

必须就相关性分析该数据。 最初期望的输出是170x170相关矩阵。 进一步分析(滞后,不对称相关矩阵输入x输出)应推迟到下一步,并且主要不考虑您的答案。

我已经能够将一个文件读入数据帧(使用Spyder的IPython-Console;这要花大量16gb内存)。

import pandas as pd

df = pd.read_csv(r"C:\MyFilePath\...\TestData.csv", sep=';', encoding='iso-8859-1')

In[]: len(df.columns)
Out[]: 170

In[]: len(df)
Out[]: 2678401

但是从那以后我被困住了...

pandas.DataFrame.corr方法无法正常运行,并且仅返回(如果有效)具有很多NaN值的10 x 10矩阵(据我理解,这只是显示不存在的皮尔逊相关性(接近或等于)归零))。

我发现了一些描述如何将数据加载到我的数据帧中,这超出了我的RAM。 但是我无法完全理解加载块的概念,尤其是与时间序列结合使用时。

如果您能为我提供适当的提示或摘要,以便我可以解决此问题,我将不胜感激。

理想的结果是,我可以在所有csv文件上运行并获得所有参数所需的相关矩阵。

注意:我不受熊猫的约束。 如果您建议另一个可以更好地解决此问题的库,我们很高兴听到您的解决方案。 但是由于我公司的安全政策,我不得不不下载任何其他软件(或更确切地说:这很复杂...)我手头唯一的其他选择是MATLAB R2018.a

熊猫df.corr给出一个相关矩阵NxN,其中N是列数。 我尝试了200列,它可以工作。

最可能的原因是您的数据不干净。 如果pandas找到关联操作不可接受的数据点,则它将排除该列。 尝试在其中一个字段中创建仅包含数字和仅一个字符串的数据框,您将明白我的意思。

如果数据状态不佳,它将解释为什么还有那么多nan。 我认为您必须对数据进行一些清理和预处理。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM