Öffnen Sie eine csv.gz Datei in Python zu drucken, die ersten 100 Zeilen
Ich versuche, nur die ersten 100 Zeilen einer csv.gz Datei hat über 4 Millionen Zeilen in Python. Ich möchte auch Informationen über die Anzahl der Spalten und die jeweiligen Kopfzeilen. Wie kann ich dies tun?
Schaute ich python: Lesen von Zeilen von der komprimierte text-Dateien, um herauszufinden, wie die Datei zu öffnen, aber ich bin kämpfen, um herauszufinden, wie Sie tatsächlich drucken die ersten 100 Zeilen und einige Metadaten auf die Informationen in den Spalten.
Fand ich diese Lies die ersten N Zeilen einer Datei in python aber nicht sicher, wie Sie Sie zu heiraten, dieses zu öffnen csv.gz Datei und Lesen Sie es, ohne zu speichern eine unkomprimierte csv-Datei.
Schreibe ich diesen code:
import gzip
import csv
import json
import pandas as pd
df = pd.read_csv('google-us-data.csv.gz', compression='gzip', header=0, sep=' ', quotechar='"', error_bad_lines=False)
for i in range (100):
print df.next()
Ich bin neu in Python und ich weiß nicht, die Ergebnisse zu verstehen. Ich bin sicher, mein code ist falsch und ich habe versucht zu Debuggen, aber ich weiß nicht, welche Dokumentation zu betrachten.
Bekomme ich diese Ergebnisse (und es geht weiter auf der Konsole - hier ein Auszug):
Skipping line 63: expected 3 fields, saw 7
Skipping line 64: expected 3 fields, saw 7
Skipping line 65: expected 3 fields, saw 7
Skipping line 66: expected 3 fields, saw 7
Skipping line 67: expected 3 fields, saw 7
Skipping line 68: expected 3 fields, saw 7
Skipping line 69: expected 3 fields, saw 7
Skipping line 70: expected 3 fields, saw 7
Skipping line 71: expected 3 fields, saw 7
Skipping line 72: expected 3 fields, saw 7
- Sie erhalten Hilfe viel schneller, wenn Sie wissen, stellen. Welchen code hast du geschrieben und wie hat es dich enttäuscht?
- Ok ich habe meinen Beitrag aktualisiert. Ideen?
- Kann man nach einer Probe von dem, was der raw-Datei aussieht? (z.B. versuchen
head filename
in einem terminal) - Pandas ist mit den Metadaten als Spalten. Sie müssen ignorieren Zeilen bis zu der Zeile mit den Spaltennamen
Du musst angemeldet sein, um einen Kommentar abzugeben.
Ziemlich viel, was Sie schon getan, außer
read_csv
hat auchnrows
wo können Sie die Anzahl der Zeilen, die Sie wollen aus dem Daten-set.Zusätzlich, um zu verhindern, dass die Fehler, die Sie immer waren, können Sie
error_bad_lines
zuFalse
. Du wirst immer noch Warnungen (wenn Sie dies stört, stellenwarn_bad_lines
zuFalse
auch). Diese sind da, um zu zeigen Inkonsistenz, wie Sie Ihren Datensatz ausgefüllt ist.Können Sie ganz einfach tun, etwas ähnliches mit dem
csv
built-in-Bibliothek, aber Sie benötigen einefor
- Schleife zur Iteration über die Daten, gezeigt in den anderen Beispielen.Ich denke, Sie könnte so etwas tun (von der gzip-Modul Beispiele)
Die erste Antwort, die du verlinkt schlägt mit
gzip.GzipFile
- dies gibt dir ein file-ähnliches Objekt dekomprimiert für Sie on-the-fly.Jetzt müssen Sie nur irgendwie zu Parsen von csv-Daten aus einem file-Objekt wie ... wie csv.reader.
Den
csv.reader
Objekt wird Ihnen eine Liste der Feldnamen, damit Sie wissen, die Spalten, deren Namen, und wie viele es sind.Dann brauchen Sie, um die ersten 100 csv-Zeilen-Objekte, die Arbeit wird genau so wie in der zweiten Frage, die Sie verknüpft, und jeder von denen 100 Objekte eine Liste von Feldern.
So weit ist alles abgedeckt in den verknüpften Fragen, abgesehen von dem wissen über die Existenz des csv-Moduls, die aufgeführt ist in der Bibliothek index.
Dein code ist OK;
pandas read_csv