Добавление данных в пустой DataFrame в Pandas: почему и как?

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

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

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

Для добавления данных в пустой DataFrame, можно воспользоваться методом .append() при работе с небольшими объемами данных или же выбрать pd.concat(), подходящий для обработки больших данных.

Python
Скопировать код
import pandas as pd

# Создаем пустой DataFrame
df = pd.DataFrame()

# Добавляем строку посредством словаря (параметр ignore_index=True нужен для сохранения порядка)
df = df.append({'column1': 'value1', 'column2': 'value2'}, ignore_index=True)

# Добавляем несколько строк с помощью concat (как на настоящем data-пати)
rows_to_append = [{'column1': 'value1a', 'column2': 'value2a'}, {'column1': 'value1b', 'column2': 'value2b'}]
df = pd.concat([df, pd.DataFrame(rows_to_append)], ignore_index=True)
Кинга Идем в IT: пошаговый план для смены профессии

Переключение с append на concat

Если выполнение метода .append() начинает тормозить, нужно переключиться на pd.concat(). Этот метод предотвращает частое переаннулирование памяти при добавлении новых строк, что улучшает процесс добавления данных.

Python
Скопировать код
# Преобразовываем список строк в DataFrame
rows_to_append_df = pd.DataFrame(rows_to_append)

# Объединяем DataFrame'ы
df = pd.concat([df, rows_to_append_df], ignore_index=True)

Убедитесь, что данные правильно подготовлены

Перед добавлением новых данных нужно убедиться, что они имеют подходящий формат. В противном случае вероятность ошибок увеличивается.

Python
Скопировать код
# Если у вас есть Series, преобразуйте его в DataFrame перед добавлением
series_to_append = pd.Series(['value1c', 'value2c'], index=['column1', 'column2'])
df = pd.concat([df, series_to_append.to_frame().T], ignore_index=True)

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

Пустой DataFrame напоминает незаполненную книжную полку (📚) — символ одиночества, особенно тогда, когда можно легко его преобразить!

Markdown
Скопировать код
Книжная полка (📚): []

Добавление строк аналогично размещению новых книг. Как приятно обновлять коллекцию (в случае с данными — заполнять новыми строками)!

Markdown
Скопировать код
Новая Книга (📖): "Строка Данных"
Python
Скопировать код
bookshelf.append('📖');  # 🚀 Теперь в нашем общем секрете уже нет никакой тайны- полка больше не пуста!

Так теперь выглядит ваша книжная полка:

Markdown
Скопировать код
После: [📖]
# Каждый элемент '📖' означает добавленную строку данных!

Когда append не справляется

Используя метод .append() для непосредственного добавления словарей, не забывайте устанавливать ignore_index=True, чтобы избежать проблем с индексацией данных.

Python
Скопировать код
# Добавляем без ignore_index и рискуем столкнуться с проблемами
df = df.append([{'column1': 'value1d', 'column2': 'value2d'}])

# Правильное использование ignore_index
df = df.append([{'column1': 'value1d', 'column2': 'value2d'}], ignore_index=True)

Использование pd.concat для работы с большими данными

Метод pd.concat() предоставляет новые возможности, позволяя объединять данные более эффективно, не устанавливая ограничений на ось и доступно управлять именами столбцов.

Python
Скопировать код
# Дополнительные данные для объединения
another_df = pd.DataFrame([{'column1': 'value1e', 'column2': 'value2e'}])
df = pd.concat([df, another_df], ignore_index=True)

Завершение

Преимущества метода append

Метод .append() хорош для быстрых операций и небольших объемов данных, но может оказаться не подходящим при работе с большими данными из-за замедления процесса.

Достоинства concat

pd.concat() идеально подходит для работы с разнородными данными и большим объемом информации, благодаря чему становится незаменимым инструментом для анализа данных.

Важность соответствия форматов данных

Прежде чем добавлять данные, всегда проверяйте их форматы, чтобы избежать нежелательных сдвигов столбцов и ошибок преобразования типов с использованием df.dtypes.

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

  1. Merge, join, concatenate and compare — pandas 2.2.0 documentation — руководство по обработке данных в pandas.
  2. pandas.concat — pandas 2.2.0 documentation — документация по методу concat для улучшения производительности.
  3. SettingwithCopyWarning: How to Fix This Warning in Pandas – Dataquest — рекомендации по исправлению предупреждения SettingWithCopyWarning.
  4. Python Pandas Tutorial: A Complete Introduction for Beginners – LearnDataSci — доступный туториал по pandas для начинающих.
  5. Medium — лучшие практики по работе с DataFrame.