Python Csv Spalten Zeilen Formel Rechnen

Python CSV Spalten/Zeilen Formelrechner

Berechnen Sie komplexe Formeln über CSV-Spalten und -Zeilen mit Python – inklusive Visualisierung der Ergebnisse

Ergebnisse der CSV-Berechnung

Ultimativer Leitfaden: Python CSV Spalten/Zeilen Formeln berechnen (2024)

Die Verarbeitung von CSV-Dateien mit Python gehört zu den grundlegendsten und gleichzeitig mächtigsten Fähigkeiten im Datenmanagement. Dieser umfassende Leitfaden zeigt Ihnen, wie Sie Spalten und Zeilen in CSV-Dateien mit komplexen Formeln berechnen – von einfachen mathematischen Operationen bis hin zu fortgeschrittenen datenwissenschaftlichen Anwendungen.

Grundlagen der CSV-Verarbeitung mit Python

1. CSV-Dateien einlesen und verstehen

Python bietet mit dem integrierten csv-Modul und der beliebten pandas-Bibliothek zwei Hauptansätze zum Arbeiten mit CSV-Dateien:

# Grundlegendes Einlesen mit dem csv-Modul
import csv

with open(‘daten.csv’, mode=’r’, encoding=’utf-8′) as file:
    reader = csv.DictReader(file)
    for row in reader:
        print(row) # Jede Zeile als Dictionary mit Spaltennamen als Keys

Für komplexere Operationen empfiehlt sich pandas:

import pandas as pd

# CSV in DataFrame laden
df = pd.read_csv(‘daten.csv’, delimiter=’;’, encoding=’utf-8′)
print(df.head()) # Erste 5 Zeilen anzeigen

2. Grundlegende Spaltenoperationen

Die einfachsten Berechnungen beinhalten mathematische Operationen über gesamte Spalten:

# Neue Spalte mit der Summe zweier Spalten
df[‘gesamt’] = df[‘spalte1’] + df[‘spalte2’]

# Prozentuale Veränderung berechnen
df[‘aenderung’] = (df[‘wert_neu’] – df[‘wert_alt’]) / df[‘wert_alt’] * 100

# Bedingte Logik mit np.where
import numpy as np
df[‘kategorie’] = np.where(df[‘wert’] > 100, ‘Hoch’, ‘Niedrig’)

Fortgeschrittene Formelberechnungen

1. Zeilenweise Berechnungen mit apply()

Für komplexe Berechnungen, die den gesamten Zeilenkontext benötigen, ist die apply()-Methode ideal:

# Benutzerdefinierte Funktion für Zeilenberechnung
def berechne_zeile(row):
    if row[‘alter’] > 30 and row[‘einkommen’] > 50000:
        return ‘Premium-Kunde’
    elif row[‘alter’] > 18:
        return ‘Standard-Kunde’
    else:
        return ‘Jugendlicher’

# Funktion auf jede Zeile anwenden
df[‘kundentyp’] = df.apply(berechne_zeile, axis=1)

2. Spaltenübergreifende Aggregationen

Für Berechnungen, die mehrere Spalten kombinieren:

# Gewichteten Durchschnitt über mehrere Spalten berechnen
gewichte = [0.3, 0.5, 0.2]
spalten = [‘note1’, ‘note2’, ‘note3’]
df[‘durchschnitt’] = (df[spalten] * gewichte).sum(axis=1)

# Komplexe Bedingung über mehrere Spalten
df[‘bonusberechtigt’] = ((df[‘umsatz’] > 10000) &
                    (df[‘kunden seit’] > datetime(2020,1,1)))

Performance-Optimierung für große Datensätze

Bei der Verarbeitung großer CSV-Dateien (über 100.000 Zeilen) sind folgende Techniken entscheidend:

  1. Chunking: Daten in Blöcken verarbeiten, um Speicher zu sparen
  2. Dtypen optimieren: Unnötige float64 in float32 umwandeln
  3. Vectorisierung: Pandas-Operationen statt Python-Schleifen nutzen
  4. Parallelisierung: Mit Dask oder Modin arbeiten
# Chunking-Beispiel für große Dateien
chunk_size = 10000
result_chunks = []

for chunk in pd.read_csv(‘grosse_datei.csv’, chunksize=chunk_size):
    # Berechnungen pro Chunk durchführen
    chunk[‘neue_spalte’] = chunk[‘a’] + chunk[‘b’]
    result_chunks.append(chunk)

# Ergebnisse zusammenführen
final_df = pd.concat(result_chunks)
Methode Verarbeitungszeit (1M Zeilen) Speicherverbrauch Skalierbarkeit
Standard Pandas 12.4s 800MB Bis ~5M Zeilen
Chunking (10k Chunks) 15.2s 150MB Unbegrenzt
Dask DataFrame 9.8s 200MB Unbegrenzt
Modin (Ray Backend) 4.2s 600MB Bis ~50M Zeilen

