Data Science: Don't use CSV files, use Feathers!

Поделиться
HTML-код
  • Опубликовано: 26 окт 2024

Комментарии • 54

  • @cmdlp4178
    @cmdlp4178 2 года назад +3

    Die Zuweisung 'df = read_feather()' überschreibt die alte Referenz zur Dataframe in df, sodass die alte Dataframe gelöscht wird, dh. es würde hier noch zusätzliche Zeit für das freigeben des Speichers der Dataframe eingerechnet werden. Ein 'del df' oder auch 'df = None' könnte hier vor dem starten des Timers eingebaut werden, sodass das Löschen der großen Dataframe nicht erst bei der Zuweisung geschieht. Genau so könnte man hier auch verschiedene Variablennamen nutzen.

  • @jonni9300
    @jonni9300 2 года назад +7

    Bei riesigen Datensätzen fällt das Editieren von Hand in der Datei sowieso in den Hintergrund, dass lasse ich lieber meinen Rechner erledigen... sehr nice erklärt

  • @UnbekannterArnoNym
    @UnbekannterArnoNym 2 года назад +27

    Mich hätte noch die Dateigröße und der Vergleich mit z.B. Pickle interessiert. Danke

    • @mafa5534
      @mafa5534 2 года назад +7

      Bei mir hat die gleiche Ausführung 850MB mit csv und 321MB mit feather.

  • @Apfelloch
    @Apfelloch 2 года назад +8

    Ich kann mich noch an ein Data Science/ML Modul im Studium erinnern, als ich das erste Mal auf Feather gestoßen bin und was für ein Segen das war :D

  • @StarrshProductions
    @StarrshProductions 2 года назад +6

    Für alle, die R und Python nutzen: Feather ist interoperabel! Es gibt das package "feather" für R, das ihr nutzen könnt. Daher ist feather ne gute bridge für beide systeme! Die Frage, die schon mal genannt wurde bleibt dennoch: Derzeit ist für sehr viele csv noch das Standardformat. CSV in R hat zB das Problem, dass es durch öffnen in anderen apps geändert wird und dann die R Funktionen zum Einlesen gerne spinnen. Insofern ist feather hier besser, da man gezwungen ist, es in der IDE oder eben der Console aufzumachen. Schöne Sache!

  • @cooperfeld
    @cooperfeld 2 года назад +4

    Dass feather-Dateien nicht im Klartext lesbar und editierbar sind, hätte ich gleich am Anfang des Videos gesagt. Daher sind sie kein Ersatz für CSV's, können aber ggf. eine effizientere Alternative sein. Interessanter wäre m.E. gewesen, die Vor- und Nachteile der Feathers gegenüber anderen Binärformaten aufzuzeigen.

  • @KarlAlfredRoemer
    @KarlAlfredRoemer 2 года назад +74

    Die Tatsache, dass man in uncodierte CSV jederzeit reinschauen und herum editieren kann, sollte man nicht unterschätzen.

    • @Robin-uh7zz
      @Robin-uh7zz 2 года назад

      Kannst du mit einem Hexeditor auch :P

    • @fbu_channel
      @fbu_channel 2 года назад

      Editierbarkeit ist bei einem unterspezifierten Format wie CSV eher Fluch als Segen. Da ist nix festgelegt, kein Trennzeichen, keine Quotierung von Steuerzeichen etc. Ergo kann man eine CSV Datei schnell kaputt machen wenn man sie in einem Tabellenkalkulation lädt und dann wieder falsch rausspeichert. Von der Datenstruktur ganz zu schweigen - ob ein Zahlenfeld int sein muss oder auch Floats enthalten kann, lässt sich in CSV nicht definieren. Streng genommen könnte das Format Zeile für Zeile wechseln.

  • @stefanuebener
    @stefanuebener 2 года назад +1

    Ich nutze für große Datenmengen auch gerne das Parquet-Format. Das hat auch eine eingebaute Komprimierung.

  • @Tracker9992
    @Tracker9992 2 года назад +7

    Ich hätte in der Schleife die Reihenfolge von Feather und CSV nach jeder Iteration getauscht bzw. in allen Kombinationen gleichverteilt ausgeführt, da durch Caches womöglich ein Bias entsteht.

  • @guelakais1438
    @guelakais1438 2 года назад +2

    Der Knackpunkt bei .feather ist, welche Programmiersprachen/Tools dieses Dateiformat überhaupt übersetzen können. einen .csv - parser kann ich mir theoretisch in jeder Programmiersprache mit verhältnismäßig geringem Aufwand selbst schreiben und auch die meisten Tabellenprogramme, wie excel oder libre calc, können damit etwas anfangen. Vor allem dann, wenn auch Naturwissenschaftler mit den Daten etwas anfangen wollen und dann mit Excel ankommen, stelle ich mir das schwierig vor. Bei Wissenschaft geht es auch darum, Daten einer möglichst breiten Masse zur Verfügung zu stellen.

    • @Tri-Technology
      @Tri-Technology 2 года назад +1

      Hier geht es aber nicht unbedingt um Datensätze, die von Menschen wieder gelesen werden sollen. Z.B. hat eine CSV Datei eines IOT-Netzwerks mit 1 Millionen Geräten, dass 4 verschiedene uint8 Parameter für jede Sekunde eines tages abspeichert eine Größe von 350 MB. Wenn ich das für ein ganzes Jahr speichern möchte, um danach CNNs zu trainieren muss ich 130 GB speichern, die mir das ganze Jahr über den Speicher belegen, bis ich sie dann mal 2 Wochen lang nutze. Den Datensatz händisch auszulesen ist bei solchen Datenmengen eh zwecklos und eine csv Datei lässt sich in dieser Größe auch nicht mehr mit Excel öffnen. Aber eine Millionen Geräte ist ja nicht das Limit. Wenn ich in 20 verschiedenen Ländern je 5 Millionen Geräte habe sind das bereits 13 Terabyte, die auf einen herkömmlichen Arbeitsrechner gar nicht gespeichert werden können und dann verdoppeln wir das ganze noch einmal wegen der Back Ups. Und das ganze nur um ein paar 8-bit Integer als Rohdaten zu sammeln.

  • @saschazapf5232
    @saschazapf5232 2 года назад +4

    Naja, intern kann man das nutzen. Aber wen die Dateien noch irgendwo anders verwendet werden dann ist csv immer noch ein gute Wahl. Fraglich wieviel Programme feather als Datenformat unterstützen.

  • @greansilver
    @greansilver 2 года назад +1

    Super Video und gut erklärt, ich hätte nur die letzten beiden print statements in print(f"{duration_feather / runs = }") und print(f"{duration_csv / runs = }") geändert. Dadurch wird die Ausgabe meiner Meinung nach deutlich übersichtlicher, weil man auch gleich sieht, auf welche Variablen sich das Ergebnis bezieht :)

  • @Tri-Technology
    @Tri-Technology 2 года назад +4

    Ich verwende feather immer um große Datenmengen zu speichern wenn das Programm läuft. Während der Entwicklung nutze ich jedoch manchmal csv files damit ich mir die Prozedur erst mit kleineren Datensets in Tabellenkalulaltionsprogrammen überlegen kann. Einige davon unterstützen den Import von feather leider nicht.

  • @Aradiv
    @Aradiv 2 года назад +7

    Naja Textformat vs Binary war jetzt nicht so sonderlich überraschend
    Generell wäre ein Vergleich der Datenformate eventuell interessant und wann und warum man welches davon Verwenden sollte / könnte.
    Also Feather / Parquet / HDF5 / usw.

  • @patroncarbon9796
    @patroncarbon9796 2 года назад +8

    Ehrenmorpheus

  • @carl-marvin
    @carl-marvin 2 года назад +2

    Unabhängige Zufallsgrößen sind vielleicht nicht das Beste, um ein komprimierendes Datenformat wie Feathers zu testen. Echte Daten haben für gewöhnlich weniger Entropie, da spielt Kompression seine Stärke besser aus.
    Ich habe das Video nach ein paar Minuten nicht weiter anschauen wollen. Es hat einfach gefehlt, um was es eigentlich geht - was Feather überhaupt ist. Stattdessen wilde Tests und wenig Theorie. Da habe ich lieber selber nachgelesen.

  • @yt7042
    @yt7042 2 года назад +6

    Ein Wort zur Dateigröße wäre auch angebracht gewesen.

  • @FilmfanOliver1992
    @FilmfanOliver1992 2 года назад +3

    Ist Feathers auch für andere Programmiersprachen verfügbar ?

  • @alcar32sharif
    @alcar32sharif 2 года назад +4

    In fast allen Anwendungsfällen müssen Daten human readable sein. Damit sind Formate wie feather, ONNX usw. keine Lösung.

    • @Tri-Technology
      @Tri-Technology 2 года назад

      Warum sollten sie human readable gespeichert werden, wenn man sie auch einfach wieder einlesen kann?

  • @omegasigma4500
    @omegasigma4500 2 года назад +3

    Welche Vorteile bietet Feather gegenüber Parquet?

    • @goldnas
      @goldnas 2 года назад +1

      Feather ist ein bissl schneller beim schreiben, langsamer beim lesen. Bei parquet ist es genau umgekehrt. Schreibst du genau so oft wie du liest, nimm feather. Wenn du einmal schreibst und 5 mal liest, nimm Parquet.

  • @matzedrizzi6222
    @matzedrizzi6222 2 года назад

    Interessant wäre auch der Vergleich mit Datenbankenlösungen wie MySQL und derm Schreiben und Lesen mittels Cursor zum Beispiel.

  • @TheodorVanBergen
    @TheodorVanBergen 2 года назад

    Hi Morpheus, es wäre sehr interessant wie ich eine bestehende csv Datei in feather konvertieren kann. Ich habe das Problem , dass ich alle App Store Apps gescrapt habe und die jetzt gerne analysieren würde in Notebook, aber die csv Datei ist zu groß und wenn ich das in Chunks verwandle kann ich die Daten nicht mehr analysieren. Gibt es dazu eine Lösung? Würde mich über eine schnelle antwort sehr freuen

  • @saschafedermann8677
    @saschafedermann8677 2 года назад

    Irgendeinen Tod muss man bekanntlich sterben und je nach Szenario kann das eine oder andere eben besser sein. Außerdem: Dario Radecic hätte sich bestimmt gefreut, mit seinem Artikel v. Sep. 2021 (auf towardsdatascience) verlinkt zu werden, wenn der Source schon "adaptiert" wird.

  • @micha8099
    @micha8099 2 года назад

    Gibt es Feather eigl auch für nodeJS? Alle npms, die ich dazu gefunden habe, sind was anderes.

  • @oholimoli
    @oholimoli 2 года назад

    Ich empfehle immer hdf5, damit lassen grosse Datenmengen effizient speichern und laden.

  • @Voodoo3300
    @Voodoo3300 2 года назад +1

    Werde mir das aber gleich mal anschauen, rufe gerade Daten aus verschiedene Quellen ab und führe diese zusammen.
    Klingt nach einer guten Möglichkeit, die Daten aus der vorverarbeitung zu speichern 🤔
    was mich noch interessieren würde: ein Vergleich mit sqlite

    • @m.keller3226
      @m.keller3226 2 года назад +1

      Die Frage ist immer, was man hinterher mit den Daten machen will. Will man im eigenen Programm im Speicher Berechnungen anstellen, kann feather Vorteile bringen, weil man weniger Platz auf dem Datenspeicher braucht und Zugriffe auf diesen in der Regel hohe Zeitkosten haben. Will man hingegen Sachen machen, die eine SQL-Datenbank leisten kann, ist diese in der Regel viel schneller, weil in den üblichen SQL-Datenbanksystemen viele Mann-Jahrtausende an Optimierungsarbeit drinstecken.

  • @patrickschulz6265
    @patrickschulz6265 2 года назад

    Wie ist der Vergleich zu PyArrow?

  • @sorenholzenkamp8877
    @sorenholzenkamp8877 2 года назад +1

    Wie ist's im Vergleich mit pickle?

  • @KarlAlfredRoemer
    @KarlAlfredRoemer 2 года назад

    Warum ist Feather so viel schneller? Kann es nicht sein, dass die Implementation von CSV write und read einfach extrem ineffizient ist?

    • @Ph34rNoB33r
      @Ph34rNoB33r 2 года назад +3

      Feather als Binärformat dürfte viel von den Daten einfach kopieren, während CSV in eine Textdarstellung konvertieren muss und die beim Lesen dann wieder parst. Ich gehe davon aus, dass die beiden die meiste Zeit fressen.
      Nebenbei sind Feather-Dateien dadurch (und durch zusätzliche Kompression) kleiner, was auf modernen SSD vielleicht nicht mehr so viel ausmacht.

  • @julianschmidt6669
    @julianschmidt6669 2 года назад +1

    Parquet anstatt von CSQ war zu verwenden war auch sein Segen … so viel schneller so viel weniger benötigter Speicher

  • @dokomann
    @dokomann 2 года назад +1

    Wie groß ist denn der Grössenunterschied der Dateien??

    • @m.keller3226
      @m.keller3226 2 года назад

      Da feather in der Regel LZ4-komprimierte (alternativ auch Zstandard) Binärdaten sind, dürften der Plattenplatzbedarf in der Regel bei unter 25% der Menge liegen, die eine CSV-Datei braucht, sofern man es mit Zahlen zu tun hat.

  • @cptnKirk
    @cptnKirk 2 года назад

    Mit der Schütze erstmal lecker Zucchini Grillen 👍

  • @Str1tter
    @Str1tter 2 года назад

    Python kommt von Monty Python, also wird es genauso ausgesprochen.

  • @RazzFazz-Race
    @RazzFazz-Race 2 года назад

    Eigentlich zeigt das Ganze doch nur das Python einfach ne miese Programmiersprache (in punkto performance) ist....

  • @janmaybach7824
    @janmaybach7824 2 года назад +1

    Das ist ja federleicht 😂

  • @konstruktivismuskonstru9360
    @konstruktivismuskonstru9360 2 года назад

    csv verwendet man eh nur wenn es per Texteditor bearbeitbar sein soll....

  • @unbekannter_Nutzer
    @unbekannter_Nutzer 2 года назад

    Das ist nicht genormt, sondern gemittelt.

  • @GIJOEG36
    @GIJOEG36 2 года назад +1

    Ganz wichtigrr grund pro csv... import in excel

    • @mafa5534
      @mafa5534 2 года назад +3

      Wenn du wirklich große Daten mit Millionen Spalten hast, kannst du Excel vergessen. Und genau das ist ja der Use Case in diesem Fall.

    • @GIJOEG36
      @GIJOEG36 2 года назад

      @@mafa5534 natürlich sind extreme Datenmengen der Grenzfall. Wenn du jetzt zum Beispiel mit bestimmten Wissenschaftlern redest, finden die etliche GB von Excel Tabellen noch handlich.
      Ich musste selbst schon mal einen exporter für messreihen in Excel bauen und da war meine einzige, sinnvolle Lösung der zwischenstopp via CSV und der automatische Import in ein Excel Dokument.

  • @gemeinerwolfsfu4389
    @gemeinerwolfsfu4389 2 года назад

    Ich nutze meist hdf5 oder pickle.

  • @jxsl13
    @jxsl13 2 года назад

    Vergleich beider Dateigrößen.

  • @phoenixhome
    @phoenixhome 2 года назад

    Erster