Как создать Pandas DataFrame [с примерами]

Опубликовано: 2022-12-08

Изучите основы работы с pandas DataFrames: базовая структура данных в pandas, мощная библиотека для работы с данными.

Если вы хотите начать анализ данных в Python, pandas — одна из первых библиотек, с которой вам следует научиться работать. От импорта данных из нескольких источников, таких как CSV-файлы и базы данных, до обработки отсутствующих данных и их анализа для получения информации — pandas позволяет вам делать все вышеперечисленное.

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

В этом руководстве вы изучите основы фреймов данных pandas и общие методы создания фреймов данных. Затем вы узнаете, как выбирать строки и столбцы из фрейма данных для извлечения подмножеств данных.

Для всего этого и многого другого, давайте начнем.

Установка и импорт панд

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

Если вы используете дистрибутив Python Anaconda, вы можете использовать conda для управления пакетами.

 conda install pandas

Вы также можете установить панд с помощью pip:

 pip install pandas

Библиотека pandas требует NumPy в качестве зависимости. Поэтому, если NumPy еще не установлен, он также будет установлен в процессе установки.

После установки pandas вы можете импортировать его в свою рабочую среду. Обычно панды импортируются под псевдонимом pd :

 import pandas as pd

Что такое DataFrame в Pandas?

Что такое DataFrame в пандах

Фундаментальной структурой данных в pandas является фрейм данных . Фрейм данных — это двумерный массив данных с помеченным индексом и именованными столбцами. Каждый столбец во фрейме данных, называемый серией pandas, имеет общий индекс.

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

pd-dataframe-ex

Имена учеников являются метками строк. И столбцы называются от «Неделя1» до «Неделя4». Обратите внимание, что все столбцы используют один и тот же набор меток строк, также называемый индексом .

Как создать фрейм данных Pandas

Существует несколько способов создания фрейма данных pandas. В этом уроке мы обсудим следующие методы:

  • Создание фрейма данных из массивов NumPy
  • Создание фрейма данных из словаря Python
  • Создание фрейма данных путем чтения файлов CSV

Из массивов NumPy

Давайте создадим фрейм данных из массива NumPy.

Давайте создадим массив данных формы (6,4), предполагая, что в любую неделю каждый студент тратит от 0 до 100 долларов. Функция randint() из random модуля NumPy возвращает массив случайных целых чисел в заданном интервале [low,high) .

 import numpy as np np.random.seed(42) data = np.random.randint(0,101,(6,4)) print(data)
 array([[51, 92, 14, 71], [60, 20, 82, 86], [74, 74, 87, 99], [23, 2, 21, 52], [ 1, 87, 29, 37], [ 1, 63, 59, 20]])

Чтобы создать фрейм данных pandas, вы можете использовать конструктор DataFrame и передать массив NumPy в качестве аргумента data , как показано ниже:

 students_df = pd.DataFrame(data=data)

Теперь мы можем вызвать встроенную функцию type() для проверки типа students_df . Мы видим, что это объект DataFrame .

 type(students_df) # pandas.core.frame.DataFrame
 print(students_df)
панды-dataframe-01

Мы видим, что по умолчанию у нас есть диапазон индексации, который идет от 0 до numRows — 1, а метки столбцов — 0, 1, 2, …, numCols -1. Однако это снижает читабельность. Это поможет добавить описательные имена столбцов и метки строк во фрейм данных.

Давайте создадим два списка: один для хранения имен учащихся, а другой для хранения меток столбцов.

 students = ['Amy','Bob','Chris','Dave','Evelyn','Fanny'] cols = ['Week1','Week2','Week3','Week4']

При вызове конструктора DataFrame вы можете установить index и columns для использования списков меток строк и меток столбцов соответственно.

 students_df = pd.DataFrame(data = data,index = students,columns = cols)

Теперь у нас есть students_df данных student_df с описательными метками строк и столбцов.

 print(students_df)
панды-dataframe-02

Чтобы получить базовую информацию о фрейме данных, такую ​​как отсутствующие значения и типы данных, вы можете вызвать метод info() для объекта фрейма данных.

 students_df.info()
изображение-114

Из словаря Python

Вы также можете создать фрейм данных pandas из словаря Python.

Здесь data_dict — это словарь, содержащий данные о студентах:

  • Имена студентов являются ключами.
  • Каждое значение представляет собой список того, сколько каждый учащийся тратит с первой по четвертую неделю.
 data_dict = {} students = ['Amy','Bob','Chris','Dave','Evelyn','Fanny'] for student,student_data in zip(students,data): data_dict[student] = student_data

Чтобы создать фрейм данных из словаря Python, используйте from_dict , как показано ниже. Первый аргумент соответствует словарю, содержащему данные ( data_dict ). По умолчанию ключи используются в качестве имен столбцов фрейма данных. Поскольку мы хотим установить ключи в качестве меток строк , установите orient= 'index' .

 students_df = pd.DataFrame.from_dict(data_dict,orient='index') print(students_df)
