Чтение определённых колонок CSV без заголовков в Pandas

Пройдите тест, узнайте какой профессии подходите

Я предпочитаю
0%
Работать самостоятельно и не зависеть от других
Работать в команде и рассчитывать на помощь коллег
Организовывать и контролировать процесс работы

Быстрый ответ

Для чтения CSV-файла без заголовка в библиотеке Pandas, используйте функцию pd.read_csv('file.csv', header=None). Так, первая строка файла интерпретируется как запись данных, а не как заголовки столбцов. После этого можно присвоить названия столбцам следующим образом: df.columns = ['name1', 'name2', ...].

Python
Скопировать код
import pandas as pd
df = pd.read_csv('file.csv', header=None) # чтение файла без заголовков
df.columns = ['name1', 'name2', 'name3'] # присвоение имен столбцам
Кинга Идем в IT: пошаговый план для смены профессии

Выбор столбцов с помощью usecols

Если необходимо извлечь лишь определённые столбцы из большого файла, параметр usecols будет крайне полезен:

Python
Скопировать код
df = pd.read_csv('large_file.csv', header=None, usecols=[3, 6]) # выбираем нужные столбцы
df.columns = ['fourth_column', 'seven_column'] # задание имен выбранным столбцам

Такой подход допускает извлечение данных только из 4-го и 7-го столбца, что ускоряет работу библиотеки pandas.

Работа с файлами, не являющимися форматом CSV

Для работы с TSV-файлами или файлами, которые используют иные разделители, применяйте read_table — специализированный аналог read_csv.

Python
Скопировать код
df = pd.read_table('data.tsv', header=None, sep='\t') 
# Для файлов с отличающимися разделителями, например, с точкой с запятой:
df = pd.read_csv('data.csv', header=None, sep=';')

Не забудьте правильно установить параметр sep, который должен соответствовать разделителю в вашем файле.

Добавление заголовков после чтения файла

Если необходимо добавить имена столбцам уже после загрузки данных, параметр names окажется очень кстати:

Python
Скопировать код
headers = ['id', 'value1', 'value2']
df = pd.read_csv('no_header_data.csv', header=None, names=headers)

Применение параметра names позволяет присвоить столбцам произвольные имена даже после прочтения данных.

Визуализация

Чтение таблиц без заголовков с помощью библиотеки pandas можно представить себе как выбор неназванной книги:

Python
Скопировать код
pd.read_csv('data.csv', header=None)

Это похоже на то, как если бы вы взяли книгу с пустой обложкой:

Markdown
Скопировать код
📖Обложка: [_______]

И наполнили её своими собственными неповторимыми историями:

Markdown
Скопировать код
После: [📖Глава1, 📖Глава2, 📖Глава3]

Каждая глава и страница будет наполнена уникальными и чистыми данными!

Избегание дублирования в заголовках

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

Python
Скопировать код
# Не присваивайте одинаковые имена:
df.columns = ['id', 'data', 'data']
# Действуйте так:
df.columns = ['id', 'data1', 'data2']

Избавляясь от дубликатов, вы облегчаете работу с данными!

Индексация при отсутствии заголовков

Даже в отсутствии заголовков можно прекрасно систематизировать данные, используя их индексацию:

Python
Скопировать код
df = pd.read_csv('file.csv', header=None, index_col=0)

Установив значение параметра index_col, вы мгновенно назначите определённый столбец в качестве индекса для DataFrame. Заголовки вовсе не всегда являются необходимыми!

Работа с смешанными и отсутствующими типами данных

Обработка данных иногда напоминает исследование неизвестной местности, где вас поджидают неполные и зашумлённые данные. Найти правильный путь помогут строгая типизация и обработка отсутствующих значений:

Python
Скопировать код
df = pd.read_csv('file.csv', header=None, dtype={0: 'int', 1: 'float'}, na_values=['NA'])

Явно указав dtype, вы избегаете неожиданных преобразований типов, а na_values помогают обрабатывать отсутствующие значения.

Полезные материалы

  1. pandas.read_csv — документация pandas 2.2.0 — Основательная документация, раскрывающая все нюансы read_csv.
  2. python – Загрузка данных из txt с помощью pandas – Stack Overflow – Обсуждение между пользователями pandas на тему работы с CSV-файлами без заголовков.
  3. DataFrame — документация pandas 2.2.0 — Развернутый глоссарий по структурам данных DataFrame и их функционалу.
  4. Работа с текстовыми данными — документация pandas 2.2.0 – Раздел документации, где разъясняются методы обработки текстовых данных.
  5. pandas: Как читать и записывать файлы – Real Python — Детальное руководство по работе с read_csv и другими функциями ввода-вывода данных.
  6. Введение в структуры данных — документация pandas 2.2.0 – Раздел, в котором рассказывают о создании DataFrame из различных источников данных.