Praktische Anwendungsbeispiele

1. Finanzielle Berechnungen mit CSV-Daten

Ein klassisches Anwendungsszenario ist die Analyse von Finanzdaten:

# Aktienkursanalyse
df[‘tagesrendite’] = df[‘schlusskurs’].pct_change() * 100
df[‘gleitender_durchschnitt’] = df[‘schlusskurs’].rolling(window=7).mean()
df[‘volatilitaet’] = df[‘tagesrendite’].rolling(window=30).std()

# Sharpe-Ratio berechnen
risikofreier_zins = 0.02 # 2%
ueberschussrendite = df[‘tagesrendite’] – risikofreier_zins
sharpe_ratio = ueberschussrendite.mean() / ueberschussrendite.std() * np.sqrt(252)

2. Wissenschaftliche Datenanalyse

In der Forschung werden oft komplexe Formeln auf Messdaten angewendet:

# Physikalische Berechnungen
df[‘kinetische_energie’] = 0.5 * df[‘masse’] * df[‘geschwindigkeit’]**2
df[‘temperatur_celsius’] = df[‘temperatur_kelvin’] – 273.15
df[‘druck’] = (df[‘kraft’] / df[‘flaeche’]) * 1000 # in kPa

# Statistische Auswertung
from scipy import stats
df[‘z_score’] = stats.zscore(df[‘messwert’])
df[‘p_wert’] = 1 – stats.norm.cdf(abs(df[‘z_score’]))

Fehlerbehandlung und Datenbereinigung

Reale CSV-Daten sind selten perfekt. Hier die wichtigsten Techniken zur Datenbereinigung:

# Fehlende Werte behandeln
df[‘spalte1’].fillna(df[‘spalte1’].median(), inplace=True)
df[‘spalte2′].fillna(method=’ffill’, inplace=True) # Vorwärtsfüllung

# Ausreißer erkennen und behandeln
from scipy import stats
z_scores = np.abs(stats.zscore(df[‘numerische_spalte’]))
df = df[(z_scores < 3)] # Entfernt Ausreißer

# Datentypen konvertieren
df[‘datum’] = pd.to_datetime(df[‘datum’], errors=’coerce’)
df[‘preis’] = df[‘preis’].str.replace(‘€’, ”).str.replace(‘,’, ‘.’).astype(float)

Visualisierung der Ergebnisse

Die Visualisierung ist entscheidend für das Verständnis der berechneten Daten. Mit Matplotlib und Seaborn lassen sich professionelle Diagramme erstellen:

import matplotlib.pyplot as plt
import seaborn as sns

# Einfaches Liniendiagramm
plt.figure(figsize=(12, 6))
sns.lineplot(data=df, x=’datum’, y=’berechneter_wert’)
plt.title(‘Zeitverlauf der berechneten Werte’)
plt.xticks(rotation=45)
plt.tight_layout()
plt.show()

# Korrelationsmatrix
numeric_df = df.select_dtypes(include=[np.number])
corr = numeric_df.corr()
sns.heatmap(corr, annot=True, cmap=’coolwarm’, center=0)
plt.title(‘Korrelationsmatrix der numerischen Spalten’)

Automatisierung und Deployment

Für wiederkehrende Berechnungen empfiehlt sich die Automatisierung:

# Skript für tägliche Verarbeitung
import schedule
import time

def tagesberechnung():
    df = pd.read_csv(‘tagesdaten.csv’)
    # Berechnungen durchführen
    df.to_csv(‘ergebnisse.csv’, index=False)
    print(“Tagesberechnung abgeschlossen”)

# Stündliche Ausführung planen
schedule.every().day.at(“08:00”).do(tagesberechnung)

while True:
    schedule.run_pending()
    time.sleep(60)

Für produktive Umgebungen können Sie:

  • Flask/Django für Webinterfaces nutzen
  • Airflow für komplexe Workflows einsetzen
  • Die Berechnungen als AWS Lambda-Funktion deployen
  • Docker-Container für konsistente Umgebungen erstellen
Tool/Technologie Eignung Lernkurve Skalierbarkeit
Pandas Skripte Einmalige Analysen Niedrig Begrenzt
Jupyter Notebooks Explorative Analyse Mittel Begrenzt
Flask API Web-basierte Tools Mittel Hoch
Airflow Komplexe Workflows Hoch Sehr hoch
AWS Lambda Serverless Verarbeitung Mittel Sehr hoch

Leave a Reply

Your email address will not be published. Required fields are marked *