Привет! В прошлой статье мы познакомились с DataFrame — главной структурой данных в Pandas. Но данные редко лежат прямо в коде. Чаще всего они хранятся в файлах: CSV, Excel, JSON. Или приходят из API в виде словарей. Как превратить всё это в DataFrame?
В этой статье мы разберём:
- Создание DataFrame из словаря
- Чтение CSV-файлов
- Чтение Excel-файлов
- Чтение JSON и других форматов
- Полезные параметры при чтении
- Что нужно знать перед началом
- Основная часть
- Создание DataFrame из словаря
- Создание из списка словарей
- Создание из списка списков
- Создание из CSV-файла
- Создаём пример CSV-файла
- Чтение CSV
- Параметры read_csv()
- Другой разделитель (не запятая)
- Указание кодировки
- Пропуск строк
- Выбор колонок
- Указание индекса
- Чтение Excel-файлов
- Установка openpyxl
- Чтение Excel
- Параметры read_excel()
- Чтение из буфера обмена (clipboard)
- Практический пример: загрузка данных о продажах
- Чтение из JSON
- Задачи для закрепления
- Нюансы и подводные камни
- Кодировка файлов
- Разделители в CSV
- Пути к файлам
- Размер файлов
- Частые ошибки и как их избежать
- Ошибка 1: Файл не найден
- Ошибка 2: Неправильный разделитель
- Ошибка 3: Ошибка кодировки
- Шпаргалка
- Заключение
- КВИЗ
- Что дальше?
Что нужно знать перед началом
Для этого урока тебе понадобится:
- Установленный Pandas (
pip install pandas) - Базовое понимание DataFrame
- Файлы для практики (создадим сами)
Совет: Установи также
openpyxlдля работы с Excel:pip install openpyxl.
Основная часть
Создание DataFrame из словаря
Самый простой способ — передать словарь в pd.DataFrame():
import pandas as pd
# Словарь, где ключи — названия колонок, значения — списки
data = {
'Имя': ['Анна', 'Иван', 'Мария', 'Пётр'],
'Возраст': [25, 30, 22, 35],
'Город': ['Москва', 'СПб', 'Казань', 'Новосибирск']
}
df = pd.DataFrame(data)
print(df)Результат:
Имя Возраст Город
0 Анна 25 Москва
1 Иван 30 СПб
2 Мария 22 Казань
3 Пётр 35 НовосибирскСовет: Все списки в словаре должны быть одной длины, иначе получишь ошибку.
Создание из списка словарей
Каждый словарь — одна строка:
data = [
{'Имя': 'Анна', 'Возраст': 25, 'Город': 'Москва'},
{'Имя': 'Иван', 'Возраст': 30, 'Город': 'СПб'},
{'Имя': 'Мария', 'Возраст': 22, 'Город': 'Казань'}
]
df = pd.DataFrame(data)
print(df)Совет: Если в каком-то словаре нет ключа, Pandas поставит
NaN(пропуск).
Создание из списка списков
data = [
['Анна', 25, 'Москва'],
['Иван', 30, 'СПб'],
['Мария', 22, 'Казань']
]
# Указываем названия колонок отдельно
df = pd.DataFrame(data, columns=['Имя', 'Возраст', 'Город'])
print(df)Создание из CSV-файла
CSV (Comma-Separated Values) — самый популярный формат для хранения таблиц.
Создаём пример CSV-файла
Создай файл users.csv со следующим содержимым:
Имя,Возраст,Город
Анна,25,Москва
Иван,30,СПб
Мария,22,Казань
Пётр,35,НовосибирскЧтение CSV
df = pd.read_csv('users.csv')
print(df)Совет: Если файл в другой папке, укажи полный или относительный путь:
'data/users.csv'.
Параметры read_csv()
Другой разделитель (не запятая)
# Файл с точкой с запятой (европейский формат)
df = pd.read_csv('data.csv', sep=';')
# Файл с табуляцией
df = pd.read_csv('data.tsv', sep='\t')Указание кодировки
# Для русских текстов
df = pd.read_csv('users.csv', encoding='utf-8')
# Если файл в Windows-1251
df = pd.read_csv('users.csv', encoding='cp1251')Пропуск строк
# Пропустить первые 2 строки
df = pd.read_csv('users.csv', skiprows=2)
# Пропустить строки с 3 по 5
df = pd.read_csv('users.csv', skiprows=range(2, 5))
# Прочитать только N строк
df = pd.read_csv('users.csv', nrows=3)Выбор колонок
# Прочитать только колонки 'Имя' и 'Возраст'
df = pd.read_csv('users.csv', usecols=['Имя', 'Возраст'])Указание индекса
# Использовать колонку 'Имя' как индекс
df = pd.read_csv('users.csv', index_col='Имя')Совет:
index_colполезен, когда у тебя есть уникальный идентификатор.
Чтение Excel-файлов
Установка openpyxl
pip install openpyxlЧтение Excel
Создай файл users.xlsx с данными и прочитай его:
# Чтение первого листа
df = pd.read_excel('users.xlsx')
print(df)
# Чтение конкретного листа
df = pd.read_excel('users.xlsx', sheet_name='Лист2')
# Чтение всех листов в словарь
sheets = pd.read_excel('users.xlsx', sheet_name=None)
for name, df in sheets.items():
print(f"Лист: {name}")
print(df.head())Параметры read_excel()
# Пропустить строки
df = pd.read_excel('users.xlsx', skiprows=2)
# Прочитать только колонки A и C
df = pd.read_excel('users.xlsx', usecols='A,C')
# Прочитать колонки по именам
df = pd.read_excel('users.xlsx', usecols=['Имя', 'Город'])Совет: Excel — удобный формат для обмена с коллегами, но для больших объёмов лучше использовать CSV.
Чтение из буфера обмена (clipboard)
Быстрый способ вставить таблицу из Excel или Google Sheets:
# Скопируй таблицу в буфер (Ctrl+C), затем:
df = pd.read_clipboard()
print(df)Совет: Этот метод работает только на компьютерах с графическим интерфейсом.
Практический пример: загрузка данных о продажах
import pandas as pd
# 1. Создаём данные в виде словаря
sales_data = {
'Дата': ['2024-01-01', '2024-01-02', '2024-01-03'],
'Товар': ['Ноутбук', 'Телефон', 'Планшет'],
'Продажи': [5, 12, 8],
'Цена': [50000, 30000, 15000]
}
df = pd.DataFrame(sales_data)
print("Из словаря:")
print(df)
# 2. Сохраняем в CSV
df.to_csv('sales.csv', index=False)
# 3. Читаем обратно
df_from_csv = pd.read_csv('sales.csv')
print("\nИз CSV:")
print(df_from_csv)
# 4. Сохраняем в Excel
df.to_excel('sales.xlsx', index=False)
# 5. Читаем обратно
df_from_excel = pd.read_excel('sales.xlsx')
print("\nИз Excel:")
print(df_from_excel)Чтение из JSON
import json
# JSON-строка
json_data = '''
[
{"Имя": "Анна", "Возраст": 25, "Город": "Москва"},
{"Имя": "Иван", "Возраст": 30, "Город": "СПб"}
]
'''
# Чтение из строки
df = pd.read_json(json_data)
print(df)
# Чтение из файла
# df = pd.read_json('data.json')Задачи для закрепления
Задача 1. Создай DataFrame из словаря с данными о студентах: Имя, Оценка, Предмет.
Задача 2. Прочитай CSV-файл с разделителем ; и кодировкой cp1251.
Задача 3. Прочитай Excel-файл, пропустив первые 3 строки.
Задача 4. Сохрани DataFrame в CSV без индекса.
Задача 5. Прочитай только колонки Имя и Возраст из CSV-файла.
Ответы:
Задача 1.
import pandas as pd
students = {
'Имя': ['Анна', 'Иван', 'Мария'],
'Оценка': [4.5, 3.8, 4.2],
'Предмет': ['Математика', 'Физика', 'Информатика']
}
df = pd.DataFrame(students)
print(df)Задача 2.
df = pd.read_csv('data.csv', sep=';', encoding='cp1251')
print(df)Задача 3.
df = pd.read_excel('data.xlsx', skiprows=3)
print(df)Задача 4.
df.to_csv('output.csv', index=False)Задача 5.
df = pd.read_csv('users.csv', usecols=['Имя', 'Возраст'])
print(df)Нюансы и подводные камни
Кодировка файлов
Самая частая проблема — неправильная кодировка. Для русского текста используй encoding='utf-8'.
Разделители в CSV
В русской локали Excel часто использует ; вместо ,. Всегда проверяй разделитель.
Пути к файлам
Используй сырые строки для Windows-путей:
# Плохо (может не работать)
df = pd.read_csv('C:\Users\data.csv')
# Хорошо
df = pd.read_csv(r'C:\Users\data.csv')Размер файлов
Если файл не помещается в память, читай по частям:
# Чтение по 10000 строк за раз
for chunk in pd.read_csv('big_file.csv', chunksize=10000):
process(chunk)Частые ошибки и как их избежать
Ошибка 1: Файл не найден
# ❌ FileNotFoundError
df = pd.read_csv('non_existent.csv')
# ✅ Проверь путь
import os
if os.path.exists('data.csv'):
df = pd.read_csv('data.csv')Ошибка 2: Неправильный разделитель
# ❌ Данные склеились в одну колонку
df = pd.read_csv('data.csv', sep=',')
# ✅ Проверь файл, возможно нужно sep=';'
df = pd.read_csv('data.csv', sep=';')Ошибка 3: Ошибка кодировки
# ❌ UnicodeDecodeError
df = pd.read_csv('data.csv')
# ✅ Укажи кодировку
df = pd.read_csv('data.csv', encoding='utf-8')Шпаргалка
| Источник | Как создать |
|---|---|
| Из словаря | pd.DataFrame(data) |
| Из списка словарей | pd.DataFrame(data) |
| Из CSV | pd.read_csv('file.csv') |
| Из Excel | pd.read_excel('file.xlsx') |
| Из JSON | pd.read_json('file.json') |
| Из буфера обмена | pd.read_clipboard() |
| Сохранить в CSV | df.to_csv('file.csv', index=False) |
| Сохранить в Excel | df.to_excel('file.xlsx', index=False) |
Заключение
Сегодня мы узнали:
- Как создать DataFrame из словаря, списка словарей и списка списков
- Как читать CSV-файлы с разными разделителями и кодировками
- Как читать Excel-файлы и выбирать листы
- Полезные параметры:
skiprows,usecols,index_col - Как сохранять DataFrame в CSV и Excel







![Выбор колонок и строк: [] vs loc vs iloc](https://imi-ds.ru/wp-content/uploads/2026/08/vybor-kolonok-i-strok-vs-loc-vs-iloc-335x220.webp)
