Выбор данных в Pandas

PandasBeginner
Практиковаться сейчас

Введение

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

В этой лабораторной работе вы будете работать с примером набора данных с информацией о студентах. Вы научитесь:

  • Выбирать одиночные и множественные столбцы с использованием нотации в квадратных скобках.
  • Выбирать строки по их меткам с использованием аксессора .loc.
  • Выбирать строки по их целочисленной позиции с использованием аксессора .iloc.
  • Комбинировать выбор строк и столбцов для извлечения точных срезов данных.

К концу этой лабораторной работы вы получите прочное понимание основных методов выбора данных в Pandas, которые необходимы для любых задач, связанных с данными.

Выбор одного столбца с использованием нотации в квадратных скобках

На этом шаге вы узнаете наиболее распространенный способ выбора одного столбца из Pandas DataFrame. Это делается с помощью нотации в квадратных скобках [], аналогично тому, как вы бы получили доступ к значению в словаре Python.

Сначала нам нужно загрузить наши данные из файла students.csv в DataFrame. Затем мы можем выбрать столбец, передав его имя в виде строки внутри скобок.

Пожалуйста, откройте файл main.py в файловом проводнике слева и добавьте следующий код.

import pandas as pd

## Загрузка CSV файла в DataFrame
df = pd.read_csv('students.csv')

## Выбор столбца 'name'
name_column = df['name']

## Вывод выбранного столбца
print(name_column)

Теперь давайте запустим скрипт. Откройте терминал в WebIDE и выполните следующую команду:

python3 main.py

Вы увидите вывод, который представляет собой объект Pandas Series, содержащий все имена из столбца 'name'.

0      Alice
1        Bob
2    Charlie
3      David
4        Eve
Name: name, dtype: object

Как вы можете видеть, выбор одного столбца возвращает Series, который по сути является одномерным маркированным массивом.

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

На этом шаге мы расширим предыдущий метод для одновременного выбора нескольких столбцов. Для этого, вместо передачи одной строки, вы передаете список имен столбцов внутри скобок для выбора. Обратите внимание на использование двойных скобок [[]]: внешние скобки предназначены для самого выбора, а внутренние скобки создают список столбцов.

Давайте изменим файл main.py для выбора столбцов name и score.

Обновите ваш main.py следующим кодом:

import pandas as pd

## Загрузка CSV файла в DataFrame
df = pd.read_csv('students.csv')

## Выбор столбцов 'name' и 'score'
subset = df[['name', 'score']]

## Вывод результирующего DataFrame с подмножеством столбцов
print(subset)

Теперь снова запустите скрипт из вашего терминала:

python3 main.py

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

      name  score
0    Alice     85
1      Bob     92
2  Charlie     95
3    David     88
4      Eve     90

В отличие от выбора одного столбца, который возвращает Series, выбор нескольких столбцов возвращает новый DataFrame.

Использование loc для выбора строк по метке

На этом шаге вы узнаете, как выбирать данные на основе их меток с помощью аксессора .loc. Индексатор .loc в первую очередь основан на метках, что означает, что вы используете имена (или метки) индекса для выполнения выбора. По умолчанию, когда вы загружаете CSV-файл без указания столбца индекса, Pandas назначает стандартный целочисленный индекс, начинающийся с 0. Эти целые числа действуют как метки для строк.

Давайте используем .loc для выбора третьей строки нашего DataFrame, которая имеет метку индекса 2.

Обновите ваш файл main.py следующим кодом:

import pandas as pd

## Загрузка CSV файла в DataFrame
df = pd.read_csv('students.csv')

## Выбор строки с меткой индекса 2
charlie_data = df.loc[2]

## Вывод выбранной строки
print(charlie_data)

Запустите скрипт из вашего терминала:

python3 main.py

Вывод будет представлять собой Series, содержащий все данные для строки с меткой индекса 2.

name        Charlie
age              21
major     Mathematics
score            95
Name: 2, dtype: object

Это показывает данные для студента "Чарли". Использование .loc является мощным способом доступа к строкам, когда вы знаете их метки.

Использование iloc для выбора строк по целочисленной позиции

На этом шаге мы рассмотрим еще один метод выбора: .iloc. Индексатор .iloc в первую очередь основан на целочисленной позиции. Он работает так же, как срезы списков в Python, где вы используете целочисленные индексы для доступа к элементам. Это отличается от .loc, который использует метки. Хотя наши стандартные метки индекса также являются целыми числами, это различие становится критически важным, когда у вас есть нецелочисленные метки.

Давайте используем .iloc для выбора самой первой строки DataFrame, которая находится в целочисленной позиции 0.

Обновите ваш файл main.py следующим кодом:

import pandas as pd

## Загрузка CSV файла в DataFrame
df = pd.read_csv('students.csv')

## Выбор первой строки (в целочисленной позиции 0)
first_row = df.iloc[0]

## Вывод выбранной строки
print(first_row)

Запустите скрипт из вашего терминала:

python3 main.py

Вывод будет представлять собой Series, содержащий данные первого студента, "Алиса".

name       Alice
age           20
major    Physics
score         85
Name: 0, dtype: object

Запомните ключевое отличие: .loc используется для меток, .iloc — для целочисленных позиций.

Выборка строк и столбцов с помощью loc

На этом заключительном шаге вы объедините полученные знания для выполнения более мощных выборок. Оба метода, .loc и .iloc, могут одновременно выбирать строки и столбцы, используя синтаксис df.loc[селектор_строк, селектор_столбцов].

Мы будем использовать .loc для выбора среза строк и среза столбцов. Ключевая особенность .loc заключается в том, что при срезе по меткам (например, 1:3) конечная метка (3) включается.

Давайте выберем строки от метки индекса 1 до 3 и столбцы от name до major.

Обновите ваш файл main.py следующим кодом:

import pandas as pd

## Загрузка CSV файла в DataFrame
df = pd.read_csv('students.csv')

## Выбор строк с метками индекса от 1 до 3 (включительно)
## и столбцов от 'name' до 'major' (включительно)
data_slice = df.loc[1:3, 'name':'major']

## Вывод результирующего среза
print(data_slice)

Запустите скрипт из вашего терминала:

python3 main.py

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

      name  age           major
1      Bob   22  Computer Science
2  Charlie   21       Mathematics
3    David   23       Engineering

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

Резюме

Поздравляем с завершением лабораторной работы! Вы успешно освоили основные методы выбора данных в Pandas.

В этой лабораторной работе вы практиковались в:

  • Выборе одного столбца с использованием нотации в квадратных скобках df['столбец'], которая возвращает Series.
  • Выборе нескольких столбцов с использованием списка в нотации в квадратных скобках df[['столбец1', 'столбец2']], которая возвращает DataFrame.
  • Выборе строк по их метке с помощью .loc, что является мощным инструментом для индексации на основе меток.
  • Выборе строк по их целочисленной позиции с помощью .iloc, которая следует стандартным правилам срезов Python.
  • Объединении селекторов строк и столбцов с помощью .loc для извлечения специфических двумерных срезов ваших данных.

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