pandas: устройство, выборка и изменение таблиц

Загрузка CSV с явными типами и датами через read_csv

Содержание курса

В прошлом уроке DataFrame создавался вручную — из словаря или списка словарей. В реальной работе данные почти всегда приходят из файла, и самый распространённый формат — CSV. Здесь разберём, как pd.read_csv превращает текстовый файл в DataFrame за один вызов.

pd.read_csv: чтение CSV по пути и файловому объекту

Базовый вызов выглядит так:

import pandas as pd

df = pd.read_csv('data/orders.csv')

Первый аргумент filepath_or_buffer — это либо строка с путём к файлу, либо файловый объект. Pandas принимает оба варианта одинаково.

Путь может быть относительным или абсолютным:

# относительный путь
df = pd.read_csv('data/orders.csv')

# абсолютный путь
df = pd.read_csv('/home/user/projects/data/orders.csv')

Вместо пути можно передать любой файловый объект — например, открытый через open() или созданный через io.StringIO (полезно в тестах и при работе с данными из памяти):

import io

csv_text = """id,date,amount,category
1,2024-01-15,99.5,food
2,2024-02-20,150.0,tech
"""

buf = io.StringIO(csv_text)
df = pd.read_csv(buf)
print(df)

В обоих случаях pandas делает одно и то же: читает первую строку файла как заголовок столбцов, а дальше — строки данных.

Типы pandas выводит автоматически, просматривая значения каждого столбца. Числа без дробной части становятся int64, числа с точкой — float64, всё остальное — object (строки). Посмотреть, что получилось:

print(df.dtypes)
# id          int64
# date        object
# amount      float64
# category    object

Здесь date — это строка (object), потому что pandas по умолчанию не пытается распознавать даты. Автовывод типов работает хорошо для числовых столбцов, но для дат и столбцов с особыми требованиями к типу нужны явные параметры — они будут следующим шагом.