0Pricing
Pandas & NumPy Academy · Lekcja

Odczytywanie plików CSV

Wczytywać pliki CSV za pomocą pd.read_csv, konfigurować separatory, wiersze nagłówka i kolumny indeksu oraz wyświetlać podgląd wyniku

Odczytywanie plików CSV to bezpłatna lekcja Pandas & NumPy Academy na CoddyKit. To lekcja 1 z 4. Możesz przeczytać całą lekcję poniżej za darmo — a potem ćwiczyć ją interaktywnie w przeglądarce z wbudowanym edytorem kodu i tutorem AI dostępnym 24/7. To część ścieżki edukacyjnej Pandas & NumPy Academy, a Twój postęp synchronizuje się między webem a aplikacją CoddyKit. Kurs Pandas & NumPy Academy zawiera 4 lekcji w sumie.

Dlaczego CSV jest uniwersalnym formatem

CSV (Comma-Separated Values) to najczęściej używany format wymiany danych tabelarycznych. Jest czytelny dla człowieka, obsługiwany przez każdą bazę danych, arkusz kalkulacyjny i narzędzie analityczne oraz nie wymaga definiowania schematu. pd.read_csv() jest najczęściej wywoływaną funkcją Pandas w analizie danych, ponieważ praktycznie każdy publiczny zbiór danych, eksport z API lub zrzut bazy danych jest dostępny w formacie CSV.

import pandas as pd

# Read a CSV file from disk
df = pd.read_csv('data/sales.csv')
print(df.shape)
print(df.head())

Podstawowe wywołanie read_csv()

Jedynym wymaganym argumentem jest ścieżka do pliku (ciąg znaków lub obiekt Path). Domyślnie Pandas zakłada, że pierwszy wiersz jest nagłówkiem (nazwami kolumn), separatorem jest przecinek, a typy wartości są automatycznie dobierane. Wynikowy obiekt DataFrame ma domyślny indeks całkowitoliczbowy RangeIndex. Po wczytaniu danych należy zawsze od razu wywołać df.info(), aby wykryć problemy z wnioskowaniem typów.

import pandas as pd

df = pd.read_csv('products.csv')

# Equivalent with explicit defaults:
df = pd.read_csv('products.csv',
                 sep=',',
                 header=0,
                 index_col=None)

Kontrolowanie separatora

Użyj parametru sep=, aby określić separator inny niż przecinek. Pliki rozdzielane tabulatorami (TSV) używają sep='\t'. W niektórych europejskich eksportach separatorem jest średnik (sep=';'), ponieważ przecinki służą jako separatory dziesiętne. Przekaż sep=None, engine='python', aby pozwolić Pandas automatycznie wykryć separator na podstawie zawartości pliku.

import pandas as pd

# Tab-separated file
df_tsv = pd.read_csv('data.tsv', sep='\t')

# Semicolon-separated (common in Europe)
df_semi = pd.read_csv('data.csv', sep=';')

# Auto-detect separator
df_auto = pd.read_csv('data.txt', sep=None, engine='python')

Nagłówek i skiprows

Jeśli plik CSV nie zawiera wiersza nagłówka, ustaw header=None, a Pandas przypisze kolumnom nazwy całkowitoliczbowe (0, 1, 2, ...). Własne nazwy podaj za pomocą names=['a', 'b', 'c']. Użyj skiprows=n, aby pominąć pierwsze n wierszy (na przykład metadane lub komentarze na początku pliku). skiprows akceptuje również listę konkretnych numerów wierszy do pominięcia.

import pandas as pd

# CSV with no header
df = pd.read_csv('noheader.csv', header=None,
                 names=['id', 'value', 'category'])

# Skip first 3 rows (e.g., metadata or comments)
df = pd.read_csv('report.csv', skiprows=3)

Ustawianie kolumny indeksu

index_col= określa kolumnę używaną jako indeks wierszy. Przekaż nazwę kolumny lub jej pozycję całkowitą. Ustawienie znaczącego indeksu (np. kolumny z datą lub unikatowym identyfikatorem) umożliwia szybki dostęp na podstawie etykiet za pomocą .loc i jest wymagane przed wykonaniem operacji na szeregach czasowych. Przekaż listę, aby utworzyć MultiIndex.

import pandas as pd

# Use 'date' column as row index
df = pd.read_csv('timeseries.csv', index_col='date', parse_dates=True)
print(df.index.dtype)  # datetime64[ns]

# Equivalent with column position
df2 = pd.read_csv('timeseries.csv', index_col=0, parse_dates=True)

Parsowanie dat podczas wczytywania

parse_dates=True informuje Pandas, aby spróbował przekonwertować indeks na typ datetime. Przekaż listę nazw kolumn do parse_dates=['col1', 'col2'], aby sparsować określone kolumny inne niż indeks jako daty. Pandas automatycznie rozpoznaje typowe formaty; w przypadku nietypowych formatów użyj date_format=. Parsowanie dat podczas wczytywania pozwala uniknąć wielokrotnego wywoływania pd.to_datetime() w późniejszym etapie.

import pandas as pd

# Parse 'order_date' column as datetime
df = pd.read_csv('orders.csv',
                 parse_dates=['order_date'])
print(df['order_date'].dtype)  # datetime64[ns]

Wybieranie kolumn za pomocą usecols

usecols=['col1', 'col2'] wczytuje tylko określone kolumny, pomijając wszystkie pozostałe. Ma to kluczowe znaczenie w przypadku dużych plików CSV — jeśli potrzebuje Pan/Pani tylko 5 kolumn, nie ma potrzeby odczytywania pliku zawierającego 200 kolumn. Znacznie ogranicza to zarówno czas operacji wejścia-wyjścia, jak i zużycie pamięci. Aby wybierać kolumny na podstawie wzorca nazwy, należy przekazać funkcję wywoływalną.

import pandas as pd

# Load only 3 of potentially many columns
df = pd.read_csv('big_file.csv',
                 usecols=['user_id', 'event', 'timestamp'])
print(df.columns.tolist())  # ['user_id', 'event', 'timestamp']

Kontrolowanie typów danych podczas wczytywania

Pandas wnioskuje typy danych, ale takie wnioskowanie może być błędne — kolumna identyfikatorów zawierająca wyłącznie ciągi znaków złożone z cyfr może stać się kolumną typu int64, a kolumna cen z brakującymi wartościami może nieoczekiwanie stać się kolumną typu float64. Należy użyć dtype={'col': str}, aby wymusić określone typy. Jest to również wydajniejsze: wcześniejsze określenie typów pomija etap wnioskowania i może przyspieszyć wczytywanie dużych plików o 20–30%.

import pandas as pd

df = pd.read_csv('orders.csv', dtype={
    'order_id': str,      # keep as string (not int)
    'price': float,
    'quantity': 'int32'   # use smaller int
})

Obsługa brakujących wartości podczas wczytywania

Domyślnie Pandas rozpoznaje wiele reprezentacji brakujących wartości: puste komórki, 'NA', 'NaN', 'N/A', 'null' itd. Należy użyć na_values=['?', '-', 'missing'], aby dodać własne oznaczenia. Użycie keep_default_na=False wyłącza wbudowaną listę i powoduje, że jako brakujące są traktowane tylko określone przez Pana/Panią wartości. Zapobiega to przypadkowemu potraktowaniu prawidłowych wartości tekstowych, takich jak 'NA' (akronim), jako NaN.

import pandas as pd

df = pd.read_csv('survey.csv',
                 na_values=['?', '', 'N/A', 'none'])
print(df.isnull().sum())

nrows i chunksize w przypadku dużych plików

nrows=100 wczytuje tylko pierwszych 100 wierszy — idealnie nadaje się do szybkiego sprawdzenia schematu ogromnego pliku. chunksize=10000 zwraca iterator TextFileReader, który dostarcza obiekty DataFrame zawierające po 10000 wierszy, umożliwiając przetwarzanie fragmentami plików, które nie mieszczą się w pamięci RAM. Odczyt fragmentami został szczegółowo omówiony w zaawansowanej lekcji poświęconej wydajności.

