Добавление данных в пустой DataFrame в Pandas: почему и как?
Пройдите тест, узнайте какой профессии подходите
Быстрый ответ
Для добавления данных в пустой DataFrame, можно воспользоваться методом .append()
при работе с небольшими объемами данных или же выбрать pd.concat()
, подходящий для обработки больших данных.
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)
Переключение с append на concat
Если выполнение метода .append()
начинает тормозить, нужно переключиться на pd.concat()
. Этот метод предотвращает частое переаннулирование памяти при добавлении новых строк, что улучшает процесс добавления данных.
# Преобразовываем список строк в DataFrame
rows_to_append_df = pd.DataFrame(rows_to_append)
# Объединяем DataFrame'ы
df = pd.concat([df, rows_to_append_df], ignore_index=True)
Убедитесь, что данные правильно подготовлены
Перед добавлением новых данных нужно убедиться, что они имеют подходящий формат. В противном случае вероятность ошибок увеличивается.
# Если у вас есть 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 напоминает незаполненную книжную полку (📚) — символ одиночества, особенно тогда, когда можно легко его преобразить!
Книжная полка (📚): []
Добавление строк аналогично размещению новых книг. Как приятно обновлять коллекцию (в случае с данными — заполнять новыми строками)!
Новая Книга (📖): "Строка Данных"
bookshelf.append('📖'); # 🚀 Теперь в нашем общем секрете уже нет никакой тайны- полка больше не пуста!
Так теперь выглядит ваша книжная полка:
После: [📖]
# Каждый элемент '📖' означает добавленную строку данных!
Когда append не справляется
Используя метод .append() для непосредственного добавления словарей, не забывайте устанавливать ignore_index=True
, чтобы избежать проблем с индексацией данных.
# Добавляем без 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()
предоставляет новые возможности, позволяя объединять данные более эффективно, не устанавливая ограничений на ось и доступно управлять именами столбцов.
# Дополнительные данные для объединения
another_df = pd.DataFrame([{'column1': 'value1e', 'column2': 'value2e'}])
df = pd.concat([df, another_df], ignore_index=True)
Завершение
Преимущества метода append
Метод .append()
хорош для быстрых операций и небольших объемов данных, но может оказаться не подходящим при работе с большими данными из-за замедления процесса.
Достоинства concat
pd.concat()
идеально подходит для работы с разнородными данными и большим объемом информации, благодаря чему становится незаменимым инструментом для анализа данных.
Важность соответствия форматов данных
Прежде чем добавлять данные, всегда проверяйте их форматы, чтобы избежать нежелательных сдвигов столбцов и ошибок преобразования типов с использованием df.dtypes
.
Полезные материалы
- Merge, join, concatenate and compare — pandas 2.2.0 documentation — руководство по обработке данных в pandas.
- pandas.concat — pandas 2.2.0 documentation — документация по методу concat для улучшения производительности.
- SettingwithCopyWarning: How to Fix This Warning in Pandas – Dataquest — рекомендации по исправлению предупреждения SettingWithCopyWarning.
- Python Pandas Tutorial: A Complete Introduction for Beginners – LearnDataSci — доступный туториал по pandas для начинающих.
- Medium — лучшие практики по работе с DataFrame.