DataFrames naar bestanden schrijven
Exporteer een opgeschoonde DataFrame naar CSV en Excel met to_csv en to_excel en bepaal de index en de notatie van floats.
DataFrames naar bestanden schrijven is een gratis Pandas & NumPy Academy-les op CoddyKit. Dit is les 3 van 4. Je kunt de volledige les hieronder gratis lezen en daarna in de browser praktisch oefenen met een ingebouwde code-editor en een AI-begeleider die 24/7 beschikbaar is. Deze les maakt deel uit van het leertraject Pandas & NumPy Academy. Je voortgang wordt gesynchroniseerd op het web en in de CoddyKit-app. De cursus Pandas & NumPy Academy bevat in totaal 4 lessen.
Waarom exporteren belangrijk is
Gegevensanalyse eindigt zelden binnen Python. Je moet opgeschoonde gegevensverzamelingen delen met belanghebbenden, resultaten aan andere tools doorgeven of verwerkte gegevens archiveren voor reproduceerbaarheid. Pandas biedt to_csv(), to_excel(), to_json() en to_parquet(): deze spiegelen de leesfuncties en accepteren de meeste van dezelfde configuratieparameters.
import pandas as pd
df = pd.DataFrame({'name': ['A', 'B'], 'score': [90, 75]})
df.to_csv('results.csv')
df.to_excel('results.xlsx')
df.to_json('results.json', orient='records')to_csv(): de valkuil van de index
Standaard schrijft to_csv() de rij-index als de eerste kolom, waardoor bij het teruglezen van het bestand een kolom unnamed: 0 ontstaat. Geef index=False door om de index weg te laten. Dat is vrijwel altijd de juiste keuze, tenzij de index zelf betekenisvolle gegevens bevat, zoals datums. Geef altijd index=False op, tenzij je een bewuste reden hebt om de index op te nemen.
import pandas as pd
df = pd.DataFrame({'a': [1, 2], 'b': [3, 4]})
# Include index (default -- creates 'Unnamed: 0' when re-read)
df.to_csv('with_index.csv')
# Exclude index (recommended)
df.to_csv('clean.csv', index=False)Scheidingsteken en codering bepalen
Geef sep= door om een bestand met tabs of puntkomma's als scheidingsteken te schrijven. Gebruik encoding= om UTF-8 of een andere tekenset op te geven. Dat is essentieel wanneer kolomwaarden niet-ASCII-tekens bevatten, zoals accenten of Chinese tekens. encoding='utf-8-sig' voegt een BOM (bytevolgordemerkteken) toe voor compatibiliteit met Excel op Windows.
import pandas as pd
df = pd.DataFrame({'name': ['Müller', 'Tanaka'], 'val': [1, 2]})
# Tab-separated, UTF-8
df.to_csv('output.tsv', sep='\t', encoding='utf-8', index=False)
# Excel-compatible UTF-8 with BOM
df.to_csv('for_excel.csv', encoding='utf-8-sig', index=False)Opmaak van floats bepalen
Standaard schrijft Pandas floats met volledige precisie. Gebruik float_format='%.2f' om het aantal decimalen te beperken tot 2. Dat is belangrijk voor financiële gegevens, waarbij extra decimalen er voor menselijke lezers onjuist uitzien. Geef na_rep='NULL' of na_rep='' door om te bepalen hoe NaN-waarden in het uitvoerbestand worden geschreven.
import pandas as pd
import numpy as np
df = pd.DataFrame({'price': [9.99, np.nan, 14.123456],
'qty': [1, 2, 3]})
df.to_csv('prices.csv',
index=False,
float_format='%.2f',
na_rep='N/A')to_excel(): een werkblad schrijven
df.to_excel('file.xlsx', sheet_name='Data', index=False) schrijft het DataFrame naar een Excel-werkmap. Net als bij to_csv() stel je index=False in, tenzij de index betekenisvol is. Met de parameters startrow= en startcol= kun je de tabel binnen het werkblad positioneren, bijvoorbeeld om boven de gegevens een titelrij toe te voegen.
import pandas as pd
df = pd.DataFrame({'product': ['A', 'B'], 'sales': [100, 200]})
df.to_excel('report.xlsx',
sheet_name='Sales',
index=False,
startrow=1) # leave row 0 for a titleMeerdere werkbladen schrijven met ExcelWriter
Gebruik pd.ExcelWriter als contextmanager om meerdere DataFrames naar verschillende werkbladen in dezelfde werkmap te schrijven. Roep voor elk DataFrame binnen het with-blok df.to_excel(writer, sheet_name='Name') aan. De werkmap wordt voltooid en opgeslagen wanneer de context wordt verlaten. Zo voorkom je dat je meerdere afzonderlijke bestanden voor gerelateerde tabellen maakt.
import pandas as pd
df1 = pd.DataFrame({'a': [1, 2]})
df2 = pd.DataFrame({'b': [3, 4]})
with pd.ExcelWriter('multi_sheet.xlsx', engine='openpyxl') as writer:
df1.to_excel(writer, sheet_name='Sheet1', index=False)
df2.to_excel(writer, sheet_name='Sheet2', index=False)to_json(): JSON exporteren
df.to_json() zet een DataFrame om naar JSON. De parameter orient= werkt hetzelfde als bij read_json: gebruik 'records' voor een lijst met woordenboeken per rij (het meest uitwisselbaar), 'columns' voor een woordenboek met kolomreeksen of 'index' voor een woordenboek met de rijlabels als sleutels. Geef indent=2 door voor een voor mensen leesbare opmaak.
import pandas as pd
df = pd.DataFrame({'name': ['A', 'B'], 'score': [90, 75]})
print(df.to_json(orient='records', indent=2))
# [
# {"name": "A", "score": 90},
# {"name": "B", "score": 75}
# ]Toevoegen aan een bestaand bestand
Open het bestand in toevoegmodus met mode='a' en stel header=False in om rijen aan een bestaand CSV-bestand toe te voegen zonder het te overschrijven en zonder de koprij te dupliceren. Gebruik voor Excel ExcelWriter met mode='a'. Voeg voor grote streaminggegevenspijplijnen gegevens in delen toe en schrijf de kop alleen bij het eerste deel.
import pandas as pd
df_new = pd.DataFrame({'a': [5, 6], 'b': [7, 8]})
# Append to existing file, skip writing header
df_new.to_csv('existing.csv',
mode='a',
header=False,
index=False)Kolommen selecteren vóór het exporteren
Een goede werkwijze vóór het exporteren is om alleen de kolommen te selecteren die de ontvanger nodig heeft en de rijen in een logische volgorde te sorteren. Zo wordt het uitvoerbestand overzichtelijker en voorkom je dat je per ongeluk interne kolommen lekt, zoals interne ID's, gecodeerde kenmerken of foutopsporingsvlaggen. Gebruik selectie met vierkante haken en sort_values() in dezelfde pijplijnexpressie voordat je schrijft.
import pandas as pd
df = pd.DataFrame({'id': [3,1,2],
'name': ['C','A','B'],
'_internal': [9,7,8]})
(df[['id', 'name']]
.sort_values('id')
.to_csv('export.csv', index=False))Het geschreven bestand controleren
Lees het bestand na het schrijven altijd opnieuw in en controleer het volgende: shape, de kolomnamen en enkele steekproefsgewijze waarden. Vergelijk in CI-pijplijnen de controlesommen. Controleer bij cruciale financiële exports of geaggregeerde totalen overeenkomen. Zo ontdek je coderingsproblemen, verlies van floatprecisie en indexproblemen voordat het bestand een vervolgverwerker bereikt.
import pandas as pd
df = pd.DataFrame({'a': [1, 2, 3], 'b': [4, 5, 6]})
df.to_csv('/tmp/check.csv', index=False)
df_check = pd.read_csv('/tmp/check.csv')
assert df_check.shape == df.shape, 'Row/column count mismatch'
assert list(df_check.columns) == list(df.columns)
print('Export verified OK')Parquet: een beter alternatief voor gegevens
Voor grote analytische gegevenssets kun je het formaat Parquet overwegen in plaats van CSV. Parquet slaat gegevens op in kolomvorm, ondersteunt compressie, behoudt gegevenstypen exact en wordt 10 tot 100 keer sneller gelezen voor analytische query's. Schrijf met df.to_parquet('data.parquet') en lees met pd.read_parquet('data.parquet'). Hiervoor moet pyarrow of fastparquet zijn geïnstalleerd.
import pandas as pd
df = pd.DataFrame({'a': range(1000000), 'b': range(1000000)})
df.to_parquet('data.parquet', index=False)
df2 = pd.read_parquet('data.parquet')
print(df2.dtypes) # dtypes preserved exactlyKorte controle
Test je begrip van het schrijven van DataFrames naar bestanden uit deze les.
Samenvatting van de les
In deze les heb je geleerd dat to_csv() en to_excel() DataFrames exporteren en standaard allebei de index opnemen — stel altijd index=False in voor een overzichtelijke uitvoer, dat ExcelWriter het mogelijk maakt om meerdere DataFrames naar afzonderlijke werkbladen in één werkmap te schrijven en dat Parquet een sneller en ruimte-efficiënter alternatief is voor CSV bij grote analytische gegevenssets. Hierna laden we externe CSV-bestanden vanaf URL's en ontleden we CSV-tekenreeksen in het geheugen met io.StringIO.
Leer Python met een AI-tutor — gratis
Schrijf echte code en voer die uit in je browser, krijg direct hulp van een AI-tutor die 24/7 beschikbaar is en ga verder waar je gebleven bent op het web of in de app.
- Cursussen
- 30
- Lessen
- 120
Veelgestelde vragen
Is de les “DataFrames naar bestanden schrijven” gratis?
Ja — de volledige tekst van “DataFrames naar bestanden schrijven” kun je hier gratis op het web lezen. Als je interactief wilt oefenen met een ingebouwde code-editor en een AI-begeleider die 24/7 beschikbaar is, en de rest van de cursus Pandas & NumPy Academy wilt ontgrendelen, kun je upgraden naar CoddyKit PRO. De cursus Pandas & NumPy Academy bevat in totaal 4 lessen.
Wat leer ik in “DataFrames naar bestanden schrijven”?
Exporteer een opgeschoonde DataFrame naar CSV en Excel met to_csv en to_excel en bepaal de index en de notatie van floats. Je oefent met Pandas & NumPy Academy door code rechtstreeks in de browser uit te voeren. Een AI-begeleider die 24/7 beschikbaar is beantwoordt je vragen terwijl je de les doorwerkt.
Heb ik ervaring nodig om met Pandas & NumPy Academy te beginnen?
Ervaring vooraf is niet nodig. Pandas & NumPy Academy op CoddyKit is opgebouwd voor beginners tot gevorderden, zodat je hier of bij het begin kunt starten en in je eigen tempo kunt leren. Dit is les 3 van 4.
Hoe lang duurt de les “DataFrames naar bestanden schrijven”?
De meeste lessen van CoddyKit duren ongeveer 5–10 minuten. Elke les is kort en interactief, zodat je gestaag vooruitgaat en op het web en in de app precies verdergaat waar je was gebleven.
Kan ik code schrijven en uitvoeren in deze les over Pandas & NumPy Academy?
Ja. Elke les over Pandas & NumPy Academy bevat een ingebouwde code-editor, zodat je rechtstreeks in je browser echte code kunt schrijven en uitvoeren en direct feedback van AI krijgt — lokale installatie is niet nodig.
Alle lessen in deze cursus
- CSV-bestanden lezen
- Excel- en JSON-bestanden lezen
- DataFrames naar bestanden schrijven
- Lezen vanaf URL's en met StringIO