value_counts () в тяжелых / больших файлах данных python / pandas / unix - PullRequest
0 голосов
/ 23 июня 2018

У меня есть несколько тяжелых * .txt тяжелых файлов (~ 200 ГБ каждый), и я пытаюсь подсчитать значения в определенном столбце ('val'). Я использовал Python Pandas для этого случая, но я счастлив использовать Unix или любой более быстрый метод.

file = pd.read_csv('example1.txt', sep = '\t')
    print(file['val'].value_counts())

Тем не менее, я получил сообщение «Убито» или был использован предел памяти.

Любое предложение, чтобы сделать мою работу при использовании тяжелых файлов?

Ответы [ 2 ]

0 голосов
/ 11 июля 2018

Если вы все еще ищете более быстрый метод, вы можете попробовать tsv-summaze , один из инструментов eBay TSV Utilities .Инструменты предназначены для больших файлов и работают довольно быстро.Готовые двоичные файлы доступны для Unix и Mac.Вот пример генерации количества уникальных значений в столбце:

$ # Command line to tab-separate values
$ echo $'aa\txx\nbb\tzz\naa\txx'
aa  xx
bb  zz
aa  xx

$ # tsv-summarize command to generate counts for values in column 2
$ echo $'aa\txx\nbb\tzz\naa\txx' | tsv-summarize --group-by 2 --count
xx  2
zz  1

Отказ от ответственности: я автор.

0 голосов
/ 23 июня 2018

В данный момент это работает:

result = pd.concat([ chunk.apply(pd.Series.value_counts) for chunk in pd.read_csv('example1.txt',sep = '\t',chunksize=5, usecols=[2]) ] )
print(result.groupby(result.index).sum())

Изменено с: извлекать базовый счетчик для значений с помощью параметра chunksize в pandas

...