Создание пустого DataFrame Pandas и добавление данных

В этой статье вы узнаете, как создать пустой DataFrame в Pandas и как добавлять в него данные. В частности, вы научитесь создавать DataFrame, создавать его с заголовками столбцов, добавлять строки по одной и добавлять строки с помощью цикла.

Оглавление

Создание пустого DataFrame Pandas

Для начала импортируем библиотеку Pandas под псевдонимом pd:

import pandas as pd

Создание полностью пустого DataFrame Pandas очень простое. Мы просто создаём объект DataFrame, не передавая в него никаких данных:

df = pd.DataFrame()

print(df)

Из вывода видно, что DataFrame пустой. Однако мы также можем проверить, является ли он пустым, с помощью атрибута Pandas .empty, который возвращает булево значение, указывающее, пуст ли DataFrame:Из вывода видно, что DataFrame пустой.

>> print(df.empty)
True

Создание пустого DataFrame Pandas с заголовками столбцов

Могут возникнуть ситуации, когда вы уже знаете, какие столбцы хотите иметь в DataFrame, но пока не располагаете данными для них (подробнее об этом — в разделе о добавлении данных в пустой DataFrame ниже).

Для этого мы можем использовать параметр columns=, передав в него список названий столбцов при создании объекта DataFrame. Давайте создадим DataFrame со следующими столбцами: Name (Имя), Age (Возраст), Birth City (Город рождения) и Gender (Пол):

df = pd.DataFrame(columns=['Name', 'Age', 'Birth City', 'Gender'])

print(df)

This prints out the following, indicating that we now have an empty dataframe but with columns attached to it:

Empty DataFrame
Columns: [Name, Age, Birth City, Gender]
Index: []

Создание пустого DataFrame Pandas с заголовками столбцов и индексами

Аналогично описанной выше ситуации, могут быть случаи, когда вы заранее знаете не только названия столбцов, но и значения индексов DataFrame, однако данные пока отсутствуют.

Мы можем создать такой DataFrame, указав как параметр columns=, так и параметр index=. Давайте создадим тот же DataFrame, что и выше, но используем столбец Name в качестве индекса и укажем несколько примерных индексов:

df = pd.DataFrame(
    columns=['Age', 'Birth City', 'Gender'],
    index=['Jane', 'Melissa', 'John', 'Matt'])

print(df)

Теперь, технически, это уже не совсем пустой DataFrame. Это просто DataFrame без данных. Мы можем проверить это с помощью атрибута .empty:

print(df.empty)

Это возвращает False.

Добавление данных в пустой DataFrame

Теперь, когда у нас есть DataFrame с заголовками столбцов и индексами, мы можем использовать .loc для добавления данных. Если вы хотите узнать больше о методе .loc, ознакомьтесь с моим руководством по этой ссылке.

Давайте добавим данные в запись с индексом Jane:

df.loc['Jane',:] = [23, 'London', 'F']

print(df)

Добавление данных в пустой DataFrame Pandas

Аналогично добавлению строк по одной с помощью метода .loc, мы также можем использовать метод .append() для добавления строк.

Метод .append() работает следующим образом: он добавляет один DataFrame к другому.

Давайте добавим ту же строку, что и выше, с помощью метода append:

df2 = pd.DataFrame(
    [['Jane', 23, 'London', 'F']], 
    columns=['Name', 'Age', 'Birth City', 'Gender']
    )

df = df.append(df2)

print(df)

Чтобы ускорить процесс, мы также можем использовать цикл for для добавления данных. Это рассмотрено ниже.

Добавление данных в пустой DataFrame Pandas с помощью цикла

Могут возникнуть ситуации, когда необходимо добавить несколько наборов данных в DataFrame. Это можно упростить с помощью цикла for, например, для чтения нескольких файлов и их объединения. Если вы хотите узнать больше о циклах for в Python, ознакомьтесь с моей статьёй по этой ссылке.

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

Мы используем аргумент ignore_index=True, чтобы убедиться, что создаются новые индексы. В противном случае при объединении нескольких DataFrame индексы могут дублироваться.

df = pd.DataFrame(
    columns=['Name', 'Age', 'Birth City', 'Gender'])

people = [
    ['Jane', 23, 'London', 'F'],
    ['Melissa', 45, 'Paris', 'F'],
    ['John', 35, 'Toronto', 'M']
]

for person in people:
    temporary_df = pd.DataFrame([person], columns=['Name', 'Age', 'Birth City', 'Gender'])
    df = df.append(temporary_df, ignore_index=True)

print(df)

Заключение

В этой статье вы узнали, как создать пустой DataFrame, как с указанием столбцов, так и без них. После этого вы научились добавлять данные в пустой DataFrame — как единожды, так и с использованием цикла for.

Чтобы узнать больше о классе pandas.DataFrame, ознакомьтесь с официальной документацией по этой ссылке. Для получения дополнительной информации о методе .append() см. официальную документацию по этой ссылке.

Last updated