首先:我是 Python 和数据分析的初学者,但我相信我对这些概念有足够的了解,因此您不必过度简化您的答案。我的挑战是我必须分析大量的机器数据(超过两年的时间序列;24 个结构相同的 csv 文件,每个文件有 170 列,~250 万行,~2.6gb 大小)。必须对这些数据进行相关性分析。最初需要的输出是一个 170x170 的相关矩阵。进一步的分析(滞后,不对称相关矩阵输入 x 输出)应推迟到下一步,而不是主要考虑您的答案。我已经能够将其中一个文件读入数据帧(使用 Spyder 的 IPython 控制台;以我的 16GB 内存为代价)。import pandas as pddf = pd.read_csv(r"C:\MyFilePath\...\TestData.csv", sep=';', encoding='iso-8859-1')In[]: len(df.columns)Out[]: 170In[]: len(df)Out[]: 2678401但从那以后我被卡住了......pandas.DataFrame.corr 方法不能正常工作并且只返回(如果它有效)一个 10 x 10 矩阵有很多 NaN 值(在我看来,这只是一个不存在的皮尔逊相关性的显示(接近或等于)到零))。我找到了几个关于如何将数据加载到我的数据帧中的描述,这超出了我的 RAM。然而,我无法完全理解加载块的概念,尤其是结合我的时间序列。如果您能为我提供适当的提示或片段,我将不胜感激,以便我可以解决此问题。理想情况下,结果是,我可以运行所有 csv 文件并获得所有参数所需的相关矩阵。注意: 我不受熊猫的约束。如果您建议另一个以更好方式解决此问题的库,我很高兴听到您的解决方案。但是由于我公司的安全政策,我有义务不下载任何其他软件(或者更准确地说:它很复杂......)我手头唯一的其他选择是 MATLAB R2018.a
1 回答
子衿沉夜
TA贡献1828条经验 获得超3个赞
Pandas df.corr 给出了一个相关矩阵 NxN,其中 N 是列数。我用 200 列尝试了它并且它有效。
最可能的原因是您的数据不干净。如果 pandas 发现相关操作不可接受的数据点,它会排除该列。尝试创建一个只有数字和一个字段中只有一个字符串的数据框,你就会明白我的意思。
如果数据状态不好,那也可以解释为什么有这么多nan。我认为您必须对数据进行一些清理和预处理。
添加回答
举报
0/150
提交
取消