Ich muss hier mal eine Lanze brechen für Python datatables von h2oai. Wenn man große Tabellen verarbeiten und viel und schnell darauf rechnen will, kenne ich nichts schnelleres und vielseitigeres. github.com/h2oai/datatable
Verarbeite damit gerade eine 35 GB große Tabelle mit 150 Mio. Zeilen und 24 Spalten auf dem MacBook Pro, und es ist so schnell, dass ich mir bisher nicht die Mühe gegeben habe, die Performance zu messen, und das will bei mir was heissen. Die Entwickler haben das aber gemacht:
h2o.ai/blog/speed-up-… Auch der Hauptspeicherverbrauch ist vergleichsweise gut; mit der 35GB-Tabelle habe ich nicht über 3GB gesehen, und die meisten vergleichbaren Technologien machen deutlich früher schlapp:
Ja, die Benchmarks sind von den Entwicklern, aber sie bestätigen meinen Eindruck, und es gibt mehr: medium.com/@marekgowacki/…
Nach mehreren Jahren mit 0.x Versionsnummern kommt demnächst die Release 1.0, und ich nutze es seit einem Jahr und hatte wenig Probleme. Die Dokumentation ist auch ok. Und es ist natürlich Open Source, MPL2.0.
Es ist allerdings weder die bekannteste noch meistverwendete Library für den Zweck, weil sie vergleichsweise neu ist, die erste Release war im März 2018, wobei zu dem Zeitpunkt schon einiges an Arbeit reingeflossen war, aber nicht Jahre.
Für mich füllt (py)datatables eine Lücke zwischen SQL-Datenbanken und auch den größeren NO-SQL-Datenbanken, wo man immer spürt, dass da eine Maschinerie dahinter arbeitet.
Datatables hat auch eine Maschinerie dahinter, aber man merkt sie nicht. Es fühlt sich an wie ein 2D-Array mit coolen Features, wo man komplexe Ausdrücke für die Indizes nehmen kann, die auch auf den Inhalt der Tabelle und Variablen im Python-Kontext zugreifen können.
Diese Ausdrücke werden dann an den in C++ geschrieben Kern übergeben und dort supereffizient und zum Teil "lazy" ausgeführt, also erst, wenn das Ergebnis benötigt wird, und es rechnet mit mehreren Threads. Bei alledem gibt es nichts zu konfigurieren. Dafür läuft es echt gut.
Das Ganze ist jetzt kein Ersatz für eine richtige Datenbank, wo man überwiegend mit einzelnen Datensätze hantiert und von verschiedenen Stellen zugreifen möchte und einzelne Datensätze gezielt persistent aktualisieren will, sondern es ist etwas, um schnell mit größeren ...
... Mengen an Zahlen und Strings zu hantieren, ohne sich allzuviel Gedanken über ein Schema oder Datentypen einerseits oder Speichermanagement und Performance andererseits zu machen. Beim Einlesen einer Datei wird für jede Spalte automatisch ein einheitlicher Datentyp gewählt,..
..je nachdem, was in der Spalte steht. Stehen da nur ganze Zahlen drin, wird es eine Ganzzahlen-Spalte, sind da Buchstaben drin, ist es eine String-Spalte. Man kann es aber auch selbst setzen oder konvertieren, aber das habe ich praktisch nie gebraucht.
Der .csv import funktioniert auch besser als in jedem Tabellenkalkulationsprogramm. Mit Word, Numbers, OpenOffice muss dabei man so oft Einstellungen ändern, obwohl es fast trivial ist, zu erkennen, was Trennzeichen und Dezimalpunkte sind und welchen Datentyp eine Spalte hat,..
...aber irgendwie hat sich bisher niemand die Mühe gemacht, dass mal ordentlich zu lösen. Oder kennt ihr was? Datatables ist da auch nicht perfekt, aber gefühlt recht ok, und vor allem konfiguriert man nicht bei jedem .csv-import neu - wenn überhaupt.
Will sagen, es verhält sich sehr wie eine Sprache mit dynamischen Typen, wie Python oder Javascript, mit denselben Nachteilen, nämlich dass Fehler allgemein später im Entwicklungs- und Verarbeitungsprozess erkannt werden, aber mit dem Vorteil, dass man einfach loslegen kann,...
...nah an den Daten dran, ohne wie sonst oft Dinge mehrfach hinschreiben zu müssen, die eigentlich überhaupt nicht hingeschrieben werden müssten, und sich dann durch Schichten durchzuarbeiten, statt Funktionalität zu implementieren.
So eine dynamische Umgebung ist ideal, wenn man Daten jagt, wie ich zum Beispiel neulich die Zensusdaten für alle Landkreise und die Berliner Bezirke und alles in verschiedenen Tabellen mit verschiedenen Spaltennamen daherkommt, oder allgemein in "Laborsituationen".
Meist aber bezahlt man in dynamischen Umgebungen mit hohen Performancenachteilen, und auch hier ist es nicht ganz umsonst, aber die Performance ist im Vergleich zum Programmieraufwand hier so gut, dass es die Grenzen dessen, was man auf dem Laptop machen kann, weit hinausschiebt.
Ja, es gibt große Datenbanksysteme mit viel Hardware und viel Speicher, die mit viel größeren Datenmengen klarkommen, aber eher nicht auf einem Laptop oder PC. Mit datatables dauert "select" mit mehren Variablen und Ergebnis by(Landkreis) auf 150 Mio Zeilen so 0,1-0,3 sec.
Das sind alle Daten, die das RKI seit einem Jahr veröffentlicht hat. Die sind leider alle nötig, um die täglich vom RKI veröffentlichten Zahlen richtig zu berechnen; aus dem letzten Dump allein kann man das nämlich nicht, obwohl er eigentlich fast alle früheren Daten enthält.
Bin jetzt zu 90% durch, um meine aktuell kaputte Risikotabelle mit der neuen Pipeline zu speisen, die präzise die täglichen RKI-Zahlen aus den Dumps herausrechnet, auch für die Altersgruppen und Geschlechter, wobei das die Rechenzeit verzehnfacht und ich da noch was machen muss.
Das coolste Feature aber, dass durch die neue Pipeline ohne viel Aufwand mit abfällt ist, dass man sich zeitlich in der Tabelle wird zurückbewegen können, weil ich jetzt Zeitreihen für alle Tabellenwerte habe, die man natürlich auch visualisieren kann, aber als erstes will ich...
...die Risikotabelle in möglichst ähnlicher Form wieder nutzbar machen. Es haben jetzt auch verschiedene Leute Hilfe angeboten, und sobald ich die Tabelle am Start habe, freue ich mich, gemeinsam nette neue Dinge zu bauen, die helfen, den Blick auf die Pandemie zu schärfen.

