Seite 1 von 1

Externe Daten

Verfasst: Samstag 13. August 2022, 06:55
von Bykl
Bisher habe ich Daten extern in Excel-Tabellen ausgelagert.

Excel wird mir jetzt zu klein, da ich es mit Datenmengen aus fakultätmässigen Entwicklungen zu tun haben. Deshalb die Frage, wie kann ich Daten extern in eine Datei Scheiben und in welchem Format, dass ich sie hinterher für ein anderes Programm wieder nutzen kann. Hab sowas ausser mit Excel noch nicht gemacht.

Danke für die hilfreiche Antwort.

Re: Externe Daten

Verfasst: Samstag 13. August 2022, 07:30
von Sirius3
Wie äußert sich das "zu klein" konkret?
Was für Datenformate unterstützt das andere Programm?
Um welche Art und welchen Umfang an Daten handelt es sich?
Was wird mit den Daten gemacht?

Re: Externe Daten

Verfasst: Samstag 13. August 2022, 08:22
von __deets__
Für sowas nutzen Leute zb HDF5, oder gleich vollwertige Datenbanken.

Re: Externe Daten

Verfasst: Samstag 13. August 2022, 10:59
von Bykl
Sirius3 hat geschrieben: Samstag 13. August 2022, 07:30 Wie äußert sich das "zu klein" konkret?
in Excel kannst du nur Tabellen bis 65 tausend nochwas unterkriegen.
Sirius3 hat geschrieben: Samstag 13. August 2022, 07:30 Was für Datenformate unterstützt das andere Programm?
Ich habe es noch nicht geschrieben, und mache es von der Antwort abhängig.
Sirius3 hat geschrieben: Samstag 13. August 2022, 07:30 Um welche Art und welchen Umfang an Daten handelt es sich?
natürliche Dezimalzahlen
Umfang: Primfakultäten!!!!! Da geht der Umfang steil nach oben. Schon bei 31 Primfakultät lief mein Programm 9 h. Die höheren PF teil ich daher auf!

Sirius3 hat geschrieben: Samstag 13. August 2022, 07:30 Was wird mit den Daten gemacht?
sie werden gesiebt und gesiebt, bis ich die Zahlen habe, die ich suche....

Re: Externe Daten

Verfasst: Samstag 13. August 2022, 14:41
von Sirius3
Was? Dein Rechner braucht 9h um 31# auszurechnen?
Und für was brauchst Du mehr als 65535 Spalten?
Was verstehst Du unter Primfakultät?

Re: Externe Daten

Verfasst: Samstag 13. August 2022, 14:46
von __blackjack__
@Bykl: Die 65k-Zeilen-Grenze war früher mal im alten Binärformat. Das/die XML-basierte(n) Format(e) kann/können deutlich mehr. Allerdings auch mit entsprechend aufgeblasenem Speicherverbrauch durch das XML. Da würde ich CSV vorziehen wenn man nicht nur irgendeine besondere Eigenschaft von Tabellendateien für Tabellenkalkulationen braucht.

Falls man die Daten als Pandas-`DataFrame` schreiben und lesen könnte, also alles in den Arbeitsspeicher passt, wäre das Feather-Format meine Wahl wenn es möglichst kompakt und schnell gespeichert und geladen werden soll. Das basiert auf der Apache-Arrow-Bibliothek und es gibt Anbindungen für viele Sprachen/Systeme aus dem Data-Science-Umfeld, also beispielsweise auch R und Matlab, aber auch C/C++/C#/Java/Go/….

Falls es mehr ist, als in den Speicher passt, HDF5 oder SQLite, oder tatsächlich ein RDBMS mit Server.

Re: Externe Daten

Verfasst: Sonntag 14. August 2022, 07:11
von Bykl
Sirius3 hat geschrieben: Samstag 13. August 2022, 14:41 Was? Dein Rechner braucht 9h um 31# auszurechnen?
Stell Dir vor, Dein Rechner muss 31 PF (=3*5*7*11*13*17*19*23*29*31= 100280245065) Folgen nach bestimmten Merkmalen durchsuchen und bestimmte davon aussortieren. Und 31 PF ist eine kleine Zahl. z.B. gegenüber 97 PF.
Sirius3 hat geschrieben: Samstag 13. August 2022, 14:41 Und für was brauchst Du mehr als 65535 Spalten?
dafür!

Re: Externe Daten

Verfasst: Sonntag 14. August 2022, 07:18
von Bykl
__blackjack__ hat geschrieben: Samstag 13. August 2022, 14:46 @Bykl: Die 65k-Zeilen-Grenze war früher mal im alten Binärformat. Das/die XML-basierte(n) Format(e) kann/können deutlich mehr. Allerdings auch mit entsprechend aufgeblasenem Speicherverbrauch durch das XML. Da würde ich CSV vorziehen wenn man nicht nur irgendeine besondere Eigenschaft von Tabellendateien für Tabellenkalkulationen braucht.

