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.
Externe Daten
in Excel kannst du nur Tabellen bis 65 tausend nochwas unterkriegen.
Ich habe es noch nicht geschrieben, und mache es von der Antwort abhängig.
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!
sie werden gesiebt und gesiebt, bis ich die Zahlen habe, die ich suche....
- __blackjack__
- User
- Beiträge: 13111
- Registriert: Samstag 2. Juni 2018, 10:21
- Wohnort: 127.0.0.1
- Kontaktdaten:
@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.
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.
„All religions are the same: religion is basically guilt, with different holidays.” — Cathy Ladman
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.
dafür!
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?__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.
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!
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:
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)
- __blackjack__
- User
- Beiträge: 13111
- Registriert: Samstag 2. Juni 2018, 10:21
- Wohnort: 127.0.0.1
- Kontaktdaten:
@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.
„All religions are the same: religion is basically guilt, with different holidays.” — Cathy Ladman
-
- User
- Beiträge: 491
- Registriert: Mittwoch 13. November 2019, 08:38
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:
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.")
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!
hab es so gemacht: output.write(b+'\n') # und es funktioniert!
Kann mal jemand erklären, was der Unterscheid ist von:
und
wie schliesst man die Daten im 2. Fall?
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()
Code: Alles auswählen
with open("/Users/TXT/PZuZZinKask.txt", "a") as output:
output.write(b+'\n')
- __blackjack__
- User
- Beiträge: 13111
- Registriert: Samstag 2. Juni 2018, 10:21
- Wohnort: 127.0.0.1
- Kontaktdaten:
@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.
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.
„All religions are the same: religion is basically guilt, with different holidays.” — Cathy Ladman