Czytałem gdzieś, że Pandy po raz pierwszy opracowano dla świata finansów, a przynajmniej nie dla nauk przyrodniczych (fizyki, biologii itd.), Więc czy jest jakiś podobny pakiet do analizy danych Pythona bardziej „zorientowany na nauki przyrodnicze”?
Właśnie zacząłem używać Pand i napotkałem już dwa problemy, których nie mogłem rozwiązać bez użycia innych pakietów lub rozwiązania domowego:
- Jak zarządzać niepewnościami?
- Jak łatwo zdefiniować jednostki moich danych?
Może są inne problemy, ale brakuje mi doświadczenia, by być bardziej precyzyjnym. Na razie myślę o pakiecie niepewności , aby rozwiązać pierwszy punkt, ale nie jestem pewien, czy będzie on działał dobrze z Pandas i nie zmniejszy prędkości obliczeń. W rzeczywistości nie szukam sposobu obliczania niepewności, tylko prosty sposób przechowywania niepewności wraz z moimi zaimportowanymi danymi. Po drugie, nie znalazłem lepszego rozwiązania niż utworzenie słownika oprócz mojej DataFrame do zarządzania jednostkami powiązanymi z danymi.
Jeśli kiedykolwiek spotkałeś się z tymi samymi problemami, w jaki sposób je rozwiązałeś lub jakich innych pakietów używasz do manipulacji / przechowywania / analizy danych w Pythonie w naukach przyrodniczych?
Table
klasa w astropii.Table
(ale znalazłem część jednostek).NDData
wydaje się, że sobie z tym radzi, ale nie jestem pewien różnic między tymi klasami. Jeśli nie masz nic przeciwko przekształceniu swojego komentarza w odpowiedź z 2-liniowym przykładem, chętnie bym go zaakceptował!Odpowiedzi:
Zgadzam się z Davidmh, że automatyczna biblioteka nie powinna zajmować się obliczaniem niepewności. Bardzo szybko natkniesz się na przypadek, w którym zawodzi automatyka (na przykład spróbuj wykonać transformatę Fouriera).
Mówisz jednak, że chcesz po prostu zachować niepewność swoich danych. Dlaczego nie dodać ich jako dodatkowej kolumny w ramce danych? W ten sposób zazwyczaj radzę sobie z niepewnością związaną z pandami.
Pandas nie obsługuje jednostek, jednak wszystko może wejść do ramki danych, dzięki czemu można bezpośrednio użyć pakietu ilości . Jednak nie wszystkie funkcje będą działały w pandach (choć zaskakująca ilość nadal będzie działać) i nastąpi kara wydajności.
Poczyniono pewne dyskusja w celu umożliwienia przyłączenia metadanych w pand, ale do tej pory nic nie wydaje się pochodzić od niego.
Z możliwym wyjątkiem C ++ 11, nie znam żadnego języka ani biblioteki, które zapewniłyby naprawdę dobre wsparcie pierwszej klasy. Zawsze występuje utrata wydajności i brak zgodności
.
źródło
Zarządzanie niepewnościami jest w rzeczywistości dość delikatnym problemem statystycznym. Znane wyrażenie propagacji błędów przy użyciu kwadratowych pochodnych cząstkowych jest dobre, gdy błędy są zwykle rozłożone, niezależne i małe. Zazwyczaj tak jest; i nawet jeśli normalność lub niezależność nie są w pełni spełnione, w większości praktycznych przypadków wynik może być dość zbliżony do rzeczywistego, pod warunkiem, że interesuje Cię jedynie rozsądne oszacowanie przedziału.
W przypadkach, w których potrzebna jest większa dokładność, jeśli masz ładny model analityczny dla swoich niepewności, istnieją metody, takie jak maksymalne prawdopodobieństwo, które można wykorzystać do uzyskania poprawnych estymatorów.
Ale jeśli chcesz uzyskać poprawny wynik prawidłowy dla dowolnego możliwego sygnału wejściowego (wyobraź sobie, że musisz analitycznie modelować głośny detektor, w którym szum jest tego samego rzędu co precyzja), biorąc pod uwagę wszystkie korelacje i będąc w stanie zbadać całą odpowiednią przestrzeń parametrów , potrzebujesz metod Monte Carlo. Dodaj losowy szum do kilku instancji danych wejściowych i uruchom pełną analizę. Oczywiście może to oznaczać, że musisz pomnożyć swój czas obliczeniowy przez setki lub tysiące, ale zawsze jest to możliwe do zrównoleglenia.
Ostatecznie wszystko zależy od tego, co chcesz zrobić, od stopnia dokładności i od ilości posiadanych zasobów.
źródło