Jak działa pandas to_csv w języku Python? Przykład zastosowania

Jak działa pandas to_csv w języku Python? Przykład zastosowania

Jak działa pandas to_csv w języku Python? Przykład zastosowania

Pracując z biblioteką pandas w języku Python, często zachodzi potrzeba eksportu danych do pliku CSV. Funkcja to_csv() dostępna w ramach pandas pozwala na szybkie zapisanie danych z obiektu DataFrame do pliku w formacie wartości oddzielonych przecinkami. W tym artykule pokażę, jak korzystać z tej funkcji, jakie ma opcje i jak dostosować jej działanie do własnych potrzeb.

Podstawowe użycie pandas.to_csv()

Aby skorzystać z funkcji to_csv(), najpierw należy zaimportować bibliotekę pandas i stworzyć przykładowy DataFrame. Oto prosty przykład:

import pandas as pd

# Tworzenie przykładowego DataFrame
data = {
    'Imię': ['Jan', 'Anna', 'Marek'],
    'Wiek': [28, 34, 45],
    'Miasto': ['Warszawa', 'Kraków', 'Wrocław']
}

df = pd.DataFrame(data)

# Zapisanie danych do pliku CSV
df.to_csv('dane.csv', index=False)

W tym przypadku zapisujemy dane do pliku dane.csv, a ustawienie index=False powoduje, że indeksy wierszy nie zostają zapisane do pliku.

Opcje dostępne w pandas.to_csv()

Funkcja to_csv() oferuje wiele opcji pozwalających dostosować sposób zapisu danych. Oto najważniejsze z nich:

  • path_or_buf – ścieżka do pliku lub obiekt buffer, np. sys.stdout (domyślnie: brak, czyli zapis do stringa).
  • sep – separator używany do rozdzielania wartości (domyślnie ,, można używać np. ; dla plików CSV kompatybilnych z Excel).
  • index – czy ma zapisywać indeksy wierszy (domyślnie True).
  • header – czy zapisać nagłówki kolumn (domyślnie True).
  • columns – lista kolumn, które mają być zapisane.
  • encoding – kodowanie pliku, np. 'utf-8', 'utf-8-sig' (istotne przy polskich znakach).
  • mode – tryb zapisu, np. 'w' dla nadpisywania pliku, 'a' dla dopisywania nowych danych.

Zapis do CSV z innym separatorem

Domyślnie dane w pliku CSV są rozdzielane przecinkami, ale czasami lepszym rozwiązaniem jest inny separator, np. średnik (;), szczególnie gdy plik ma być otwierany w Excelu.

df.to_csv('dane_srednik.csv', sep=';', index=False)

Po otwarciu pliku dane_srednik.csv zobaczymy:

Imię Wiek Miasto
Jan 28 Warszawa
Anna 34 Kraków
Marek 45 Wrocław

Eksport bez nagłówków

Czasami może być potrzebny zapis danych bez nagłówków kolumn. Można to zrobić w ten sposób:

df.to_csv('dane_bez_naglowka.csv', index=False, header=False)

Zapis tylko wybranych kolumn

Jeśli chcę zapisać tylko niektóre kolumny, mogę podać ich listę w parametrze columns:

df.to_csv('dane_wybrane_kolumny.csv', columns=['Imię', 'Wiek'], index=False)

Zapis danych z kodowaniem UTF-8

Jeśli plik CSV ma zawierać polskie znaki, warto zadbać o odpowiednie kodowanie:

df.to_csv('dane_utf8.csv', index=False, encoding='utf-8')

Czasami programy (np. Excel) mogą mieć problem z utf-8, dlatego lepiej zapisać z kodowaniem utf-8-sig, które jest szerzej obsługiwane:

df.to_csv('dane_utf8_sig.csv', index=False, encoding='utf-8-sig')

Dopisywanie danych do istniejącego pliku

Jeśli chcę dopisać dane do już istniejącego pliku CSV, mogę użyć trybu 'a' (append). Warto wtedy pamiętać, by nie dodawać ponownie nagłówków:

df.to_csv('dane_append.csv', mode='a', index=False, header=False)

Podsumowanie

Funkcja pandas.to_csv() to wszechstronne narzędzie do eksportu danych z DataFrame do pliku CSV. Pozwala na dostosowanie separatorów, kodowania, obecności nagłówków i wielu innych parametrów. Wybór odpowiednich opcji pozwala na wygodne przetwarzanie danych w Pythonie i łatwą wymianę informacji z innymi aplikacjami.

 

Inny ciekawy artykuł:

Jak działa pandas merge_ordered w języku Python? Przykład zastosowania

KajoDataSpace