Как создать датафрейм python

Как создать датафрейм python

Работа с табличными данными в Python начинается с библиотеки pandas. Основная структура – DataFrame, которая позволяет эффективно хранить, обрабатывать и анализировать данные. Она представляет собой двумерную таблицу с метками по строкам и столбцам, поддерживающую различные типы данных, включая строки, числа и даты.

Создание датафрейма возможно из списков, словарей, массивов NumPy, а также из внешних источников – CSV, Excel, SQL. Например, словарь с ключами в виде названий столбцов и списками значений создаст датафрейм с автоматически сгенерированными индексами. Это удобно при сборке данных вручную или из JSON-ответов API.

При создании датафрейма важно сразу задать правильную структуру: например, использовать параметр index для задания пользовательских индексов, а dtypes – для контроля типов данных. Это уменьшит необходимость последующей переработки и ускорит обработку.

Если источником данных служит файл, то pandas.read_csv() и pandas.read_excel() позволяют быстро сформировать датафрейм. Обязательно указывайте кодировку (encoding), разделитель (sep) и строки с заголовками (header), чтобы избежать ошибок чтения и неверной интерпретации данных.

При создании датафрейма из массивов важно, чтобы размеры совпадали: списки внутри должны быть одинаковой длины, иначе возникнет исключение. Аналогично, при использовании NumPy-матриц необходимо следить за соответствием размерности и нужными типами данных (dtype).

Создание датафрейма из словаря списков

Создание датафрейма из словаря списков

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

Пример:

import pandas as pd
данные = {
"Имя": ["Анна", "Борис", "Виктор"],
"Возраст": [28, 34, 25],
"Город": ["Москва", "Казань", "Томск"]
}
df = pd.DataFrame(данные)
print(df)

Результат:

     Имя  Возраст  Город
0   Анна       28  Москва
1  Борис       34  Казань
2 Виктор       25   Томск

Важно: все списки должны иметь одинаковую длину. Несовпадение вызывает ValueError. Для контроля структуры полезно использовать len() на всех значениях словаря перед созданием датафрейма.

Если необходимо задать собственные индексы:

df = pd.DataFrame(данные, index=["a", "b", "c"])

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

Создание датафрейма из списка словарей

Создание датафрейма из списка словарей

Список словарей – удобная структура для формирования датафрейма, где каждый словарь соответствует строке, а ключи – именам столбцов. Для преобразования используется функция pd.DataFrame() из библиотеки pandas.

Пример:

import pandas as pd
данные = [
{"имя": "Анна", "возраст": 28, "город": "Москва"},
{"имя": "Иван", "возраст": 34, "город": "Санкт-Петербург"},
{"имя": "Ольга", "возраст": 25, "город": "Казань"}
]
df = pd.DataFrame(данные)
print(df)

Если словари содержат разные ключи, отсутствующие значения автоматически заполняются NaN:

данные = [
{"имя": "Алексей", "возраст": 30},
{"имя": "Мария", "город": "Новосибирск"},
{"имя": "Юрий", "возраст": 45, "город": "Екатеринбург"}
]
df = pd.DataFrame(данные)
print(df)

Рекомендуется обеспечивать единообразие ключей во всех словарях, чтобы избежать пропущенных данных. При необходимости можно задать порядок столбцов с помощью параметра columns:

df = pd.DataFrame(данные, columns=["имя", "город", "возраст"])

Создание датафрейма из CSV-файла

Для чтения CSV-файлов в pandas используется функция read_csv(). Укажите путь к файлу как строку, используя прямой или абсолютный путь. Пример: df = pd.read_csv('данные/продажи.csv').

Если в файле используется другая кодировка (например, Windows-1251 для русскоязычных данных), добавьте параметр encoding: df = pd.read_csv('файл.csv', encoding='cp1251').

Файлы с разделителями, отличными от запятой, требуют указания sep. Например, для табуляции: sep='\t'.

