Data Science

Pandas: Эффективный выбор нескольких столбцов в DataFrame

Spread the love

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

Оглавление:

Использование синтаксиса getitem

Простейший подход использует синтаксис getitem ([]). Укажите список имён столбцов для выбора этих столбцов.


import pandas as pd

data = {'col1': [1, 2, 3], 'col2': [4, 5, 6], 'col3': [7, 8, 9], 'col4': [10, 11, 12]}
df = pd.DataFrame(data)

# Выбираем 'col1', 'col3' и 'col4'
selected_columns = ['col1', 'col3', 'col4']
selected_df = df[selected_columns]
print(selected_df)

Это кратко и понятно, но убедитесь, что все указанные столбцы существуют в DataFrame; в противном случае возникнет ошибка KeyError.

Использование iloc()

iloc() использует индексирование на основе целых чисел. Выбирайте столбцы, указывая список их целочисленных позиций (помните, что Python использует нумерацию с нуля).


import pandas as pd

data = {'col1': [1, 2, 3], 'col2': [4, 5, 6], 'col3': [7, 8, 9], 'col4': [10, 11, 12]}
df = pd.DataFrame(data)

# Выбираем столбцы с индексами 0, 2 и 3
selected_df = df.iloc[:, [0, 2, 3]]  # : выбирает все строки, [0, 2, 3] выбирает столбцы 0, 2 и 3
print(selected_df)

Символ : выбирает все строки. iloc() полезен, когда имена столбцов неизвестны, но доступны индексы.

Использование loc()

loc() использует метки (имена столбцов). Хотя для нескольких столбцов он похож на getitem, loc обеспечивает большую гибкость для комбинированного выбора строк и столбцов.


import pandas as pd

data = {'col1': [1, 2, 3], 'col2': [4, 5, 6], 'col3': [7, 8, 9], 'col4': [10, 11, 12]}
df = pd.DataFrame(data)

# Выбираем 'col1', 'col3' и 'col4'
selected_df = df.loc[:, ['col1', 'col3', 'col4']]  # : выбирает все строки, ['col1', 'col3', 'col4'] выбирает указанные столбцы
print(selected_df)

loc явно указывает на выбор по меткам, что полезно при комбинировании с выбором строк по меткам или булевому индексированию.

Булево индексирование для выбора столбцов

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


import pandas as pd

data = {'col1': [1, 2, 3], 'col2': [4, 5, 6], 'col3': [7, 8, 9], 'col4': [10, 11, 12], 'other_col': [13,14,15]}
df = pd.DataFrame(data)

# Выбираем столбцы, начинающиеся с 'col'
selected_df = df.loc[:, [col.startswith('col') for col in df.columns]]
print(selected_df)

Вопросы производительности

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

Заключение

Выбор нескольких столбцов является фундаментальной операцией в Pandas. Getitem простейший для известных имён столбцов. iloc() подходит для индексирования на основе целых чисел, в то время как loc() обеспечивает гибкость и предпочтительнее для выбора по меткам. Лучший метод зависит от ваших конкретных потребностей и структуры данных.

Часто задаваемые вопросы (FAQ)

  • В: Что произойдёт, если я выберу несуществующий столбец?
    О: Getitem и loc вызовут ошибку KeyError. iloc вызовет ошибку IndexError, если индекс выходит за границы.
  • В: Можно ли выбирать столбцы на основе условия?
    О: Да, используйте булево индексирование с loc (как показано выше).

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *