У меня есть фрейм данных, в котором хранятся журналы транзакций. Каждый журнал имеет свой хэш активности и соответствующий идентификатор пользователя, например,
ID UserID
999974708546523127 AU896
999974708546523127 ZZ999
999974708546520000 ZZ999
Я использую кросс-таблицу для создания корреляционной матрицы, чтобы сравнить хэшированные действия пользователей друг с другом. Таким образом, я могу измерить, насколько похоже их поведение:
Data = pd.read_csv('path.csv',
sep=';', names=['ID', 'UserID', 'Info1', 'Info2'], error_bad_lines=False,
encoding='latin-1', dtype='category')
df = pd.crosstab(Data.UserID, Data.ID)
Однако, поскольку у меня ~ 5 миллионов строк и хэш активности идентификатора настолько сложен, вычисление занимает слишком много времени или не завершается вообще. Использование dtype = 'category'
уже значительно сократило время чтения CSV-файла.
Ожидаемая выходная корреляционная матрица
Index AU896 ZZ999
AU896 1 0.5
ZZ999 0.5 1
Я не могу изменить ни хеш, ни UserID, чтобы уменьшить использование памяти.
Эта операция занимает 6 и 3 секунды для Info1 и Info2.
Может быть, есть более эффективная операция, чтобы сделать это с пандами или даже с dask?
Спасибо за помощь!