Создание dataframe из нескольких списков в Pandas

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

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

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

Если вам необходимо скомпоновать несколько списков в DataFrame средствами Python, вы можете обратиться к конструктору pd.DataFrame(), передав ему словарь для создания столбцов, или использовать функцию zip(), которая распределит данные по строкам. Пример ниже иллюстрирует оба подхода:

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

list1, list2, list3 = [1, 2], [3, 4], [5, 6]

df_cols = pd.DataFrame({'A': list1, 'B': list2, 'C': list3})

list4, list5, list6 = [7, 8, 9], [10, 11, 12], [13, 14, 15]

df_rows = pd.DataFrame(list(zip(list4, list5, list6)), columns=['A', 'B', 'C'])
Кинга Идем в IT: пошаговый план для смены профессии

Увеличение производительности с помощью numpy

Применение numpy существенно улучшает производительность обработки больших объемов данных. Комбинация np.column_stack() с numpy позволяет обработать данные в два раза быстрее, чем с использованием zip().

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

list1, list2, list3 = range(100), range(100, 200), range(200, 300)

df_fast = pd.DataFrame(np.column_stack((list1, list2, list3)), columns=['A', 'B', 'C'])

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

Работа со списками разной длины

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

Python
Скопировать код
list1, list2, list3 = range(5), range(10), range(15)

df_unequal = pd.concat([pd.Series(lst) for lst in [list1, list2, list3]], axis=1)
df_unequal.columns = ['A', 'B', 'C']

Форма имеет значение: как выбрать названия столбцов и индексы

Выбранные вами названия столбцов могут существенно облегчить вам работу с данными.

Python
Скопировать код
df_with_names = pd.DataFrame(np.column_stack((list1, list2, list3)), 
                             columns=['Высокий', 'Средний', 'Низкий'])

Правильная индексация играет ключевую роль, особенно при работе с временными рядами, уникальными идентификаторами или категориями.

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

Подготовка данных для DataFrame напоминает приготовление ингредиентов для теста:

Markdown
Скопировать код
Ингредиенты (🥧): [Яблоки, Черника, Вишни]
Контейнеры (📦): [Список 1, Список 2, Список 3]

Аналогия работает и при создании и подаче готовых изделий:

Markdown
Скопировать код
🥧 Поднос 1 (🍏): | Список 1 | Яблоко       |
🥧 Поднос 2 (🫐): | Список 2 | Черника      |
🥧 Поднос 3 (🍒): | Список 3 | Вишня        |

В итоге получается DataFrame, который мы можем активно использовать для анализа данных.

Нюансы работы с DataFrame

Вы можете использовать генераторы списков и мультииндексы для создания больших и сложных DataFrame:

Python
Скопировать код
lists_dynamic = [[i for i in range(j, j+100)] for j in range(0, 300, 100)]

index = pd.MultiIndex.from_tuples([(i, j) for i in 'ABC' for j in range(100)])

df_multi_index = pd.DataFrame({'Статус': np.hstack(lists_dynamic)}, index=index)

Завершение

Просмотрите размер созданного DataFrame и сверьте его с желаемым, чтобы удостовериться в его правильности:

Python
Скопировать код
assert df_multi_index.shape == (300, 1)

Следующий шаг — это проверка типов данных и поиск возможных пропущенных значений, чтобы данные были полностью готовы к использованию.

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

  1. pandas.DataFrame — документация pandas 2.2.0 — полный справочник по возможностям DataFrame в библиотеке Pandas.
  2. 10 минут с pandas — документация pandas 2.2.0 — пошаговое руководство по основам библиотеки Pandas.
  3. Доступ к элементам DataFrame в Pandas — полезные советы по работе со структурами DataFrame.
  4. Знакомство с объектами Pandas | Руководство по науке о данных на Python — обзор основ работы c Pandas для обработки данных.
  5. DataFrame в Pandas: освоенное работа с данными – Real Python — глубокое погружение в функциональность DataFrame в Pandas.
  6. Medium — изучение различных методов преобразования данных в DataFrame.