Обмеження панди та її альтернативи в Python


11

Я десь читав, що Пандас вперше був розроблений для фінансового світу, принаймні, не особливо для природничих наук (фізика, біологія тощо), тож чи є подібний пакет даних Python для аналізу даних, більш "орієнтований на природничі науки"?

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

  • Як керувати невизначеностями?
  • Як легко визначити одиниці моїх даних?

Можливо, є й інші питання, але мені не вистачає досвіду, щоб бути більш точним. На даний момент я думаю про пакет невизначеностей для вирішення першої точки, але я не впевнений, що він буде добре працювати з Pandas і не зменшить швидкість обчислень. Насправді я не шукаю способу обчислення невизначеностей, а простого способу зберігання невизначеностей разом із імпортованими даними. По-друге, я не знайшов кращого рішення, ніж створення словника крім моєї DataFrame для управління одиницями, пов'язаними з кожними даними.

Якщо ви коли-небудь стикалися з тими ж проблемами, як ви її вирішили чи який інший пакет (и) ви використовуєте для маніпулювання / зберігання / аналізу даних в Python в природничих науках?


2
Альтернативою панд, що підтримують одиниці та невизначеності, є Tableклас астропії.
P3trus

1
Це здається чудовим, я не знав, що в астропії є такі речі. Незважаючи на це, я поглянув на документ, але не зміг знайти явних прикладів для встановлення невизначеності Table(але я знайшов частину одиниць). NDDataЗдається, це вдається, але я не впевнений у відмінності між цими класами. Якщо ви не проти перетворити свій коментар у відповідь на прикладі двох рядків, я охоче би прийняв це!
Кларк

Відповіді:


5

Я погоджуюся з Девідмом, що обчислення невизначеностей не повинно здійснюватися автоматичною бібліотекою. Ви дуже швидко наткнетеся на випадок, коли автоматика виходить з ладу (спробуйте зробити, наприклад, перетворення Фур'є).

Однак ви говорите, що просто хочете зберегти невизначеності у своїх даних. Чому б просто не додати їх як додатковий стовпець у вашій рамці даних? Ось як я зазвичай управляю невизначеностями з пандами.

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

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

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

.


2

Управління невизначеностями насправді є досить делікатною проблемою статистики. Відомий вираз для поширення помилок з використанням часткових квадратних похідних є добрим, коли помилки зазвичай розподілені, незалежні та невеликі. Зазвичай це так; і насправді, навіть якщо нормальність чи незалежність не задовольняються повністю, для більшості практичних випадків результат може бути досить близьким до реального, за умови, що вас цікавить лише розумна оцінка інтервалу.

Інша можливість полягає в тому, щоб повторити операцію з верхньою і нижньою межею, щоб , але це правильно лише в тому випадку, якщо інтервали є жорсткими пороговими показниками (наприклад, вихід нешумного інструменту з точністю 0,1).гріх(2±0,1)=гріх(2)гріх(1.9)гріх(2.1)

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

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

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

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.