Индексация, фильтрация и логические маски
Выбирайте строки и столбцы с помощью loc, iloc и логических условий.
«Индексация, фильтрация и логические маски» — бесплатный урок Python Academy на CoddyKit. Это урок 2 из 4. Ты можешь прочитать весь урок бесплатно ниже — а потом практиковать его прямо в браузере с встроенным редактором кода и ИИ-репетитором 24/7. Это часть пути обучения Python Academy, и твой прогресс синхронизируется между веб-версией и приложением CoddyKit. Курс Python Academy содержит 4 уроков всего.
loc и iloc
loc выбирает данные по метке, а iloc — по целочисленной позиции. Никогда не путайте их.
import pandas as pd
df = pd.DataFrame({"a":[1,2,3],"b":[4,5,6]}, index=["x","y","z"])
print(df.loc["y"]) # row with label y
print(df.iloc[1]) # row at position 1 (same row)
print(df.loc["x":"y"]) # rows x to y inclusiveФильтрация логической маской
Создайте логический Series и используйте его для выбора строк. Это аналог логической индексации NumPy в pandas.
import pandas as pd
df = pd.DataFrame({"name":["Alice","Bob","Carol"],"age":[30,17,25]})
adults = df[df["age"] >= 18]
print(adults)
# Alice 30
# Carol 25Несколько условий
Объединяйте логические условия с помощью & (и) и | (или). Каждое условие заключайте в скобки.
import pandas as pd
df = pd.DataFrame({"city":["NY","LA","NY","LA"],"score":[80,90,70,85]})
result = df[(df["city"]=="NY") & (df["score"]>75)]
print(result)Метод query()
df.query("expression") принимает строковое выражение и часто оказывается более читаемым, чем логические маски.
import pandas as pd
df = pd.DataFrame({"age":[30,17,25],"score":[90,80,70]})
result = df.query("age >= 18 and score > 75")
print(result)Фильтрация с помощью isin()
isin(list) фильтрует строки, в которых значение столбца входит в заданный список.
import pandas as pd
df = pd.DataFrame({"city":["NY","LA","Chicago","NY"],"val":[1,2,3,4]})
print(df[df["city"].isin(["NY","LA"])])
# rows with NY or LAbetween() для фильтрации по диапазону
series.between(left, right) возвращает True для значений из диапазона [left, right] — по умолчанию границы включаются.
import pandas as pd
df = pd.DataFrame({"score":[55,70,85,95,40]})
print(df[df["score"].between(60, 90)])
# 70 and 85loc для присваивания
Всегда используйте loc/iloc для присваивания на месте, чтобы избежать предупреждения SettingWithCopyWarning.
import pandas as pd
df = pd.DataFrame({"val":[1,2,3,4]})
df.loc[df["val"] > 2, "val"] = 99
print(df)
# 0:1 1:2 2:99 3:99at и iat для отдельных значений
at[label, col] и iat[i, j] обеспечивают быстрый доступ к отдельным значениям — быстрее, чем loc/iloc.
import pandas as pd
df = pd.DataFrame({"a":[10,20],"b":[30,40]})
print(df.at[0,"a"]) # 10 (by label)
print(df.iat[1,1]) # 40 (by position)Выбор по типу данных
select_dtypes(include/exclude) выбирает столбцы по типу данных.
import pandas as pd
df = pd.DataFrame({"x":[1,2],"name":["a","b"],"score":[1.5,2.5]})
nums = df.select_dtypes(include=["number"])
print(nums.columns.tolist()) # ['x', 'score']Удаление дубликатов
drop_duplicates() удаляет повторяющиеся строки. Укажите subset, чтобы сравнивать только определённые столбцы.
import pandas as pd
df = pd.DataFrame({"name":["Alice","Bob","Alice"],"age":[30,25,30]})
print(df.drop_duplicates())
# keeps first Alice, removes secondnlargest и nsmallest
Эффективно выбирайте первые или последние N строк по значению столбца.
import pandas as pd
df = pd.DataFrame({"product":["A","B","C","D"],"sales":[500,300,800,200]})
print(df.nlargest(2,"sales"))
# C 800
# A 500Быстрая проверка
В чём разница между loc и iloc?
Итоги
Используйте loc[label] для выбора по метке, а iloc[i] — для выбора по позиции. Фильтруйте строки с помощью логических масок, объединённых через &/|. Используйте query() для читаемых фильтров, isin() для проверки принадлежности и всегда выполняйте присваивание через loc, чтобы избежать предупреждения SettingWithCopyWarning.
Часто задаваемые вопросы
Урок «Индексация, фильтрация и логические маски» бесплатный?
Да — полный текст урока «Индексация, фильтрация и логические маски» бесплатно доступен здесь в веб-версии. Чтобы практиковать его интерактивно (встроенный редактор кода и ИИ-репетитор 24/7) и разблокировать остальной курс Python Academy, подпишись на CoddyKit PRO. Курс Python Academy содержит 4 уроков всего.
Чему я научусь в уроке «Индексация, фильтрация и логические маски»?
Выбирайте строки и столбцы с помощью loc, iloc и логических условий. Ты практикуешь Python Academy с помощью реального кода, который запускаешь прямо в браузере, и ИИ-репетитор 24/7 отвечает на твои вопросы во время урока.
Нужен ли мне опыт, чтобы начать Python Academy?
Предыдущий опыт не требуется. Python Academy на CoddyKit структурирован для всех уровней — от новичков до продвинутых, поэтому ты можешь начать отсюда или с самого начала и учиться в своем темпе. Это урок 2 из 4.
Сколько времени занимает урок «Индексация, фильтрация и логические маски»?
Большинство уроков CoddyKit занимают около 5–10 минут. Каждый из них компактный и интерактивный, поэтому ты постоянно делаешь прогресс и продолжаешь с того же места в веб-версии и приложении.
Можно ли писать и запускать код в этом уроке Python Academy?
Да. Каждый урок Python Academy включает встроенный редактор кода, поэтому ты пишешь и запускаешь реальный код прямо в браузере и получаешь моментальную обратную связь от AI — локальная установка не требуется.
Все уроки этого курса
- Основы Series и DataFrame
- Индексация, фильтрация и логические маски
- GroupBy, агрегация и сводные таблицы
- Объединение, соединение и очистка данных