Найти в Дзене

Использование метода .read_csv библиотеки Pandas.

Метод read_csv() в библиотеке Pandas — это один из самых популярных инструментов для загрузки данных из CSV-файлов в DataFrame. Он обладает множеством параметров, позволяющих гибко настраивать процесс чтения данных. Я не буду тут делать большие объяснение, возьму чистую базу и расскажу то, что вам хватит для использования в метода. import pandas as pd #Импортирование библиотеки df = pd.read_csv('data.csv') # Загрузка CSV-файла в DataFrame print(df.head()) # Вывод первых 5 строк Примечание: # Абсолютный путь для 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") Если при команде .head() у вас выводиться нечто подобное: Значит у вас не хватает параметра "sep". На сама деле всё просто. Увидели чем разделяются данные, в нашем случае это "\t" и прописали его в параметре: import pandas as pd data = pd.read_csv('data.csv', sep='\t') # добавили параметр. print(data.head()) Когда нужн
Оглавление

Метод 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() у вас выводиться нечто подобное:

Пример открытия файла .csv методом .read_csv() без параметра sep.
Пример открытия файла .csv методом .read_csv() без параметра sep.

Значит у вас не хватает параметра "sep". На сама деле всё просто. Увидели чем разделяются данные, в нашем случае это "\t" и прописали его в параметре:

import pandas as pd
data = pd.read_csv('data.csv', sep='\t') # добавили параметр.
print(data.head())

3. Пропуск заголовка (header)

Когда нужно пропускать заголовок?

  1. В файле нет строки с названиями столбцов (просто данные).
  2. Заголовок находится не в первой строке (например, после комментариев или метаданных).
  3. Вы хотите задать свои названия столбцов вручную.

Как это сделать?

Основной параметр — 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)

Вывод:

-3

Что произошло?

  • Pandas не стал использовать первую строку как заголовок.
  • Столбцы получили номера: 0, 1, 2.

2. names=[...] — задаём свои названия столбцов

Допустим, мы знаем, что столбцы должны называться id, name, age:

df = pd.read_csv('data.csv', header=None, names=['id', 'name', 'age'])
print(df)

Вывод:

-4

Важно:

  • Если 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)

Вывод (некорректный!):

-5

Решение:

df = pd.read_csv('data_with_junk.csv', skiprows=1)
print(df)

Вывод (теперь правильно):

-6

Что произошло?

  • skiprows=1 пропустил первую строку ("Это временные данные").
  • Вторая строка (id,name,age) стала заголовком.

Сохрани таблицу, чтобы было проще в будущем:

Параметры по работе с заголовками в функции .read_csv()
Параметры по работе с заголовками в функции .read_csv()

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)

Вывод:

-8

Вариант 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)

Вывод:

-9

Теперь можно удобно делать выборки по дате:

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)

Вывод:

-10

Теперь можно делать выборки по уровню индекса:

print(df.loc['10A']) # все студенты класса 10A

4. Что будет, если не указывать index_col?

Pandas автоматически создаст обычный числовой индекс (0, 1, 2...).

Пример:

df = pd.read_csv('users.csv')
print(df)

Вывод:

-11

Здесь id — просто столбец, а индекс сгенерирован автоматически.)

5. Когда использовать index_col?

Есть уникальный идентификатор (ID, дата, email) — лучше сделать его индексом.
Частый поиск по столбцу — индекс ускорит выборки (df.loc[id]).
Временные ряды — индексом обычно делают дату.

Если индекс не несёт смысла (просто нумерация) — можно оставить стандартный RangeIndex.

Дам табличку, чтобы можно было лучше ориентироваться:

Таблица по использованию параметра index_col в методе .read_csv()
Таблица по использованию параметра index_col в методе .read_csv()

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)

Вывод:

-13

Пример 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)

Вывод:

-14

Пропуск строк в конце файла (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)

Вывод:

-15

Комбинация 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)

Вывод:

-16

Полезные советы

  1. Проверяйте данные после пропуска строк — иногда skiprows может "съесть" нужную информацию.
  2. Используйте header и names, если заголовок был пропущен:pythonCopydf = pd.read_csv('data.csv', skiprows=2, names=['id', 'name', 'age'])
  3. Для больших файлов skipfooter может замедлить загрузку (из-за engine='python'). В таком случае лучше обрезать файл заранее.

Заключение.

Вот краткая сводная таблица по основным параметрам pd.read_csv(), которые мы разобрали в этом уроке:

Краткая таблица по методу .read_csv()
Краткая таблица по методу .read_csv()

На этом всё. Если у вас появились вопросы, то напишите об этом в комментариях. А если хотите изучить остальные параметры из метода read_csv(), то можете воспользоваться оригинальной документации или попросить меня, если наберется 10 комментариев поэтому вопросу, то сделаю продолжение.