Прежде всего: я новичок в Python и аналитике данных, НО я уверен, что понимаю концепции достаточно, чтобы вам не пришлось слишком упрощать ваши ответы.
Моя задача заключается в том, чтобыЯ должен проанализировать огромные куски машинных данных (временных рядов за два года; 24 идентичных по структуре csv-файла, каждый из которых содержит 170 столбцов, ~ 2,5 миллиона строк, ~ 2,6 ГБ).
Эти данные должны бытьпроанализированы в отношении корреляций.Первоначально желаемым выходом является корреляционная матрица 170x170.Дальнейший анализ (задержка, асимметричная матрица корреляции Input x Output) должен быть отложен до следующего шага и не должен рассматриваться в первую очередь для вашего ответа.
Мне удалось прочитать один из файлов вдатафрейм (используя IPython-Console от Spyder; за счет большого объема моей 16-гигабайтной памяти).
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
Но оттуда я застрял ...
ПандыМетод .DataFrame.corr не работает должным образом и возвращает (если он работает) только матрицу 10 x 10 с большим количеством значений NaN (которые, на мой взгляд, являются отображением несуществующей корреляции Пирсона (близкой или равной нулю))).
Я нашел несколько описаний, как загружать данные в мой фрейм данных, который превышает мою RAM.Тем не менее, я не смог полностью понять концепцию загрузки кусков, особенно в сочетании с моими временными рядами.
Я был бы очень признателен, если бы вы могли дать мне правильную подсказку или фрагмент, чтобы я мог решитьэта проблема.
В идеале, я могу запустить все csv-файлы и получить желаемую матрицу корреляции для всех параметров.
Примечание: Яне привязан к пандам.Если вы предложите другую библиотеку, которая поможет решить эту проблему лучше, я буду рад услышать ваше решение.Но из-за политики безопасности моей компании я обязан не загружать никакого дополнительного программного обеспечения (или, если быть более точным: это сложно ...) Единственный другой вариант, который у меня есть, - это MATLAB R2018.a