

Bild vom Herausgeber
# Einführung
CSV-Dateien sind überall in Datenworkflows zu finden, von Datenbankexporten über API-Antworten bis hin zum Herunterladen von Tabellenkalkulationen. Während Pandas großartig funktioniert, benötigen Sie manchmal schnelle Lösungen, die Sie mit Python programmieren können, ohne Pandas installieren zu müssen.
Das integrierte CSV-Modul von Python kann in Kombination mit Listenverständnissen und Generatorausdrücken die meisten gängigen CSV-Aufgaben in einer einzigen Codezeile erledigen. Diese Einzeiler eignen sich perfekt für die schnelle Datenexploration, ETL-Debugging oder wenn Sie in eingeschränkten Umgebungen arbeiten, in denen externe Bibliotheken nicht verfügbar sind.
Lassen Sie uns einen Beispiel-Geschäftsdatensatz mit 50 Datensätzen verwenden: knowledge.csv und legen Sie los!
🔗 Hyperlink zum Code auf GitHub
# 1. Suchen Sie nach der Spaltensumme
Berechnen Sie die Summe einer beliebigen numerischen Spalte über alle Zeilen.
print(f"Whole: ${sum(float(r(3)) for r in __import__('csv').reader(open(path)) if r(0) != 'transaction_id'):,.2f}")
Hier, path ist die Variable, die den Pfad zur Beispiel-CSV-Datei enthält. In diesem Beispiel in Google Colab ist dies der Fall path = "/content material/knowledge.csv".
Ausgabe:
Hier, __import__('csv') importiert das integrierte CSV-Modul inline. Der Generatorausdruck überspringt die Kopfzeile, konvertiert Spaltenwerte in Gleitkommazahlen, summiert sie und formatiert sie mit Währungsnotation. Passen Sie den Spaltenindex (3) und die Kopfzeilenprüfung nach Bedarf an.
# 2. Nach Most gruppieren
Finden Sie heraus, welche Gruppe in Ihrem Datensatz den höchsten Gesamtwert aufweist.
print(max({r(5): sum(float(row(3)) for row in __import__('csv').reader(open(path)) if row(5) == r(5) and row(0) != 'transaction_id') for r in __import__('csv').reader(open(path)) if r(0) != 'transaction_id'}.objects(), key=lambda x: x(1)))
Ausgabe:
('Mike Rodriguez', 502252.0)
Das Wörterbuchverständnis gruppiert nach Spalte 5 und summiert die Werte von Spalte 3 für jede Gruppe. Ein Durchgang sammelt Gruppenschlüssel und ein zweiter führt die Aggregation durch. max() mit einem Lambda findet die höchste Summe. Passen Sie die Spaltenindizes für verschiedene Gruppierungsvorgänge an.
# 3. Filtern und zeigen Sie eine Teilmenge von Zeilen an
Zeigen Sie mit formatierter Ausgabe nur Zeilen an, die einer bestimmten Bedingung entsprechen.
print("n".be part of(f"{r(1)}: ${float(r(3)):,.2f}" for r in __import__('csv').reader(open(path)) if r(7) == 'Enterprise' and r(0) != 'transaction_id'))
Ausgabe:
Acme Corp: $45,000.00
Gamma Options: $78,900.00
Zeta Methods: $156,000.00
Iota Industries: $67,500.25
Kappa LLC: $91,200.75
Nu Applied sciences: $76,800.25
Omicron LLC: $128,900.00
Sigma Corp: $89,700.75
Phi Corp: $176,500.25
Omega Applied sciences: $134,600.50
Alpha Options: $71,200.25
Matrix Methods: $105,600.25
Der Generatorausdruck filtert Zeilen, bei denen Spalte 7 gleich ist Enterpriseformatiert dann die Spalten 1 und 3. Mit "n".be part of(...) vermeidet das Drucken einer Liste von None Werte.
# 4. Gruppieren nach Summenverteilung
Erhalten Sie Gesamtsummen für jeden eindeutigen Wert in einer Gruppierungsspalte.
print({g: f"${sum(float(row(3)) for row in __import__('csv').reader(open(path)) if row(6) == g and row(0) != 'transaction_id'):,.2f}" for g in set(row(6) for row in __import__('csv').reader(open(path)) if row(0) != 'transaction_id')})
Ausgabe:
{'Asia Pacific': '$326,551.75', 'Europe': '$502,252.00', 'North America': '$985,556.00'}
Das Wörterbuchverständnis extrahiert zunächst mithilfe eines Mengenverständnisses eindeutige Werte aus Spalte 6 und berechnet dann die Summe von Spalte 3 für jede Gruppe. Dies ist aufgrund der Generatorausdrücke speichereffizient. Ändern Sie die Spaltenindizes, um sie nach verschiedenen Feldern zu gruppieren.
# 5. Schwellenwertfilter mit Sortierung
Suchen und ordnen Sie alle Datensätze über einem bestimmten numerischen Schwellenwert.
print(((n, f"${v:,.2f}") for n, v in sorted(((r(1), float(r(3))) for r in record(__import__('csv').reader(open(path)))(1:) if float(r(3)) > 100000), key=lambda x: x(1), reverse=True)))
Ausgabe:
(('Phi Corp', '$176,500.25'), ('Zeta Methods', '$156,000.00'), ('Omega Applied sciences', '$134,600.50'), ('Omicron LLC', '$128,900.00'), ('Matrix Methods', '$105,600.25'))
Dadurch werden Zeilen gefiltert, in denen Spalte 3 überschritten wird 100000erstellt Tupel aus Namen und numerischen Werten, sortiert nach dem numerischen Wert und formatiert die Werte dann als Währung für die Anzeige. Passen Sie den Schwellenwert und die Spalten nach Bedarf an.
# 6. Zählen Sie eindeutige Werte
Ermitteln Sie schnell, wie viele unterschiedliche Werte in einer Spalte vorhanden sind.
print(len(set(r(2) for r in __import__('csv').reader(open(path)) if r(0) != 'transaction_id')))
Ausgabe:
Hier extrahiert das Mengenverständnis eindeutige Werte aus Spalte 2; len() zählt sie. Dies ist nützlich, um die Datenvielfalt zu überprüfen oder unterschiedliche Kategorien zu finden.
# 7. Bedingte Aggregation
Berechnen Sie Durchschnittswerte oder andere Statistiken für bestimmte Teilmengen Ihrer Daten.
print(f"Common: ${sum(float(r(3)) for r in __import__('csv').reader(open(path)) if r(6) == 'North America' and r(0) != 'transaction_id') / sum(1 for r in __import__('csv').reader(open(path)) if r(6) == 'North America' and r(0) != 'transaction_id'):,.2f}")
Ausgabe:
Dieser Einzeiler berechnet den Durchschnitt von Spalte 3 für Zeilen, die der Bedingung in Spalte 6 entsprechen. Er verwendet eine Summe dividiert durch eine Anzahl (über einen Generatorausdruck). Es liest die Datei zweimal, hält aber die Speichernutzung niedrig.
# 8. Mehrspaltiger Filter
Wenden Sie mehrere Filterbedingungen gleichzeitig auf verschiedene Spalten an.
print("n".be part of(f"{r(1)} | {r(2)} | ${float(r(3)):,.2f}" for r in __import__('csv').reader(open(path)) if r(2) == 'Software program' and float(r(3)) > 50000 and r(0) != 'transaction_id'))
Ausgabe:
Zeta Methods | Software program | $156,000.00
Iota Industries | Software program | $67,500.25
Omicron LLC | Software program | $128,900.00
Sigma Corp | Software program | $89,700.75
Phi Corp | Software program | $176,500.25
Omega Applied sciences | Software program | $134,600.50
Nexus Corp | Software program | $92,300.75
Apex Industries | Software program | $57,800.00
Es kombiniert mehrere Filterbedingungen mit and Operatoren, prüft Zeichenfolgengleichheit und numerische Vergleiche und formatiert die Ausgabe mit Pipe-Trennzeichen für eine saubere Anzeige.
# 9. Berechnen Sie die Spaltenstatistik
Generieren Sie auf einmal Min-, Max- und Durchschnittsstatistiken für numerische Spalten.
vals = (float(r(3)) for r in __import__('csv').reader(open(path)) if r(0) != 'transaction_id'); print(f"Min: ${min(vals):,.2f} | Max: ${max(vals):,.2f} | Avg: ${sum(vals)/len(vals):,.2f}"); print(vals)
Ausgabe:
Min: $8,750.25 | Max: $176,500.25 | Avg: $62,564.13
(45000.0, 12500.5, 78900.0, 23400.75, 8750.25, 156000.0, 34500.5, 19800.0, 67500.25, 91200.75, 28750.0, 43200.5, 76800.25, 15600.75, 128900.0, 52300.5, 31200.25, 89700.75, 64800.0, 22450.5, 176500.25, 38900.75, 27300.0, 134600.5, 71200.25, 92300.75, 18900.5, 105600.25, 57800.0)
Dadurch wird eine Liste numerischer Werte aus Spalte 3 erstellt und dann Min., Max. und Durchschnitt in einer Zeile berechnet. Das Semikolon trennt Anweisungen. Es ist speicherintensiver als Streaming, aber für diese Statistiken schneller als das Lesen mehrerer Dateien.
# 10. Gefilterte Daten exportieren
Erstellen Sie eine neue CSV-Datei, die nur Zeilen enthält, die Ihren Kriterien entsprechen.
__import__('csv').author(open('filtered.csv','w',newline="")).writerows((r for r in record(__import__('csv').reader(open(path)))(1:) if float(r(3)) > 75000))
Dadurch wird die CSV-Datei gelesen, Zeilen basierend auf einer Bedingung gefiltert und in eine neue Datei geschrieben. Der newline="" Der Parameter verhindert zusätzliche Zeilenumbrüche. Beachten Sie, dass in diesem Beispiel der Header übersprungen wird (er verwendet (1:)), additionally schließen Sie es explizit ein, wenn Sie einen Header in der Ausgabe benötigen.
Zusammenfassung
Ich hoffe, dass Sie diese Einzeiler für die CSV-Verarbeitung hilfreich finden.
Solche Einzeiler sind praktisch für:
- Schnelle Datenexploration und -validierung
- Einfache Datentransformationen
- Prototyping vor dem Schreiben vollständiger Skripte
Aber Sie sollten sie meiden aus:
- Produktionsdatenverarbeitung
- Dateien, die eine komplexe Fehlerbehandlung erfordern
- Mehrstufige Transformationen
Diese Techniken funktionieren mit dem integrierten CSV-Modul von Python, wenn Sie schnelle Lösungen ohne Einrichtungsaufwand benötigen. Viel Spaß beim Analysieren!
Bala Priya C ist ein Entwickler und technischer Redakteur aus Indien. Sie arbeitet gerne an der Schnittstelle von Mathematik, Programmierung, Datenwissenschaft und Inhaltserstellung. Zu ihren Interessen- und Fachgebieten gehören DevOps, Datenwissenschaft und Verarbeitung natürlicher Sprache. Sie liebt es zu lesen, zu schreiben, zu programmieren und Kaffee zu trinken! Derzeit arbeitet sie daran, zu lernen und ihr Wissen mit der Entwickler-Group zu teilen, indem sie Tutorials, Anleitungen, Meinungsbeiträge und mehr verfasst. Bala erstellt außerdem ansprechende Ressourcenübersichten und Programmier-Tutorials.
