Pandas Einschränkungen und ihre Alternativen in Python

11

Ich habe irgendwo gelesen, dass Pandas zuerst für die Finanzwelt entwickelt wurde, zumindest nicht speziell für Naturwissenschaften (Physik, Biologie usw.). Gibt es also ein ähnliches Datenanalyse-Python-Paket, das eher „naturwissenschaftlich orientiert“ ist?

Ich habe gerade angefangen, Pandas zu verwenden, und bin bereits auf zwei Probleme gestoßen, die ich ohne die Verwendung anderer Pakete oder einer hausgemachten Lösung nicht lösen könnte:

  • Wie gehe ich mit Unsicherheiten um?
  • Wie definiere ich einfach die Einheiten meiner Daten?

Vielleicht gibt es noch andere Probleme, aber mir fehlt die Erfahrung, um genauer zu sein. Im Moment denke ich über das Unsicherheitspaket nach, um den ersten Punkt zu lösen, aber ich bin nicht sicher, ob es mit Pandas gut funktioniert und die Rechengeschwindigkeit nicht verringert. Eigentlich suche ich nicht nach einer Möglichkeit, mit Unsicherheiten zu rechnen, sondern nach einer einfachen Möglichkeit, Unsicherheiten zusammen mit meinen importierten Daten zu speichern. Für den zweiten Punkt habe ich keine bessere Lösung gefunden, als ein Wörterbuch außer meinem DataFrame zu erstellen, um die Einheiten zu verwalten, die den einzelnen Daten zugeordnet sind.

Wenn Sie jemals dieselben Probleme hatten, wie haben Sie sie gelöst oder welche anderen Pakete verwenden Sie zur Datenmanipulation / -speicherung / -analyse in Python in den Naturwissenschaften?

Clark
quelle
2
Eine Alternative zu Pandas, die Einheiten und Unsicherheiten unterstützen, ist die TableKlasse in Astropie.
P3trus
1
Es scheint großartig, ich wusste nicht, dass Astropie solche Dinge hat. Trotzdem warf ich einen Blick auf das Dokument, konnte jedoch keine expliziten Beispiele finden, in die Unsicherheiten gesetzt werden konnten Table(aber ich fand den Einheitenteil). NDDatascheint das zu schaffen, aber ich bin mir nicht sicher über die Unterschiede zwischen diesen Klassen. Wenn es Ihnen nichts ausmacht, Ihren Kommentar in eine Antwort mit einem zweizeiligen Beispiel umzuwandeln, würde ich ihn gerne akzeptieren!
Clark

Antworten:

5

Ich stimme Davidmh zu, dass die Berechnung von Unsicherheiten nicht von einer automatischen Bibliothek durchgeführt werden sollte. Sie werden sehr schnell auf einen Fall stoßen, in dem die Automatik ausfällt (versuchen Sie beispielsweise eine Fourier-Transformation).

Sie sagen jedoch, dass Sie nur die Unsicherheiten mit Ihren Daten behalten möchten. Warum fügen Sie sie nicht einfach als zusätzliche Spalte in Ihren Datenrahmen ein? So gehe ich normalerweise mit Unsicherheiten bei Pandas um.

Pandas hat keine Unterstützung von Einheiten, aber alles kann in einen Datenrahmen gehen , damit Sie das verwenden könnten Mengen Paket direkt. Nicht alle Funktionen funktionieren jedoch bei Pandas (obwohl immer noch eine überraschende Menge vorhanden ist), und es wird eine Leistungsminderung geben.

Es gab einige Diskussionen , um das Anhängen von Metadaten in Pandas zu ermöglichen, aber bisher scheint nichts daraus geworden zu sein.

Mit der möglichen Ausnahme von C ++ 11 kenne ich keine Sprache oder Bibliothek, die Ihnen wirklich gute, erstklassige Unterstützung für Einheiten bieten würde. Es kommt immer zu Leistungseinbußen und mangelnder Kompatibilität

.

LKlevin
quelle
2

Der Umgang mit Unsicherheiten ist eigentlich ein recht heikles Statistikproblem. Der bekannte Ausdruck für die Fehlerausbreitung unter Verwendung quadratischer Teilableitungen ist gut, wenn die Fehler normal verteilt, unabhängig und klein sind. Dies ist normalerweise der Fall; Selbst wenn die Normalität oder Unabhängigkeit nicht vollständig erfüllt ist, kann das Ergebnis in den meisten praktischen Fällen dem tatsächlichen ziemlich nahe kommen, vorausgesetzt, Sie sind nur an einer vernünftigen Schätzung des Intervalls interessiert.

sin(2±0.1)=sin(2)sin(1.9)sin(2.1)

Für die Fälle, in denen mehr Genauigkeit erforderlich ist und Sie ein gutes analytisches Modell für Ihre Unsicherheiten haben, gibt es Methoden wie die maximale Wahrscheinlichkeit, mit denen die richtigen Schätzer abgeleitet werden können.

Wenn Sie jedoch ein korrektes Ergebnis wünschen, das für jede mögliche Eingabe gültig ist (stellen Sie sich vor, Sie müssen einen verrauschten Detektor analytisch modellieren, bei dem das Rauschen in der gleichen Größenordnung wie die Genauigkeit liegt), alle Korrelationen berücksichtigen und den gesamten relevanten Parameterraum untersuchen können benötigen Sie Monte-Carlo-Methoden. Fügen Sie mehreren Instanzen Ihrer Eingaben zufälliges Rauschen hinzu und führen Sie die vollständige Analyse durch. Dies kann natürlich bedeuten, dass Sie Ihre Rechenzeit mit Hunderten oder Tausenden multiplizieren müssen, aber es ist immer parallelisierbar.

Letztendlich hängt alles davon ab, was Sie tun möchten, mit welcher Genauigkeit und wie viele Ressourcen Sie haben.

Davidmh
quelle