Falls man die Daten als Pandas-`DataFrame` schreiben und lesen könnte, also alles in den Arbeitsspeicher passt, wäre das Feather-Format meine Wahl wenn es möglichst kompakt und schnell gespeichert und geladen werden soll. Das basiert auf der Apache-Arrow-Bibliothek und es gibt Anbindungen für viele Sprachen/Systeme aus dem Data-Science-Umfeld, also beispielsweise auch R und Matlab, aber auch C/C++/C#/Java/Go/….

Falls es mehr ist, als in den Speicher passt, HDF5 oder SQLite, oder tatsächlich ein RDBMS mit Server.
CSV kann ich mir gut vorstellen. Das Python-Programm muss die Datei aber zwischendurch abspeichern können, und der Rechner muss das auch, falls der Cash voll ist. Ich sitze am Mac. Mit welcher Library kann ich denn einfach Dateien in CSV nach meinetwegen TXT schreiben. Und was passiert, wenn die Datei x Gigabyte gross wird?

Vllt postest Du mal ein Beispiel. Auf jeden Fall will ich die Dateien in ein bestimmtes Verzeichnis habe, denn ich muss sie aufheben.

Danke für die Info!

Re: Externe Daten

Verfasst: Sonntag 14. August 2022, 08:14
von Sirius3
Habe ich Dich jetzt richtig verstanden: Du hast irgendeine Zahl, 100 Milliarden irgendwas und willst damit irgendwelche Berechnungen machen, deren Ergebnis Du speichern willst?
Dann ist eine Textdatei, an die Du jedes neue Ergebnis anhängen kannst, das richtige für Dich.
So lange man nur seriell liest oder schreibt, können Textdateien beliebig groß werden.
Beispiel:

Code: Alles auswählen

 with open("Ergebnisse.txt", "a") as output:
    output.write(ergebnis)

Re: Externe Daten

Verfasst: Sonntag 14. August 2022, 08:45
von Bykl
Danke Sirius, das wollt ich wissen....

Re: Externe Daten

Verfasst: Dienstag 16. August 2022, 10:44
von Bykl
Wie bekomme ich denn meine Variablen in den string rein?

b=x
a="Länge"+"b"

Das geht ja wohl nicht.....

Re: Externe Daten

Verfasst: Dienstag 16. August 2022, 10:59
von __blackjack__
@Bykl: f-Zeichenketten(literale) und/oder die `format()`-Methode auf Zeichenketten. In der Python-Dokumentation gibt es ein Grundlagentutorial, wo die Grunddatentypen und die wichtigsten Operationen darauf, behandelt werden. Das sollte man mal durchgearbeitet haben, IMHO.

Re: Externe Daten

Verfasst: Dienstag 16. August 2022, 11:00
von Bykl
Danke, hatte es schon gefunden, habe bisher sogst wie nie mit strng gearbeitet....

Re: Externe Daten

Verfasst: Dienstag 16. August 2022, 11:04
von einfachTobi
Du solltest wirklich die Grundlagen lernen, bevor du dich anderen Dingen in einer Sprache beschäftigst. Ich empfehle: https://docs.python.org/3/tutorial/index.html.
Zur Lösung: Man verwendet üblicherweise sog. f-Strings:

Code: Alles auswählen

x = 25
print(f"Ich esse {x} Bonbons.")
x += 1
print(f"Ich esse {x} Bonbons.")

Re: Externe Daten

Verfasst: Dienstag 16. August 2022, 11:06
von Bykl
Danke, Tobi, wenn du mir noch schnell sagst, wie ich da den Zeilenumbruch /n sinnvoll integriere, wäre ich Dir ausgesprochen DANKBAR. Er schreibt nämlich immer nur eine Zeile....

hab es so gemacht: output.write(b+'\n') # und es funktioniert!

Re: Externe Daten

Verfasst: Dienstag 16. August 2022, 11:40
von Bykl
Kann mal jemand erklären, was der Unterscheid ist von:

Code: Alles auswählen

fobjin=open("/Users/TXT/PZuZZinKask.txt", "a")
a="iInterv: {} LängeKask: {} PZinKask: {} xm3: {} letzteZahlm3: {}"
b=a.format(x,len(kz),pz,x%3,((x*x)+(2*x))%3) 
fobjin.close()
und

Code: Alles auswählen

with open("/Users/TXT/PZuZZinKask.txt", "a") as output:
       output.write(b+'\n')
wie schliesst man die Daten im 2. Fall?

Re: Externe Daten

Verfasst: Dienstag 16. August 2022, 11:46
von __blackjack__
@Bykl: Im zweiten Fall wird die Datei geschlossen wenn der Programmfluss den ``with``-Block verlässt. Und zwar egal aus welchem Grund. Insbesondere auch wenn in dem Block eine Ausnahme auftritt. Deswegen ist die Variante mit ``with`` zu bevorzugen.

Beim öffnen von Textdateien sollte man auch immer explizit die Kodierung angeben, sonst ist das abhängig vom System und dessen Einstellungen welche Kodierung verwendet wird.