Deprecated: Creation of dynamic property Yoast\Presenters\CommonArticlePresenter::$metaPropertyType is deprecated in /var/www/html/web/app/themes/tutortop-blog/Yoast/Presenters/CommonArticlePresenter.php on line 26

Deprecated: Creation of dynamic property Yoast\Presenters\CommonArticlePresenter::$metaPropertyType is deprecated in /var/www/html/web/app/themes/tutortop-blog/Yoast/Presenters/CommonArticlePresenter.php on line 26

Deprecated: Creation of dynamic property Yoast\Presenters\CommonArticlePresenter::$metaPropertyType is deprecated in /var/www/html/web/app/themes/tutortop-blog/Yoast/Presenters/CommonArticlePresenter.php on line 26
CSV Python: модуль csv, pandas, чтение и запись файлов - полное руководство
Дата обновления: 24 Июня 2025
23.06.2025
159
5.5 мин

Что такое CSV в Python: полное руководство по работе с табличными данными

Введение в CSV файлы и их использование

CSV представляет собой текстовый формат для хранения табличных данных, где значения разделены запятыми. Простота формата делает его универсальным инструментом для обмена данными между различными системами и языками программирования.

Основные преимущества CSV:

  • Читаемость человеком
  • Поддержка всеми табличными редакторами
  • Малый размер файлов
  • Простота обработки

Изучить разработку на Python более детально вы сможете на онлайн-курсах.

Модуль csv — чтение и запись CSV файлов

Python предоставляет встроенный модуль csv, который упрощает работу с файлами данного формата. Рассмотрим основные функции:

Чтение CSV файла:

import csv

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

Запись в CSV файл:

import csv

data = [['Имя', 'Возраст', 'Город'],
['Анна', '25', 'Москва'],
['Петр', '30', 'СПб']]

with open('output.csv', 'w', newline='', encoding='utf-8') as file:
writer = csv.writer(file)
writer.writerows(data)

Функции обработки CSV-файлов

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

КлассНазначениеОсновные методыСлучаи использования
csv.readerЧтение строкnext(), __iter__()Простые списки данных
csv.writerЗапись строкwriterow(), writerows()Экспорт списков
csv.DictReaderЧтение как словарьfieldnames, next()Структурированные данные
csv.DictWriterЗапись словарейwriteheader(), writerow()Сложные структуры данных

Работа со словарями

DictReader и DictWriter особенно полезны при работе со структурированными данными:

import csv

# Чтение с использованием DictReader
with open('employees.csv', 'r', encoding='utf-8') as file:
reader = csv.DictReader(file)
for row in reader:
print(f"{row['name']} работает в {row['department']}")

# Запись с использованием DictWriter
employees = [
{'name': 'Иван', 'age': 28, 'department': 'IT'},
{'name': 'Мария', 'age': 32, 'department': 'HR'}
]

with open('new_employees.csv', 'w', newline='', encoding='utf-8') as file:
fieldnames = ['name', 'age', 'department']
writer = csv.DictWriter(file, fieldnames=fieldnames)
writer.writeheader()
writer.writerows(employees)

Диалекты и параметры форматирования

CSV-файлы могут иметь различное форматирование. Python позволяет настраивать параметры чтения и записи через диалекты.

Предустановленные диалекты

Основные диалекты включают:

  • excel — стандартный формат Excel
  • excel-tab — разделение табуляцией
  • unix — Unix-совместимый формат
import csv

# Использование диалекта Excel
with open('data.csv', 'r') as file:
reader = csv.reader(file, dialect='excel')
data = list(reader)

# Кастомный диалект
csv.register_dialect('pipes', delimiter='|', quoting=csv.QUOTE_NONE)

Работа с CSV файлами с использованием библиотеки pandas

Для более сложной обработки данных рекомендуется использовать библиотеку pandas, которая предоставляет мощные инструменты анализа данных.

Чтение CSV файлов с помощью pandas

import pandas as pd