Если первый ряд не содержит заголовков, установите header=None, чтобы pandas не считал первую строку именами столбцов. В этом случае имена можно задать через параметр names: pd.read_csv('файл.csv', header=None, names=['A', 'B']).

Для выборочной загрузки столбцов используйте usecols. Пример: pd.read_csv('файл.csv', usecols=['id', 'сумма']).

Чтобы указать типы данных и сократить объем памяти, используйте параметр dtype: pd.read_csv('файл.csv', dtype={'id': 'int32', 'сумма': 'float32'}).

При работе с датами применяйте parse_dates для автоматического преобразования: pd.read_csv('файл.csv', parse_dates=['дата']).

Создание датафрейма из NumPy массива

Создание датафрейма из NumPy массива

Для преобразования NumPy массива в DataFrame используется функция pd.DataFrame(). Обязательный аргумент – сам массив. Дополнительно можно задать названия столбцов через параметр columns.

Пример: имеется массив np_array = np.array([[1, 2], [3, 4], [5, 6]]). Чтобы создать DataFrame с колонками 'A' и 'B', вызов будет следующим:

import numpy as np
import pandas as pd
np_array = np.array([[1, 2], [3, 4], [5, 6]])
df = pd.DataFrame(np_array, columns=['A', 'B'])

Тип данных в DataFrame наследуется от NumPy массива. Если массив содержит только числа с плавающей точкой, все значения в DataFrame будут float64. Для явного задания типов используется astype() после создания:

df = df.astype({'A': 'int32', 'B': 'int32'})

Для многомерных массивов размерности выше 2 перед созданием DataFrame необходимо их привести к двумерной форме с помощью reshape() или flatten(), в зависимости от структуры данных:

np_array = np.arange(12).reshape(4, 3)
df = pd.DataFrame(np_array, columns=['X', 'Y', 'Z'])

Если массив не содержит именованных осей, имена строк (индексы) будут присвоены автоматически. Для задания собственных индексов используется параметр index:

df = pd.DataFrame(np_array, columns=['X', 'Y', 'Z'], index=['a', 'b', 'c', 'd'])

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

Задание названий столбцов при создании датафрейма

Названия столбцов в Pandas DataFrame задаются при инициализации с помощью параметра columns. Это особенно важно, если данные передаются в виде списка списков или массива NumPy, где имена столбцов по умолчанию будут заданы в виде чисел.

Пример: создание датафрейма из вложенного списка с явным указанием заголовков:

import pandas as pd
data = [[1, 'Алексей'], [2, 'Мария']]
df = pd.DataFrame(data, columns=['ID', 'Имя'])

Если исходные данные представлены словарём, ключи автоматически становятся названиями столбцов. Однако порядок следования можно задать вручную, указав список в параметре columns:

data = {'Имя': ['Иван', 'Ольга'], 'Возраст': [28, 34]}
df = pd.DataFrame(data, columns=['Возраст', 'Имя'])

При создании датафрейма из массива NumPy необходимо обязательно задать названия столбцов, иначе они будут иметь числовые индексы:

import numpy as np
array = np.array([[100, 200], [300, 400]])
df = pd.DataFrame(array, columns=['Счет1', 'Счет2'])

Имена столбцов должны быть уникальными. Повторяющиеся названия могут привести к неоднозначным операциям фильтрации и агрегации. Проверить их уникальность можно с помощью выражения df.columns.is_unique.

Для переименования столбцов после создания используйте метод df.rename() или прямое присваивание df.columns = [...names...].

Создание пустого датафрейма и добавление данных

Для создания пустого датафрейма в Python используется библиотека pandas. Пустой датафрейм можно создать, передав в конструктор пустой список или словарь.

Пример создания пустого датафрейма:

import pandas as pd
df = pd.DataFrame()

После выполнения этого кода df будет представлять собой пустую таблицу без строк и столбцов.

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

Добавление данных через список

Добавление данных через список

Один из способов — передать данные в виде списка, где каждый элемент списка будет представлять собой строку датафрейма. Для этого можно использовать аргумент columns, чтобы задать имена столбцов.

