Ограничения Pandas и их альтернативы в Python

11

Я где-то читал, что Pandas был впервые разработан для финансового мира, по крайней мере, особенно для естественных наук (физика, биология и т. Д.), Так есть ли подобный пакет анализа данных Python, более «ориентированный на естественные науки»?

Я только начал использовать Pandas и уже столкнулся с двумя проблемами, которые не мог бы решить без использования других пакетов или самодельного решения:

  • Как справиться с неопределенностью?
  • Как легко определить единицы моих данных?

Может быть, есть другие вопросы, но мне не хватает опыта, чтобы быть более точным. На данный момент я думаю о пакете неопределенностей , чтобы решить первый пункт, но я не уверен, что он будет хорошо работать с Pandas и не уменьшит скорость вычислений. На самом деле, я не ищу способ вычисления с неопределенностью, а просто способ хранения неопределенностей вместе с моими импортированными данными. Во-вторых, я не нашел лучшего решения, чем создание словаря отдельно от моего DataFrame для управления единицами, связанными с каждой информацией.

Если вы когда-либо сталкивались с такими же проблемами, как вы их решили или какие другие пакеты вы используете для манипулирования / хранения / анализа данных в Python в естественных науках?

Кларк
источник
2
Альтернативой пандам, поддерживающим юниты и неопределенности, является Tableкласс астропии.
P3trus
1
Кажется, здорово, я не знал, что у Астропии были такие вещи. Несмотря на это, я взглянул на документ, но не смог найти явных примеров, в которых можно было бы установить неопределенности Table(но я нашел часть единиц). NDDataкажется, справляется, но я не уверен в различиях между этими классами. Если вы не возражаете превратить ваш комментарий в ответ с помощью двухстрочного примера, я с радостью приму это!
Кларк

Ответы:

5

Я согласен с Davidmh, что расчет неопределенностей не должен обрабатываться автоматической библиотекой. Вы очень быстро столкнетесь со случаем, когда автоматика выйдет из строя (например, попробуйте выполнить преобразование Фурье).

Однако вы говорите, что хотите сохранить неопределенность в своих данных. Почему бы просто не добавить их в качестве дополнительного столбца в вашем фрейме данных? Так я обычно справляюсь с неопределенностью с пандами.

Pandas не поддерживает единицы измерения, однако в массив данных может входить что угодно, чтобы вы могли напрямую использовать пакет количеств . Однако не все функциональные возможности будут работать в пандах (хотя все еще будет работать удивительная сумма), и это приведет к снижению производительности.

Было некоторое обсуждение, чтобы разрешить вложение метаданных в панд, но пока, похоже, ничего из этого не вышло.

За исключением C ++ 11, я не знаю ни одного языка или библиотеки, которые бы дали вам действительно хорошую поддержку модулей первого класса. Всегда есть потеря производительности и отсутствие совместимости

,

LKlevin
источник
2

Управление неопределенностями на самом деле является довольно деликатной статистической проблемой. Известное выражение для распространения ошибок с использованием квадратов частных производных хорошо, когда ошибки нормально распределены, независимы и малы. Обычно это так; и фактически, даже если нормальность или независимость не полностью удовлетворены, для большинства практических случаев результат может быть достаточно близок к реальному, если вас интересует только разумная оценка интервала.

грех(2±0,1)знак равногрех(2)грех(1,9)грех(2,1)

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

Но если вы хотите, чтобы правильный результат действовал для любого возможного ввода (представьте, что вам необходимо аналитическое моделирование шумового детектора, в котором шум имеет тот же порядок, что и точность), принимая во внимание все корреляции и возможность исследовать все соответствующие параметры пространства Вам нужны методы Монте-Карло. Добавьте случайный шум к нескольким экземплярам ваших входов и запустите полный анализ. Конечно, это может означать, что вы должны умножить свое вычислительное время на сотни или тысячи, но оно всегда распараллеливается.

Итак, в конце концов, все зависит от того, что вы хотите сделать, с какой степенью точности и сколько у вас ресурсов.

Davidmh
источник