Разбираемся в выборе данных в pandas: колонки через df[col], loc по меткам vs iloc по позициям, срезы строк, at/iat и как победить SettingWithCopyWarning.
Это часть 4 из 10 курса «Pandas с нуля для аналитика».
Загрузить таблицу — это полдела. Дальше начинается настоящая работа аналитика: достать нужный кусок данных. Одну колонку, три строки, конкретную ячейку, прямоугольный блок «эти строки и эти колонки». В pandas для этого есть несколько способов, и новички постоянно их путают — а потом получают загадочные ошибки или, что хуже, тихо портят данные. В этом уроке разложим всё по полочкам: df[...], loc, iloc, at, iat — кто за что отвечает и когда что брать.
loc выбирает по меткам индекса и названиям колонок (df.loc['2024-01', 'sales']), а iloc — по числовым позициям (df.iloc[0, 2]). У loc правая граница среза включается, у iloc — нет, как в обычных списках.
Передайте списки в loc: df.loc[[0, 5], ['name', 'price']]. Для диапазона строк и колонок используйте срез: df.loc[10:20, 'a':'c'] (loc включает обе границы).
Это предупреждение о том, что вы пишете в копию, а не в оригинал, и изменение может не примениться. Решение — делать присваивание одной операцией через loc: df.loc[df['x'] > 0, 'y'] = 1.