Создание DataFrame из CSV, Excel, словаря

Создание DataFrame из CSV, Excel, словаря Pandas

Привет! В прошлой статье мы познакомились с DataFrame — главной структурой данных в Pandas. Но данные редко лежат прямо в коде. Чаще всего они хранятся в файлах: CSV, Excel, JSON. Или приходят из API в виде словарей. Как превратить всё это в DataFrame?

В этой статье мы разберём:

  • Создание DataFrame из словаря
  • Чтение CSV-файлов
  • Чтение Excel-файлов
  • Чтение JSON и других форматов
  • Полезные параметры при чтении

Что нужно знать перед началом

Для этого урока тебе понадобится:

  • Установленный 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)
Из CSVpd.read_csv('file.csv')
Из Excelpd.read_excel('file.xlsx')
Из JSONpd.read_json('file.json')
Из буфера обменаpd.read_clipboard()
Сохранить в CSVdf.to_csv('file.csv', index=False)
Сохранить в Exceldf.to_excel('file.xlsx', index=False)

Заключение

Сегодня мы узнали:

  • Как создать DataFrame из словаря, списка словарей и списка списков
  • Как читать CSV-файлы с разными разделителями и кодировками
  • Как читать Excel-файлы и выбирать листы
  • Полезные параметры: skiprowsusecolsindex_col
  • Как сохранять DataFrame в CSV и Excel

КВИЗ

Что дальше?

Оцените статью
IMI-DS - PYTHON LERNEN
Содержание
Оглавление ×