CodeGym /Kursy /Python SELF PL /Zapisywanie danych w formatach CSV i Excel

Zapisywanie danych w formatach CSV i Excel

Python SELF PL
Poziom 32 , Lekcja 3
Dostępny

1. Przygotowanie danych do zapisu

Na poprzednich wykładach nauczyliśmy się już pobierać dane z stron internetowych za pomocą biblioteki BeautifulSoup. Teraz pora przekształcić nasze osiągnięcia web scrapingowe w coś użytecznego i wygodnego do analizy. W końcu jeśli dane zostają tylko w twoim skrypcie, niewiele z nich pożytku. Dzisiaj dowiemy się, jak zapisywać dane w formatach CSV i Excel, bo wiadomo, w życiu programisty, jak i w życiu kota, najważniejsze to znaleźć coś do jedzenia... tzn. zapisać.

Zanim zaczniemy przekształcać nasze dane w fajne tabelki, zatrzymajmy się na chwilę i przyjrzyjmy się, jak przygotować nasze dane do eksportu. Zazwyczaj dane, które pobieramy ze stron internetowych, są przedstawione w postaci list lub słowników. Warto je sformatować w taki sposób, aby były gotowe do eksportu w formacie tabeli.

Przykład danych

Załóżmy, że zebraliście następujące dane o książkach:

Python

books = [
    {"title": "Harry Potter i Kamień Filozoficzny", "author": "J. K. Rowling", "price": "350.00"},
    {"title": "Władca Pierścieni", "author": "J. R. R. Tolkien", "price": "500.00"},
    {"title": "Mistrz i Małgorzata", "author": "M. Bułhakow", "price": "450.00"}
]

2. Zapisywanie w formacie CSV

CSV (Comma-Separated Values) — to prosty format tekstowy, który pozwala przechowywać dane tabelaryczne. Każdy wiersz w CSV to rekord, a każda kolumna jest oddzielona przecinkiem. Nauczmy się zapisywać nasze dane w tym formacie.

Użycie biblioteki csv

Python oferuje nam wygodny moduł csv, który znacznie ułatwia pracę z plikami CSV. Oto jak można eksportować nasze dane o książkach do CSV:

Python

import csv

with open('books.csv', mode='w', newline='', encoding='utf-8') as file:
    writer = csv.DictWriter(file, fieldnames=["title", "author", "price"])
    writer.writeheader()
    writer.writerows(books)

print("Dane zostały zapisane w pliku books.csv")

Uwaga: Zawsze podawaj newline='' podczas otwierania pliku w trybie w, aby uniknąć dodatkowych pustych linii w Windows.

Odczytywanie danych z CSV

Aby dopełnić obrazu, zobaczmy, jak odczytać dane z powrotem z CSV:

Python

with open('books.csv', mode='r', encoding='utf-8') as file:
    reader = csv.DictReader(file)
    for row in reader:
        print(row)

3. Zapisywanie w formacie Excel

Do pracy z Excel w Pythonie użyjemy biblioteki pandas. Pandas pozwala łatwo przekształcić nasze dane do DataFrame i eksportować je w różnych formatach, w tym Excel.

Instalacja pandas

Jeśli jeszcze nie zainstalowaliście pandas, zróbcie to za pomocą pip:

Bash

pip install pandas openpyxl

Użycie pandas do eksportu do Excel

Teraz zapiszmy nasze dane o książkach do Excel:

Python

import pandas as pd

df = pd.DataFrame(books)
df.to_excel('books.xlsx', index=False, engine='openpyxl')

print("Dane zostały zapisane w pliku books.xlsx")

Odczytywanie danych z Excel

Jaką radość przynosi nie tylko tworzenie, ale także ponowne użycie stworzonego! Nauczmy się odczytywać dane z Excel:

Python

df = pd.read_excel('books.xlsx')
print(df)

4. Błędy i ich obsługa

Jak w każdym innym aspekcie programowania, podczas eksportu danych można napotkać błędy. Najczęściej występujące są związane z nieprawidłowymi ścieżkami do plików lub brakiem wymaganych bibliotek. Na przykład, jeśli zapomnicie zainstalować openpyxl, eksport do Excel się nie powiedzie.

Sprawdzanie obecności plików

Zanim spróbujecie zapisać lub odczytać plik, warto sprawdzić, czy on istnieje. Można to zrobić za pomocą modułu os:

Python

import os

if os.path.exists('books.csv'):
    print("Plik books.csv istnieje")
else:
    print("Plik books.csv nie został znaleziony")

Nie uwierzycie, ale najczęstszy błąd początkujących to przypadkowe nadpisanie starych danych nowymi. Automatyzacja zapisywania historii plików to sztuka sama w sobie.

Nie zapomnijcie również uwzględnić obsługi błędów za pomocą konstrukcji try-except, aby wasz skrypt nie przestawał działać przy pierwszym napotkanym problemie.

Komentarze
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION