Pandas.read csv: примеры (PYTHON)

Чтение CSV файлов с помощью pandas.read_csv в Python
Раздел: Pandas, Ввод/вывод
pandas.read_csv(filepath_or_buffer: str, sep: str=',', delimiter: str=None): pandas.DataFrame

Описание функции pandas.read_csv

Функция pandas.read_csv предназначена для чтения данных из файлов формата CSV (Comma-Separated Values) и преобразования их в объект DataFrame библиотеки pandas. Она применяется при работе с табличными данными, которые необходимо загрузить для последующего анализа, обработки или визуализации.

Основные аргументы функции

  • filepath_or_buffer: путь к файлу, объект с методом read или URL-адрес.
  • sep: разделитель полей, по умолчанию запятая.
  • delimiter: альтернативный параметр для указания разделителя.
  • header: номер строки, используемой в качестве заголовка, по умолчанию 0.
  • names: список названий столбцов для использования.
  • index_col: столбец для использования в качестве индекса.
  • usecols: список столбцов для загрузки.
  • dtype: указание типов данных для столбцов.
  • skiprows: пропуск указанного количества строк в начале файла.
  • na_values: дополнительные значения для интерпретации как пропуски.
  • encoding: кодировка файла, например 'utf-8'.
  • engine: движок для парсинга, 'c' или 'python'.

Функция возвращает объект DataFrame, содержащий данные из CSV-файла.

Примеры использования функции

Базовый пример чтения CSV-файла:

import pandas as pd
df = pd.read_csv('data.csv')
print(df.head())
   id     name  age
0   1     Ivan   25
1   2    Maria   30
2   3  Sergiy   28

Чтение с указанием разделителя и кодировки:

df = pd.read_csv('data.csv', sep=';', encoding='windows-1251')

Загрузка определенных столбцов:

df = pd.read_csv('data.csv', usecols=['name', 'age'])

Альтернативные функции в Python

pandas.read_table: предназначена для чтения текстовых файлов с различными разделителями, похожа на read_csv, но разделитель по умолчанию - табуляция.

csv.reader: модуль стандартной библиотеки для чтения CSV, обеспечивает более низкоуровневый контроль, но требует больше кода для преобразования в удобные структуры.

Dask.dataframe.read_csv

Аналоги функции в других языках

JavaScript (Node.js): используется библиотека csv-parser или papaparse.

const fs = require('fs');
const csv = require('csv-parser');
fs.createReadStream('data.csv')
  .pipe(csv())
  .on('data', (row) => console.log(row));

Java: библиотека OpenCSV или Apache Commons CSV.

Reader reader = Files.newBufferedReader(Paths.get('data.csv'));
CSVReader csvReader = new CSVReader(reader);
String[] nextRecord;
while ((nextRecord = csvReader.readNext()) != null) {
    System.out.println(Arrays.toString(nextRecord));
}

PHP: встроенная функция fgetcsv.

if (($handle = fopen('data.csv', 'r')) !== FALSE) {
    while (($data = fgetcsv($handle, 1000, ',')) !== FALSE) {
        print_r($data);
    }
    fclose($handle);
}

Типичные ошибки

Некорректное указание пути к файлу вызывает FileNotFoundError:

df = pd.read_csv('несуществующий_файл.csv')
FileNotFoundError: [Errno 2] File несуществующий_файл.csv does not exist

Проблемы с кодировкой приводят к ошибке UnicodeDecodeError:

df = pd.read_csv('data.csv')  # файл в кодировке windows-1251
UnicodeDecodeError: 'utf-8' codec can't decode byte...

Неправильный разделитель приводит к созданию DataFrame с одним столбцом:

# Файл с разделителем ';', но используется запятая по умолчанию
df = pd.read_csv('data_semicolon.csv')
print(df.shape)
(100, 1)

Изменения в последних версиях

В pandas 1.4.0 появилась возможность использовать движок pyarrow для более быстрого чтения CSV-файлов через параметр engine='pyarrow'.

В pandas 2.0.0 улучшена обработка типов данных, по умолчанию для целых чисел используется nullable integer тип.

Начиная с pandas 1.3.0, параметр encoding_errors позволяет контролировать обработку ошибок декодирования.

Расширенные примеры

Чтение файла с пропуском строк и установкой пользовательских названий столбцов:

Пример python
df = pd.read_csv('data.csv', skiprows=2, names=['col1', 'col2', 'col3'])

Обработка дат при загрузке:

Пример python
df = pd.read_csv('dates.csv', parse_dates=['date_column'], dayfirst=True)

Чтение CSV из строки:

Пример python
from io import StringIO
data = 'name,age\nIvan,25\nMaria,30'
df = pd.read_csv(StringIO(data))

Использование пользовательовых значений для пропусков:

Пример python
df = pd.read_csv('data.csv', na_values=['N/A', 'NULL', 'missing'])

Чтение сжатого файла:

Пример python
df = pd.read_csv('data.csv.gz', compression='gzip')

питон pandas.read_csv function comments

En
Pandas.read csv Read CSV file into DataFrame