Pandas — мощная библиотека Python для обработки и анализа данных. Распространённая задача включает выборку конкретных столбцов из DataFrame. В этой статье рассматриваются эффективные и понятные методы выбора нескольких столбцов, с акцентом на лучших практиках.
Оглавление:
- Использование синтаксиса getitem
- Использование
iloc()
- Использование
loc()
- Булево индексирование для выбора столбцов
- Вопросы производительности
- Заключение
- Часто задаваемые вопросы (FAQ)
Использование синтаксиса 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
(как показано выше).