Как работать с агрегированными данными в пандах? - PullRequest
0 голосов
/ 18 сентября 2018

У меня есть набор данных, который выглядит следующим образом:

   val
   1
   1
   3
   4
   6
   6
   9
   ...

Я не могу загрузить его в кадр данных pandas из-за его огромного размера.Поэтому я собираю данные, используя Spark, для формирования:

   val   occurrences
   1     2
   3     1
   4     1
   6     2
   9     1
   ...

и загружаю их в панду.Столбец «val» не превышает 100, поэтому он не занимает много памяти.

Моя проблема в том, что я не могу легко оперировать такой структурой, например, найти среднее или медиану, используя панд, или построить коробку с морским рожком.Я могу сделать это только используя явные формулы, написанные мной, но не готовые встроенные методы.Существует ли структура панд или какой-либо другой способ, который позволяет справиться с такими данными?

Например:

1,1,3,4,6,6,9

будет:

df = pd.DataFrame({'val': [1,3,4,6,9], "occurrences" : [2,1,1,2,1]})

Медиана4. Я ищу способ извлечь медиану непосредственно из заданного df.

1 Ответ

0 голосов
/ 18 сентября 2018

Нет, панда не работает на таких объектах, как вы ожидаете.В другом месте в StackOverflow даже вычисление медианы для этой структуры таблицы занимает как минимум несколько строк кода.

Если вы хотите создать свои собственные морские зацепки / обертки, хорошее место для началавероятно, будет эффективным percentiles(df, p) методом.Медиана тогда просто percentiles(df, [50]).Сюжет коробки будет просто percentiles(df, [0, 25, 50, 75, 100]) и так далее.Тогда ваше время разработки может быть довольно минимальным (в зависимости от того, насколько сложная статистика вам нужна).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...