• • •

Missing some Tweet in this thread? You can try to force a refresh
 

Keep Current with Pavel Mayer

Pavel Mayer Profile picture

Stay in touch and get notified when new unrolls are available from this author!

Read all threads

This Thread may be Removed Anytime!

PDF

Twitter may remove this content at anytime! Save it as PDF for later use!

Try unrolling a thread yourself!

how to unroll video
  1. Follow @ThreadReaderApp to mention us!

  2. From a Twitter thread mention us with a keyword "unroll"
@threadreaderapp unroll

Practice here first or read more on our help page!

More from @pavel23

6 Mar
Corona-Zahlen-Update 5.2.2021: 7-Tage-Inzidenz (blaue Treppe) steigt moderat weiter auf 69,7/100.000 bzw. 57838 Fälle um +5,2% gegenüber den 7 Tagen davor, 8262 pro Tag.
7-Tage-R-Wert (dunkelgrüne Treppe) leicht auf 1,03 gesunken.
1985 Tote in den den letzten 7 Tagen, 284/Tag, -14% gegenüber den 7 Tagen davor.
Read 28 tweets
4 Mar
Die Engländer haben einfach die besten Daten zu Corona, meilenweit vor uns. Das hier ist die aktuelle Auswertung, wo sich die Leute anstecken: Beim Einkaufen und beim Arbeiten. Schulen spielen nur eine untergeordnete Rolle - sie haben nämlich zu. gov.uk/government/sta…
So sah das im Dezember aus, zu Ferienbeginn. Kitas und Horte vor Shopping als Quelle von Infektion, Schulen auf Platz 4. Ist nicht unbedingt auf Deutschland übertragbar, aber zumindest ein lautes Warnsignal. Sagt bitte hinterher nicht, ihr hättet es nicht gehört.
So sah der zeitliche Verlauf von Ausbrüchen in Schulen und Kitas in England aus. Mittlerweile gibt es nur noch Ausbrüche in Kitas (dunkelrot), seit die Schulen überwiegend zu sind.
Read 13 tweets
2 Mar
Nach dem zunehmenden Widerstand gegen #Nocovid wollte ich einfach nur den Ball ins Lager der Neinsager spielen und hören, was denn deren Vorstellungen sind, wie es jetzt weitergehen soll. Hatte nicht erwartet, wie emotional die Debatte werden würde.
Die vernünftigen Antworten liefen alle auf mehr und gezieltes Testen und mehr Masken hinaus, was auf jeden Fall helfen kann - ich fürchte, nur nicht genug.
Ein ungewöhnlich hoher Teil der Antworten enthielt persönliche Angriffe oder irgendwelche Herabsetzungen, oft verbunden mit dem Hinweis, dass es von allein weggeht, wenn der Sommer kommt. Und die Alten sind ja fast durchgeimpft, da können wir der Infektion freien Lauf lassen.
Read 25 tweets
1 Mar
Eine Frage an #ZeroCovid Gegner: In 4 Wochen wird die Inzidenz deutschlandweit über 200 liegen, in 8 Wochen über 500/100.000, also mehr als 60.000 Neuinfektionen pro Tag. Was genau ist euer Vorschlag?
Ich kann verstehen, wenn jemand sagt, so what, das wird ja passieren, ob wir lockern oder nicht. Der Lockdown funktioniert nicht. Warum können wir nicht wenigstens etwas mehr Normalität haben, Einkaufen und Essen gehen etwa. In anderen Ländern geht das schließlich auch.
Und in der Tat finden sich alle möglichen Länder, etwa Schweden und weite Teile der USA, wo trotz hoher Inzidenzen Läden und Restaurants geöffnet sind. Das bleibt allerdings nicht ohne Folgen, auch wenn es in Schweden gelungen ist, die Zahlen mit weniger Maßnahmen zu senken.
Read 31 tweets
27 Feb
Berlins Regierender Müller kapituliert vor der Pandemie und spricht sich gegen "No Covid" aus. Er spricht von einem "zweiten Weg" und möchte den Berlinern nicht zu viel zumuten, um die nächste Sterbewelle zu verhindern. bz-berlin.de/berlin/mueller…
Covid hat in Berlin bis Anfang November offiziell 261 Berlinern das Leben gekostet. Seitdem hat sich die Zahl verzehnfacht und steht jetzt bei 2814 Toten. Davon waren 860 unter 60-79 Jahre alt, 96 waren 35-59 Jahre alt, und 2 waren noch jünger.
Infektionen hatten wir in Berlin bis Anfang Oktober rund 15.000, jetzt, jetzt sind wir bei 128.000. Was glaubt Müller, wird die Bilanz der nächsten Welle sein?
Read 16 tweets
26 Feb
Kleines Corona-Zahlen-Update 26.2.2021: 7-Tage-Schnitt bei neuen Fällen (blaue Treppe) +27% ggü. der Vorwoche, Inzidenz wieder bei 80/100.000. Die neue Welle startet furioser als erwartet.
7-Tage R-Wert (dunkelgrüne Treppe) auf 1,15 gestiegen. Damit kämen wir in 4 Wochen auf Inzidenz 200, aber der R-Wert dürfte allein durch die Verbreitung ansteckenderer Mutationen in den nächsten 2 Wochen auf 1,3 ansteigen.
7-Tage-Schnitt bei Corona-Toten (schwarze Treppe) sinkt weiter und wird das in den nächsten 2-3 Wochen wohl noch weiter tun. Danach aber werden wir sehr wahrscheinlich einen Anstieg sehen, begleitet von einem zunehmenden Anteil jüngerer Todesopfer.
Read 17 tweets

Did Thread Reader help you today?

Support us! We are indie developers!


This site is made by just two indie developers on a laptop doing marketing, support and development! Read more about the story.

Become a Premium Member ($3/month or $30/year) and get exclusive features!

Become Premium

Too expensive? Make a small donation by buying us coffee ($5) or help with server cost ($10)

Donate via Paypal Become our Patreon

Thank you for your support!

Follow Us on Twitter!