data = [[1, 'John', 28], [2, 'Alice', 24]]
df = pd.DataFrame(data, columns=['ID', 'Name', 'Age'])

Теперь датафрейм df будет содержать две строки с данными о пользователях и соответствующие столбцы:

  • ID
  • Name
  • Age

Добавление данных через словарь

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

data = {'ID': [1, 2], 'Name': ['John', 'Alice'], 'Age': [28, 24]}
df = pd.DataFrame(data)

Этот подход также создаст датафрейм с теми же столбцами, что и в предыдущем примере.

Добавление строк после создания датафрейма

Добавление строк после создания датафрейма

Если датафрейм уже существует, добавление строк можно выполнить с помощью метода loc или append.

df.loc[len(df)] = [3, 'Bob', 22]

Этот код добавляет новую строку в конец датафрейма с индексом 3 и значениями для каждого столбца. Можно добавить несколько строк одновременно:

new_data = pd.DataFrame([[4, 'Charlie', 30]], columns=['ID', 'Name', 'Age'])
df = df.append(new_data, ignore_index=True)

Обратите внимание, что метод append возвращает новый датафрейм, поэтому присваивание результата в исходную переменную обязательно.

Создание и добавление столбцов

Создание и добавление столбцов

Для добавления столбца к существующему датафрейму можно присвоить значения столбца через его имя:

df['Salary'] = [50000, 60000, 55000, 65000]

Также можно создать новый столбец с помощью функции assign:

df = df.assign(Salary=[50000, 60000, 55000, 65000])

Метод assign возвращает новый датафрейм, а старый остается неизменным.

Создание датафрейма с заданным типом данных столбцов

Создание датафрейма с заданным типом данных столбцов

При создании датафрейма в библиотеке pandas важно контролировать типы данных столбцов для эффективного хранения и обработки информации. Это позволяет избежать ошибок при анализе и повысить производительность. Для задания типа данных используется параметр dtypes при создании датафрейма или метод astype().

В примере ниже создается датафрейм с явным указанием типов данных для столбцов:

import pandas as pd
data = {
'age': [23, 45, 34, 50],
'salary': [50000, 70000, 60000, 65000],
'is_manager': [True, False, False, True]
}
df = pd.DataFrame(data)
# Задание типов данных для столбцов
df = df.astype({
'age': 'int32',
'salary': 'float64',
'is_manager': 'bool'
})
print(df.dtypes)

Здесь столбец age будет иметь тип int32, salary – тип float64, а is_manager – тип bool. Это важно, чтобы предотвратить ошибки при математических вычислениях или фильтрации данных по булевым значениям.

Для явного указания типа данных можно также использовать параметр dtype при создании датафрейма:

df = pd.DataFrame(data, dtype='float64')
print(df.dtypes)

Метод astype() также полезен, когда нужно преобразовать уже существующие столбцы. Например, если столбец с числовыми значениями был неправильно интерпретирован как строка, можно привести его к нужному типу:

df['salary'] = df['salary'].astype('int32')
print(df['salary'].dtypes)

Типы данных можно комбинировать. Например, для больших числовых значений можно использовать int64 или float64, а для категориальных данных – category, что сэкономит память и ускорит анализ.

Следует помнить, что неправильный выбор типа данных может повлиять на точность вычислений и время обработки данных, особенно при работе с большими объемами информации.

Вопрос-ответ:

Что такое датафрейм в Python и зачем он нужен?

Датафрейм (DataFrame) в Python — это структура данных, которая представляет собой таблицу с данными. Он используется для хранения и обработки данных в виде строк и столбцов, что очень удобно при работе с большими объемами информации. Он является частью библиотеки Pandas, которая предоставляет мощные средства для анализа и манипуляции данными. В отличие от обычных списков или словарей, датафрейм позволяет легко работать с таблицами, применять фильтрацию, сортировку и различные статистические операции.

Ссылка на основную публикацию