pandas-dataframe-из-дикт

Чтобы изменить имена столбцов на номер недели, мы устанавливаем столбцы в список cols :

 students_df = pd.DataFrame.from_dict(data_dict,orient='index',columns=cols) print(students_df)
панды-dataframe-03

Чтение файла CSV в кадр данных Pandas

Предположим, что данные о студентах доступны в виде CSV-файла. Вы можете использовать read_csv() для чтения данных из файла во фрейм данных pandas. pd.read_csv('file-path') — это общий синтаксис, где file-path — это путь к CSV-файлу. Мы можем установить параметр name в список names столбцов для использования.

 students_df = pd.read_csv('/content/students.csv',names=cols)

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

Выберите столбцы из Pandas DataFrame

Существует несколько встроенных методов, которые можно использовать для выбора строк и столбцов из фрейма данных. В этом руководстве будут рассмотрены наиболее распространенные способы выбора столбцов, строк, а также строк и столбцов из фрейма данных.

Выбор одного столбца

Чтобы выбрать один столбец, вы можете использовать df_name[col_name] , где col_name — это строка, обозначающая имя столбца.

Здесь мы выбираем только столбец «Неделя1».

 week1_df = students_df['Week1'] print(week1_df)
одноколонный

Выбор нескольких столбцов

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

 odd_weeks = students_df[['Week1','Week3']] print(odd_weeks)
несколько столбцов

В дополнение к этому методу вы также можете использовать iloc() и loc() для выбора столбцов. Мы напишем пример позже.

Выберите строки из Pandas DataFrame

4-2

Использование метода .iloc()

Чтобы выбрать строки с помощью iloc() , передайте индексы, соответствующие всем строкам, в виде списка.

В этом примере мы выбираем строки с нечетным индексом.

 odd_index_rows = students_df.iloc[[1,3,5]] print(odd_index_rows)
нечетные строки

Затем мы выбираем подмножество фрейма данных, содержащее строки с индексами от 0 до 2, конечная точка 3 по умолчанию исключена.

 slice1 = students_df.iloc[0:3] print(slice1)
выбор строк

Использование метода .loc()

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

 some_rows = students_df.loc[['Bob','Dave','Fanny']] print(some_rows)
несколько рядов

Если строки фрейма данных индексируются с использованием диапазона по умолчанию 0, 1, 2, вплоть до numRows -1, то использование iloc() и loc() эквивалентно.

Выберите строки и столбцы из Pandas DataFrame

До сих пор вы узнали, как выбирать строки или столбцы из фрейма данных pandas. Однако иногда вам может понадобиться выбрать подмножество как строк, так и столбцов. Итак, как вы это делаете? Вы можете использовать рассмотренные iloc() и loc() .

Например, в приведенном ниже фрагменте кода мы выбираем все строки и столбцы с индексами 2 и 3.

 subset_df1 = students_df.iloc[:,[2,3]] print(subset_df1)
подмножество фреймов данных

Использование start:stop создает срез от start до stop , но не включая ее. Поэтому, когда вы игнорируете как start , так и stop значения, когда вы игнорируете начальное и конечное значения, срез начинается с начала и продолжается до конца фрейма данных, выбирая все строки.

При использовании метода loc() вам необходимо передать метки строк и столбцов, которые вы хотите выбрать, как показано ниже:

 subset_df2 = students_df.loc[['Amy','Evelyn'],['Week1','Week3']] print(subset_df2)
df-подмножество

Здесь subset_df2 содержит записи Эми и Эвелин за неделю 1 и неделю 3.

Заключение

Вот краткий обзор того, что вы узнали в этом уроке:

  • После установки pandas вы можете импортировать его под псевдонимом pd . Чтобы создать объект фрейма данных pandas, вы можете использовать pd.DataFrame(data) , где data относятся к N-мерному массиву или итерации, содержащей данные. Вы можете указать строку и индекс, а также метки столбца, задав необязательные параметры индекса и столбца соответственно.
  • Использование pd.read_csv(path-to-the-file) считывает содержимое файла во фрейм данных.
  • Вы можете вызвать метод info() для объекта фрейма данных, чтобы получить информацию о столбцах, количестве пропущенных значений, типах данных и размере фрейма данных.
  • Чтобы выбрать один столбец, используйте df_name[col_name] , а чтобы выбрать несколько столбцов, конкретный столбец, df_name[[col1,col2,...,coln]] .
  • Вы также можете выбирать столбцы и строки, используя методы loc() и iloc() .
  • В то время как метод iloc() принимает индекс (или срез индекса) строк и столбцов для выбора, метод loc() принимает метки строк и столбцов.

Вы можете найти примеры, используемые в этом руководстве, в этой записной книжке Colab.

Затем ознакомьтесь со списком блокнотов для совместной работы с данными.