import pandas as pd

# Quick peek at a large file
header_df = pd.read_csv('huge.csv', nrows=5)
print(header_df.dtypes)

# Chunked reading
for chunk in pd.read_csv('huge.csv', chunksize=50000):
    print(chunk.shape)  # process each chunk

Typowe pułapki związane z read_csv

Należy uważać na następujące częste problemy: błędy kodowania (należy użyć encoding='utf-8' lub 'latin-1'), spacje na początku nazw kolumn (należy użyć skipinitialspace=True), separatory tysięcy w liczbach (należy użyć thousands=',') oraz przecinki dziesiętne w liczbach europejskich (należy użyć decimal=',' i sep=';'). Jeśli zostaną zignorowane, każdy z tych problemów może po cichu przekształcić kolumny liczbowe w kolumny typu object.

import pandas as pd

# European format: semicolon sep, comma decimal, UTF-8
df = pd.read_csv('euro_data.csv',
                 sep=';',
                 decimal=',',
                 thousands='.',
                 encoding='utf-8',
                 skipinitialspace=True)

Szybkie sprawdzenie

Sprawdź swoją wiedzę na temat odczytywania plików CSV za pomocą Pandas z tej lekcji.

Podsumowanie lekcji

W tej lekcji nauczył(a) się Pan/Pani, że: pd.read_csv() jest główną funkcją służącą do wczytywania danych tabelarycznych i udostępnia wiele parametrów konfiguracyjnych, sep, header, index_col oraz parse_dates określają sposób interpretacji pliku, a usecols i dtype poprawiają wydajność oraz bezpieczeństwo typów w przypadku dużych plików. Następnie zajmiemy się odczytywaniem plików Excel i JSON, które mają własne parametry zależne od formatu.

Często zadawane pytania

Czy lekcja „Odczytywanie plików CSV” jest bezpłatna?

Tak — pełny tekst „Odczytywanie plików CSV” jest dostępny za darmo tutaj w sieci. Aby ćwiczyć ją interaktywnie (wbudowany edytor kodu i tutor AI dostępny 24/7) i odblokować resztę kursu Pandas & NumPy Academy, przejdź na CoddyKit PRO. Kurs Pandas & NumPy Academy zawiera 4 lekcji w sumie.

Co nauczysz się w „Odczytywanie plików CSV”?

Wczytywać pliki CSV za pomocą pd.read_csv, konfigurować separatory, wiersze nagłówka i kolumny indeksu oraz wyświetlać podgląd wyniku Ćwiczysz Pandas & NumPy Academy z praktycznym kodem, który uruchamiasz bezpośrednio w przeglądarce, a tutor AI dostępny 24/7 odpowiada na Twoje pytania podczas pracy nad lekcją.

Czy potrzebuję doświadczenia, aby zacząć Pandas & NumPy Academy?

Nie wymagamy żadnego doświadczenia. Pandas & NumPy Academy w CoddyKit jest strukturyzowany dla początkujących i zaawansowanych użytkowników, więc możesz zacząć tutaj lub od początku i uczyć się w swoim tempie. To lekcja 1 z 4.

Ile czasu zajmuje lekcja „Odczytywanie plików CSV”?

Większość lekcji CoddyKit trwa około 5–10 minut. Każda lekcja to mały, interaktywny krok, dzięki czemu robisz systematyczne postępy i zawsze wracasz dokładnie do tego samego miejsca — na webie i w aplikacji.

Czy mogę pisać i uruchamiać kod w tej lekcji Pandas & NumPy Academy?

Tak. Każda lekcja Pandas & NumPy Academy zawiera wbudowany edytor kodu, więc piszesz i uruchamiasz prawdziwy kod bezpośrednio w przeglądarce i od razu otrzymujesz sprzężenie zwrotne od AI — bez konfiguracji na komputerze.

Wszystkie lekcje w tym kursie

  1. Odczytywanie plików CSV
  2. Odczytywanie plików Excel i JSON
  3. Zapisywanie DataFrame do plików
  4. Odczytywanie z adresów URL i StringIO
← Powrót do Pandas & NumPy Academy