Перевод статьи «5 Must-Know Pandas Functions for Data Science».
Каждый проект из области data science начинается с анализа данных. Когда мы говорим об анализе данных, невозможно не упомянуть pandas – библиотеку Python, также известную как Panel Data Analysis.
В этой статье я поделюсь с вами важными функциями pandas, которые помогают осуществлять различные операции над датасетами.
Я буду работать с датасетом от Kaggle для предсказания цен на недвижимость. Скачать его можно здесь.
Сперва изучим наши данные.
import pandas as pd df = pd.read_csv("House data.csv")
Вид датасета следующий.
Так как это данные для предсказания цен на недвижимость, здесь учитывается количество комнат, ванные, этажность и другие факторы, способные повлиять на цену дома с различными особенностями.
Применим к этим данным некоторые функции pandas.
1. count()
Скажем, вам нужно быстро проверить, есть ли в таблице значения NaN. В этом случае мы можем воспользоваться функцией count()
, которая посчитает количество ячеек, содержащих какое-либо число.
df.count()
Отличные новости: в нашем датасете нет NaN. Поэтому поместим значение NaN в одну ячейку и посмотрим, что изменится.
df.at[0,'price']= np.nan
Теперь, если я вызову count()
, получу следующий результат:
2. idxmin() и idxmax()
Эти функции возвращают индекс строки, удовлетворяющей определённому условию.
Скажем, нам нужно посмотреть подробную информацию о доме с наименьшей ценой. Существует множество способов сделать это с помощью других методов. Но функции idxmin()
и idxmax()
наиболее эффективны.
df.loc[df['price'].idxmin()]
Запустив этот код, я получу данные о жилье с минимальной ценой:
Это будет трёхкомнатная квартира в Федерал-Уэй с ценой 0.
Очевидно, что в данных ошибка, ведь мы тренируемся на open-source датасете. Но, думаю, суть вы уловили:) То же самое можно проделать с idxmax()
, чтобы найти дом с наибольшей ценой.
Но что, если домов с минимальной/максимальной ценой окажется несколько? В этом случае функции возвращают первое вхождение. Далее в статье мы разберём и такой случай.
3. cut()
Допустим, у нас есть непрерывная переменная. Но, например, в рамках вашей задачи эту переменную необходимо рассматривать как категориальную.
Функция cut()
поможет вам привести непрерывную переменную к виду дискретной, разбив весь диапазон значений на интервалы.
В нашем случае я хочу создать набор ценовых данных, поскольку значение цены колеблется от 0 до 26590000. Если я сгруппирую данные, с ними будет проще работать.
pd.cut(df["price"], 4)
Каждому интервалу можно также дать название.
Неплохо! Можно заменить соответствующую колонку ценой в новом формате или же добавить новый столбец.
4. pivot_table()
Если вы работали в excel, вы точно использовали эту функцию.
Допустим, нам нужно найти среднюю цену дома в каждом городе, основываясь на количестве комнат.
df.pivot_table(index="city" , columns="bedrooms" ,values="price" , aggfunc="mean")
Здесь вы можете заметить NaN, так как не в каждом городе есть двухкомнатные квартиры – также особенность нашего датасета.
5. nsmallest() и nlargest()
Мы уже научились использовать idxmin()
и idxmax()
, чтобы находить определённые значения. А что, если нужно найти три позиции с наибольшей ценой? Тут-то нам и пригодятся функции nsmallest()
и nlargest()
.
df.nlargest(3, "price")[["city","price"]]
df.nsmallest(3, "price")[["city","price"]]
Замечательно! Теперь мы нашли три города, в которых есть дома с нулевой ценой:)
Заключение
Итак, мы познакомились с функциями pandas, которые станут отличными помощниками в решении ваших повседневных задач в области Data Science.
Надеюсь, статья вам понравилась. Спасибо за внимание!