Метод read_csv() в библиотеке Pandas — это один из самых популярных инструментов для загрузки данных из CSV-файлов в DataFrame. Он обладает множеством параметров, позволяющих гибко настраивать процесс чтения данных.
Я не буду тут делать большие объяснение, возьму чистую базу и расскажу то, что вам хватит для использования в метода.
Основное использование
1. Простейший случай (чтение CSV-файла)
import pandas as pd #Импортирование библиотеки
df = pd.read_csv('data.csv') # Загрузка CSV-файла в DataFrame
print(df.head()) # Вывод первых 5 строк
Примечание:
- Файл data.csv должен находиться в той же директории, что и скрипт, либо нужно указать полный путь. Пример указания полного (абсолютного) пути я указал в коде ниже. Выберите то ПО, которое у вас установлено, только измените путь под себя.
# Абсолютный путь для Windows
data_win = pd.read_csv(r"C:\Users\Name\Documents\data.csv")
# Абсолютный путь для Mac/Linux
data_mac = pd.read_csv("/Users/Name/Documents/data.csv")
- Pandas автоматически определит разделитель (обычно " , ", но может быть " ; " , "\t" и др.).
2. Указание разделителя (sep)
Если при команде .head() у вас выводиться нечто подобное:
Значит у вас не хватает параметра "sep". На сама деле всё просто. Увидели чем разделяются данные, в нашем случае это "\t" и прописали его в параметре:
import pandas as pd
data = pd.read_csv('data.csv', sep='\t') # добавили параметр.
print(data.head())
3. Пропуск заголовка (header)
Когда нужно пропускать заголовок?
- В файле нет строки с названиями столбцов (просто данные).
- Заголовок находится не в первой строке (например, после комментариев или метаданных).
- Вы хотите задать свои названия столбцов вручную.
Как это сделать?
Основной параметр — header, но можно комбинировать с names и skiprows (Приведу пример, но подробнее расскажу в пункте №5).
1. header=None — нет заголовка, столбцы нумеруются (0, 1, 2...)
Пример CSV-файла (data.csv):
10,Алексей,25
20,Мария,30
30,Иван,22
Код:
import pandas as pd
df = pd.read_csv('data.csv', header=None)
print(df)
Вывод:
Что произошло?
- Pandas не стал использовать первую строку как заголовок.
- Столбцы получили номера: 0, 1, 2.
2. names=[...] — задаём свои названия столбцов
Допустим, мы знаем, что столбцы должны называться id, name, age:
df = pd.read_csv('data.csv', header=None, names=['id', 'name', 'age'])
print(df)
Вывод:
Важно:
- Если header=None не указать, первая строка файла будет потеряна (она не станет данными, а попытается быть заголовком).
3. skiprows=1 — пропустить первую строку (если она мешает)
Пример CSV-файла (data.csv):
Это временные данные
id,name,age
10,Алексей,25
20,Мария,30
Если просто прочитать файл, код ниже:
df = pd.read_csv('data_with_junk.csv')
print(df)
Вывод (некорректный!):
Решение:
df = pd.read_csv('data_with_junk.csv', skiprows=1)
print(df)
Вывод (теперь правильно):
Что произошло?
- skiprows=1 пропустил первую строку ("Это временные данные").
- Вторая строка (id,name,age) стала заголовком.
Сохрани таблицу, чтобы было проще в будущем:
4. Указание индекса (index_col)
Детально разберём назначение столбца как индекса в pd.read_csv() с помощью параметра index_col. Это особенно полезно, когда в данных есть уникальный идентификатор (например, id, timestamp, email), который удобно использовать как индекс для быстрого поиска.
1. Простой пример: указание столбца как индекса
Допустим, у нас есть CSV-файл users.csv:
id,name,age
1,Алексей,25
2,Мария,30
3,Иван,22
Вариант 1: Использование имени столбца (index_col='id')
import pandas as pd
df = pd.read_csv('users.csv', index_col='id') # столбец 'id' становится индексом
print(df)
Вывод:
Вариант 2: Использование номера столбца (index_col=0)
df = pd.read_csv('users.csv', index_col=0) # первый столбец (нумерация с 0!) становится индексом
print(df)
Результат будет таким же, как выше.
2. Если индекс — это дата или время
Часто индексом делают столбец с датами (например, в временных рядах).
Файл sales.csv:
date,product,revenue
2023-01-01,Яблоко,100
2023-01-02,Груша,150
2023-01-03,Банан,80
Сделаем date индексом + автоматический парсинг даты
df = pd.read_csv(
'sales.csv',
index_col='date', # столбец 'date' становится индексом
parse_dates=True # автоматически преобразует дату в datetime
)
print(df)
Вывод:
Теперь можно удобно делать выборки по дате:
print(df.loc['2023-01-02']) # вывод данных за 2 января
3. Мультииндекс (несколько столбцов как индекс)
Если нужно сделать иерархический (многоуровневый) индекс, можно передать список столбцов.
Файл students.csv:
class,name,subject,grade
10A,Алексей,Математика,5
10A,Алексей,Физика,4
10B,Мария,Математика,5
Сделаем class и name мультииндексом
df = pd.read_csv('students.csv', index_col=['class', 'name'])
print(df)
Вывод:
Теперь можно делать выборки по уровню индекса:
print(df.loc['10A']) # все студенты класса 10A
4. Что будет, если не указывать index_col?
Pandas автоматически создаст обычный числовой индекс (0, 1, 2...).
Пример:
df = pd.read_csv('users.csv')
print(df)
Вывод:
Здесь id — просто столбец, а индекс сгенерирован автоматически.)
5. Когда использовать index_col?
✅ Есть уникальный идентификатор (ID, дата, email) — лучше сделать его индексом.
✅ Частый поиск по столбцу — индекс ускорит выборки (df.loc[id]).
✅ Временные ряды — индексом обычно делают дату.
❌ Если индекс не несёт смысла (просто нумерация) — можно оставить стандартный RangeIndex.
Дам табличку, чтобы можно было лучше ориентироваться:
5. Пропуск строк (skiprows, skipfooter)
Пропуск строк в начале файла (skiprows). Параметр skiprows позволяет пропустить указанное количество строк в начале файла. Он может принимать:
- Целое число — сколько строк пропустить.
- Список чисел — номера строк, которые нужно пропустить (нумерация с 0).
Пример 1: Пропуск первых N строк
Файл data.csv:
Это заголовок, который нам не нужен
id,name,age
1,Алексей,25
2,Мария,30
3,Иван,22
Задача: Пропустить первую строку ("Это заголовок..."), чтобы id,name,age стало заголовком.
Решение:
import pandas as pd
df = pd.read_csv('data.csv', skiprows=1)
print(df)
Вывод:
Пример 2: Пропуск конкретных строк (по номерам)
Файл data_with_comments.csv:
# Файл создан 2023-10-01
# Автор: Иванов
id,name,age
1,Алексей,25
2,Мария,30
3,Иван,22
Задача: Пропустить строки 0 и 1 (комментарии), оставив id,name,age как заголовок.
Решение:
df = pd.read_csv('data_with_comments.csv', skiprows=[0, 1])
print(df)
Вывод:
Пропуск строк в конце файла (skipfooter)
Параметр skipfooter позволяет пропустить указанное количество строк в конце файла.
Пример: Пропуск последних N строк
Файл data_with_footer.csv:
id,name,age
1,Алексей,25
2,Мария,30
3,Иван,22
Это подвал файла
Строка, которую нужно игнорировать
Задача: Пропустить последние 2 строки (подвал).
Решение:
df = pd.read_csv('data_with_footer.csv', skipfooter=2)
print(df)
Вывод:
Комбинация skiprows и skipfooter
Можно одновременно пропускать строки и в начале, и в конце файла.
Файл complex_data.csv:
Метаданные: 2023-10-01
Автор: Петров
id,name,age
1,Алексей,25
2,Мария,30
3,Иван,22
Конец файла
Не нужная строка
Задача:
- Пропустить первые 2 строки (метаданные).
- Пропустить последние 2 строки (подвал).
Решение:
df = pd.read_csv(
'complex_data.csv',
skiprows=2, # пропускаем первые 2 строки
skipfooter=2, # пропускаем последние 2 строки
engine='python' # обязательно для skipfooter
)
print(df)
Вывод:
Полезные советы
- Проверяйте данные после пропуска строк — иногда skiprows может "съесть" нужную информацию.
- Используйте header и names, если заголовок был пропущен:pythonCopydf = pd.read_csv('data.csv', skiprows=2, names=['id', 'name', 'age'])
- Для больших файлов skipfooter может замедлить загрузку (из-за engine='python'). В таком случае лучше обрезать файл заранее.
Заключение.
Вот краткая сводная таблица по основным параметрам pd.read_csv(), которые мы разобрали в этом уроке:
На этом всё. Если у вас появились вопросы, то напишите об этом в комментариях. А если хотите изучить остальные параметры из метода read_csv(), то можете воспользоваться оригинальной документации или попросить меня, если наберется 10 комментариев поэтому вопросу, то сделаю продолжение.