Externe Daten

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Antworten
Bykl
User
Beiträge: 92
Registriert: Donnerstag 5. Oktober 2017, 17:57

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.
Sirius3
User
Beiträge: 17711
Registriert: Sonntag 21. Oktober 2012, 17:20

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?
__deets__
User
Beiträge: 14493
Registriert: Mittwoch 14. Oktober 2015, 14:29

Für sowas nutzen Leute zb HDF5, oder gleich vollwertige Datenbanken.
Bykl
User
Beiträge: 92
Registriert: Donnerstag 5. Oktober 2017, 17:57

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....
Sirius3
User
Beiträge: 17711
Registriert: Sonntag 21. Oktober 2012, 17:20

Was? Dein Rechner braucht 9h um 31# auszurechnen?
Und für was brauchst Du mehr als 65535 Spalten?
Was verstehst Du unter Primfakultät?
Benutzeravatar
__blackjack__
User
Beiträge: 13004
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.
“Most people find the concept of programming obvious, but the doing impossible.” — Alan J. Perlis
Bykl
User
Beiträge: 92
Registriert: Donnerstag 5. Oktober 2017, 17:57

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!
Bykl
User
Beiträge: 92
Registriert: Donnerstag 5. Oktober 2017, 17:57

__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!
Sirius3
User
Beiträge: 17711
Registriert: Sonntag 21. Oktober 2012, 17:20

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)
Bykl
User
Beiträge: 92
Registriert: Donnerstag 5. Oktober 2017, 17:57

Danke Sirius, das wollt ich wissen....
Bykl
User
Beiträge: 92
Registriert: Donnerstag 5. Oktober 2017, 17:57

Wie bekomme ich denn meine Variablen in den string rein?

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

Das geht ja wohl nicht.....
Benutzeravatar
__blackjack__
User
Beiträge: 13004
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.
“Most people find the concept of programming obvious, but the doing impossible.” — Alan J. Perlis
Bykl
User
Beiträge: 92
Registriert: Donnerstag 5. Oktober 2017, 17:57

Danke, hatte es schon gefunden, habe bisher sogst wie nie mit strng gearbeitet....
einfachTobi
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:

Code: Alles auswählen

x = 25
print(f"Ich esse {x} Bonbons.")
x += 1
print(f"Ich esse {x} Bonbons.")
Bykl
User
Beiträge: 92
Registriert: Donnerstag 5. Oktober 2017, 17:57

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!
Bykl
User
Beiträge: 92
Registriert: Donnerstag 5. Oktober 2017, 17:57

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?
Benutzeravatar
__blackjack__
User
Beiträge: 13004
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.
“Most people find the concept of programming obvious, but the doing impossible.” — Alan J. Perlis
Antworten