# Простое чтение
df = pd.read_csv('sales_data.csv')

# Чтение с дополнительными параметрами
df = pd.read_csv('sales_data.csv', 
                 sep=';',           # разделитель
                 encoding='utf-8',  # кодировка
                 index_col=0,       # индексный столбец
                 parse_dates=['date']) # парсинг дат

Запись данных в CSV файл с помощью pandas

import pandas as pd

# Создание DataFrame
data = {
    'product': ['Товар A', 'Товар B', 'Товар C'],
    'price': [100, 150, 200],
    'quantity': [10, 5, 8]
}
df = pd.DataFrame(data)

# Запись в CSV
df.to_csv('products.csv', index=False, encoding='utf-8')

Практические примеры и советы по работе с CSV файлами

Пример 1: Анализ продаж

Представим, что у нас есть файл с данными о продажах, и нужно найти самый популярный товар:

import csv
from collections import Counter

def analyze_sales(filename):
products = []
with open(filename, 'r', encoding='utf-8') as file:
reader = csv.DictReader(file)
for row in reader:
products.append(row['product'])

most_popular = Counter(products).most_common(1)[0]
print(f"Самый популярный товар: {most_popular[0]} ({most_popular[1]} продаж)")

analyze_sales('sales.csv')

Пример 2: Обработка больших файлов

При работе с файлами размером более 1 ГБ важно использовать генераторы:

def process_large_csv(filename):
with open(filename, 'r', encoding='utf-8') as file:
reader = csv.DictReader(file)
for row in reader:
# Обработка по одной строке
if int(row['price']) > 1000:
yield row

# Использование
for expensive_item in process_large_csv('big_catalog.csv'):
print(expensive_item['name'])
Мужчина работает за ноутбуком

Указание разделителя и обработка ошибок

В реальных проектах CSV-файлы могут содержать различные разделители и ошибки форматирования:

import csv

def safe_csv_read(filename, delimiter=','):
try:
with open(filename, 'r', encoding='utf-8') as file:
# Автоматическое определение диалекта
sample = file.read(1024)
file.seek(0)
sniffer = csv.Sniffer()
dialect = sniffer.sniff(sample, delimiters=';,\t')

reader = csv.DictReader(file, dialect=dialect)
return list(reader)
except UnicodeDecodeError:
# Попытка с другой кодировкой
with open(filename, 'r', encoding='cp1251') as file:
reader = csv.DictReader(file, delimiter=delimiter)
return list(reader)
except Exception as e:
print(f"Ошибка чтения файла: {e}")
return []

Часто задаваемые вопросы

Как обработать CSV файл с кириллическими символами?

Используйте параметр encoding='utf-8' при открытии файла. Если возникают ошибки, попробуйте encoding='cp1251' для файлов, созданных в Windows.

Что делать, если CSV файл содержит запятые внутри значений?

Модуль csv автоматически обрабатывает значения в кавычках. Убедитесь, что используете параметр quoting=csv.QUOTE_ALL при записи файлов с такими данными.

Как ускорить обработку больших CSV файлов?

Используйте pandas для векторизованных операций, читайте файлы частями с параметром chunksize, и рассмотрите возможность использования библиотек типа Dask для параллельной обработки.

Дорожная карта изучения CSV в Python

  1. Основы (1-2 недели): Изучите модуль csv, попрактикуйтесь с чтением и записью простых файлов
  2. Продвинутый уровень (2-3 недели): Освойте pandas, изучите обработку больших файлов и оптимизацию
  3. Профессиональный уровень (1 месяц): Изучите валидацию данных, обработку ошибок и интеграцию с базами данных
  4. Экспертный уровень: Освойте Dask, Apache Arrow и другие инструменты для больших данных

Оцените статью

4.6 5 (16 оценок)
Хочу стать Python-разработчиком!
Специально для вас мы собрали отдельную подборку лучших онлайн-курсов по Python на рынке и сравнили их по цене, продолжительности и отзывам студентов.
Все курсы Python