Pandas.read csv: примеры (PYTHON)
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-1251UnicodeDecodeError: '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 позволяет контролировать обработку ошибок декодирования.
Расширенные примеры
Чтение файла с пропуском строк и установкой пользовательских названий столбцов:
df = pd.read_csv('data.csv', skiprows=2, names=['col1', 'col2', 'col3'])Обработка дат при загрузке:
df = pd.read_csv('dates.csv', parse_dates=['date_column'], dayfirst=True)Чтение CSV из строки:
from io import StringIO
data = 'name,age\nIvan,25\nMaria,30'
df = pd.read_csv(StringIO(data))Использование пользовательовых значений для пропусков:
df = pd.read_csv('data.csv', na_values=['N/A', 'NULL', 'missing'])Чтение сжатого файла:
df = pd.read_csv('data.csv.gz', compression='gzip')