Loc pandas что делает
Перейти к содержимому

Loc pandas что делает

  • автор:

pandas.DataFrame.loc

Получите доступ к группе строк и столбцов с помощью label(s) или массива boolean.

.loc[] в основном основан на метках, но также может использоваться с массивом boolean.

  • Одна метка, например, 5 или ‘a’ (обратите внимание, что 5 интерпретируется как метка индекса, а не как целочисленная позиция вдоль index).).
  • Список или массив меток, например [‘a’, ‘b’, ‘c’] .
  • Объект среза с метками, например ‘a’:’f’ .

Warning Обратите внимание, что, в отличие от обычных срезов python, включены как начало, так и конец.

Если какие-либо элементы не найдены.

Если передан индексированный ключ, и его индекс не соответствует индексу фрейма.

Доступ к одному значению для пары меток row/column.

Доступ к группе строк и столбцов по целому числу position(s).

Возвращает сечение (row(s) или column(s)) из Series/DataFrame..

Доступ к группе значений с помощью меток.

Getting values

>>> df = pd.DataFrame([[1, 2], [4, 5], [7, 8]], . index=['cobra', 'viper', 'sidewinder'], . columns=['max_speed', 'shield']) >>> df max_speed shield cobra 1 2 viper 4 5 sidewinder 7 8

Единая этикетка. Обратите внимание, что это возвращает строку как серию.

>>> df.loc['viper'] max_speed 4 shield 5 Name: viper, dtype: int64

Список ярлыков. Примечание. Использование [[]] возвращает DataFrame..

>>> df.loc[['viper', 'sidewinder']] max_speed shield viper 4 5 sidewinder 7 8 

Одна метка для строки и столбца

>>> df.loc['cobra', 'shield'] 2

Срез с метками для строки и одной меткой для столбца. Как упоминалось выше, обратите внимание, что включены как начало, так и конец среза.

>>> df.loc['cobra':'viper', 'max_speed'] cobra 1 viper 4 Name: max_speed, dtype: int64

Список Boolean той же длины, что и ось строки

>>> df.loc[[False, False, True]] max_speed shield sidewinder 7 8 
>>> df.loc[pd.Series([False, True, False], . index=['viper', 'sidewinder', 'cobra'])] max_speed shield sidewinder 7 8

Индекс (такое же поведение, как у df.reindex )

>>> df.loc[pd.Index(["cobra", "viper"], name="foo")] max_speed shield foo cobra 1 2 viper 4 5

Условное выражение, которое возвращает серию boolean.

>>> df.loc[df['shield'] > 6] max_speed shield sidewinder 7 8

Условие, которое возвращает серию boolean с указанными метками столбцов.

>>> df.loc[df['shield'] > 6, ['max_speed']] max_speed sidewinder 7 

Вызываемый, который возвращает серию boolean

>>> df.loc[lambda df: df['shield'] == 8] max_speed shield sidewinder 7 8

Setting values

Установить значение для всех элементов, соответствующих списку меток

>>> df.loc[['viper', 'sidewinder'], ['shield']] = 50 >>> df max_speed shield cobra 1 2 viper 4 50 sidewinder 7 50

Установить значение для всей строки

>>> df.loc['cobra'] = 10 >>> df max_speed shield cobra 10 10 viper 4 50 sidewinder 7 50

Установить значение для всего столбца

>>> df.loc[:, 'max_speed'] = 30 >>> df max_speed shield cobra 30 10 viper 30 50 sidewinder 30 50

Установить значение для строк, соответствующих вызываемому условию

>>> df.loc[df['shield'] > 35] = 0 >>> df max_speed shield cobra 30 10 viper 0 0 sidewinder 0 0

Получение значений на DataFrame с индексом, имеющим целочисленные метки

Другой пример использования целых чисел для индекса

>>> df = pd.DataFrame([[1, 2], [4, 5], [7, 8]], . index=[7, 8, 9], columns=['max_speed', 'shield']) >>> df max_speed shield 7 1 2 8 4 5 9 7 8

Срез с целочисленными метками для строк. Как упоминалось выше, обратите внимание, что включены как начало, так и конец среза.

>>> df.loc[7:9] max_speed shield 7 1 2 8 4 5 9 7 8

Получение значений с помощью MultiIndex

Ряд примеров использования DataFrame с MultiIndex

>>> tuples = [ . ('cobra', 'mark i'), ('cobra', 'mark ii'), . ('sidewinder', 'mark i'), ('sidewinder', 'mark ii'), . ('viper', 'mark ii'), ('viper', 'mark iii') . ] >>> index = pd.MultiIndex.from_tuples(tuples) >>> values = [[12, 2], [0, 4], [10, 20], . [1, 4], [7, 1], [16, 36]] >>> df = pd.DataFrame(values, columns=['max_speed', 'shield'], index=index) >>> df max_speed shield cobra mark i 12 2 mark ii 0 4 sidewinder mark i 10 20 mark ii 1 4 viper mark ii 7 1 mark iii 16 36

Единая этикетка. Обратите внимание, что это возвращает DataFrame с одним индексом.

>>> df.loc['cobra'] max_speed shield mark i 12 2 mark ii 0 4 

Кортеж с одним индексом. Обратите внимание, что это возвращает серию.

>>> df.loc[('cobra', 'mark ii')] max_speed 0 shield 4 Name: (cobra, mark ii), dtype: int64

Одна метка для строки и столбца. Подобно передаче кортежа, это возвращает серию.

>>> df.loc['cobra', 'mark i'] max_speed 12 shield 2 Name: (cobra, mark i), dtype: int64

Одиночный кортеж. Примечание. Использование [[]] возвращает DataFrame..

>>> df.loc[[('cobra', 'mark ii')]] max_speed shield cobra mark ii 0 4 

Один кортеж для индекса с одной меткой для столбца

>>> df.loc[('cobra', 'mark i'), 'shield'] 2

Срез от кортежа индекса до одной метки

>>> df.loc[('cobra', 'mark i'):'viper'] max_speed shield cobra mark i 12 2 mark ii 0 4 sidewinder mark i 10 20 mark ii 1 4 viper mark ii 7 1 mark iii 16 36 

Срез от кортежа индекса к кортежу индекса

>>> df.loc[('cobra', 'mark i'):('viper', 'mark ii')] max_speed shield cobra mark i 12 2 mark ii 0 4 sidewinder mark i 10 20 mark ii 1 4 viper mark ii 7 1 

См. user guide для получения более подробной информации и пояснений по расширенной индексации.

Работа с индексами — Python: Pandas

Фильтрация значений и оперирование с их подмножествами используются в задачах обработки, подготовки и анализа данных. В этом уроке мы познакомимся c правилами индексирования основных объектов Series и DataFrame , а также узнаем, как с их помощью осуществлять подвыборки нужных строк и столбцов в табличных данных.

Структура объекта DataFrame

Рассмотрим объект DataFrame . Он состоит из набора столбцов, каждый из которых является объектом Series :

import pandas as pd df_orders = pd.read_json('./data/Orders.xlsx') print(df_orders.head()) # => shop_1 shop_2 shop_3 shop4 # 0 7.0 1 7.0 8 # 1 4.0 2 4.0 5 # 2 3.0 5 NaN 3 # 3 8.0 12 8.0 7 # 4 15.0 11 13.0 9 

Применим функцию type() к столбцу df_orders :

print(type(df_orders['shop_1'])) # => pandas.core.series.Series 

Объект Series спроектирован, чтобы хранить одномерные структуры данных. Он состоит из двух связанных между собой массивов: меток и значений:

print(df_orders.shop_1) # => 0 7.0 # 1 4.0 # 2 3.0 # 3 8.0 # 4 15.0 # 5 21.0 # 6 NaN # Name: shop_1, dtype: float64 

Выбрать несколько столбцов можно следующим образом:

print(df_orders[['shop_1','shop_2']].head()) # => shop_1 shop_2 # 0 7.0 1 # 1 4.0 2 # 2 3.0 5 # 3 8.0 12 # 4 15.0 11 # 

При выборе нескольких столбцов мы будем снова получать тип данных DataFrame.

Иногда легче выбросить несколько столбцов, чем перечислять необходимые. В этом случае нужно использовать метод drop() :

print(df_orders.drop(['shop_4'], axis=1).head()) # => shop_1 shop_2 shop_3 # 0 7.0 1 7.0 # 1 4.0 2 4.0 # 2 3.0 5 NaN # 3 8.0 12 8.0 # 4 15.0 11 13.0 

В методе drop() нужно задавать значение параметра axis . Значение 0 будет указывать, что нужно исключить некоторые строки. Значение 1 указывает на исключение столбцов.

Метод drop() возвращает новый объект DataFrame и оставляет без изменений исходный.

Индексы объектов DataFrame и Series

У каждой строки объекта DataFrame или значения у Series есть индекс. Индекс может быть как числом, так и строкой. Список индексов объектов DataFrame и Series можно получить с помощью атрибута index :

print(df_orders.index) # RangeIndex(start=0, stop=7, step=1) print(df_orders.shop_1.index) # RangeIndex(start=0, stop=7, step=1) 

Если нужно, можно изменить значение индексов и имя столбца с индексами:

df_orders.index = range(0,16,2) df_orders.index.name = 'New indexes' print(df_orders.head()) # => shop_1 shop_2 shop_3 shop4 # New indexes # 0 7.0 1 7.0 8 # 2 4.0 2 4.0 5 # 4 3.0 5 NaN 3 # 6 8.0 12 8.0 7 # 8 15.0 11 13.0 9 

Строковые индексы обычно называют метки или ключи:

df_orders.index = ['a','b','c','d','e','f','g'] print(df_orders.head()) # => shop_1 shop_2 shop_3 shop_4 # a 7.0 1 7.0 8 # b 4.0 2 4.0 5 # c 3.0 5 NaN 3 # d 8.0 12 8.0 7 # e 15.0 11 13.0 9 

Методы получения значений по индексу

Разберем следующие методы:

  • loc() — метод выбора данных на основе меток строк
  • iloc() — метод выбора строк согласно их числовой позиции

loc()

Выберем одну строку из объекта DataFrame по ее метке:

print(df_orders.loc['b']) # => shop_1 4.0 # shop_2 2.0 # shop_3 4.0 # shop_4 5.0 # Name: b, dtype: float64 

Выберем несколько строк:

print(df_orders.loc[['b','c']]) # => shop_1 shop_2 shop_3 shop_4 # b 4.0 2 4.0 5 # c 3.0 5 NaN 3 

iloc()

Выберем одну строку:

print(df_orders.iloc[1]) # => shop_1 4.0 # shop_2 2.0 # shop_3 4.0 # shop_4 5.0 # Name: b, dtype: float64 

Выберем несколько строк:

print(df_orders.loc[[1,2]]) # => shop_1 shop_2 shop_3 shop_4 # b 4.0 2 4.0 5 # c 3.0 5 NaN 3 

Фильтрация строк и столбцов одновременно

Методы loc() и iloc() позволяют выполнять фильтрацию по строкам и столбцам одновременно. Пример для loc() :

print(df_orders.loc[['b','c'],['shop_2','shop_4']]) # => shop_2 shop_4 # b 2 5 # c 5 3 

Пример для iloc() :

print(df_orders.iloc[[2,4],[1,3]]) # => shop_2 shop4 # c 5 3 # e 11 9 

Как и при использовании методов отдельно для строк и столбцов, метод loc() ожидает на вход метки, а iloc() — номера позиций строк и столбцов.

Срезы

Срезы позволяют получать совокупности строк в определенном диапазоне. Пример:

print(df_orders.loc['b':'d']) # => shop_1 shop_2 shop_3 shop_4 # b 4.0 2 4.0 5 # c 3.0 5 NaN 3 # d 8.0 12 8.0 7 

В срез данных попали все строки между позициями 1 и 3 включительно. Позиции 1 и 3 соответствуют меткам ‘b’ и ‘d’. Можно строить более интересные срезы:

print(df_orders.loc['b':'f':2]) # => shop_1 shop_2 shop_3 shop_4 # b 4.0 2 4.0 5 # d 8.0 12 8.0 7 # f 21.0 18 17.0 21 

В данный срез попала каждая вторая строка между строками с метками ‘b’ и ‘f’.

Можно получать срезы со строками и столбцами одновременно:

print(df_orders.loc['b':'f':2, 'shop_1':'shop_3']) # => shop_1 shop_2 shop_3 # b 4.0 2 4.0 # d 8.0 12 8.0 # f 21.0 18 17.0 

В срез попала каждая вторая строка между строками с метками ‘b’ и ‘f’ и столбцы с метками от ‘shop_1’ до ‘shop_3’ включительно.

Аналогично получаются срезы с помощью метода iloc() . Приведем пример, который совпадает по результату с примером выше:

print(df_orders.iloc[1:6:2, 0:3]) # b 4.0 2 4.0 # d 8.0 12 8.0 # f 21.0 18 17.0 

Открыть доступ

Курсы программирования для новичков и опытных разработчиков. Начните обучение бесплатно

  • 130 курсов, 2000+ часов теории
  • 1000 практических заданий в браузере
  • 360 000 студентов

Наши выпускники работают в компаниях:

Pandas

Pandas — это библиотека Python для обработки и анализа структурированных данных, её название происходит от «panel data» («панельные данные»). Панельными данными называют информацию, полученную в результате исследований и структурированную в виде таблиц. Для работы с такими массивами данных и создан Pandas.

Освойте профессию «Аналитик данных»

Работа с открытым кодом

Pandas — это opensource-библиотека, то есть ее исходный код в открытом доступе размещен на GitHub. Пользователи могут добавлять туда свой код: вносить пояснения, дополнять методы работы и обновлять разделы. Для работы потребуется компилятор (программа, которая переводит текст с языка программирования в машинный код) C/C++ и среда разработки Python. Подробный процесс установки компилятора С для разных операционных систем можно найти в документации Pandas.

Профессия / 12 месяцев
Аналитик данных

Находите закономерности и делайте выводы, которые помогут бизнесу

Group 1321314279 (1)

В каких профессиях понадобится библиотека?

Навык работы с этой библиотекой пригодится дата-сайентистам или аналитикам данных. С помощью Pandas эти специалисты могут группировать и визуализировать данные, создавать сводные таблицы и делать выборку по определенным признакам.

Как установить Pandas

Пошаговая инструкция по установке библиотеки Pandas

    Скачать библиотеку На официальном сайте Pandas указан самый простой способ начать работу с библиотекой. Для этого потребуется установить Anaconda — дистрибутив (форма распространения программного обеспечения, набор библиотек или программного кода для установки программы) для Python с набором библиотек. Безопасно скачать его можно на официальном сайте.

Настройка установки Вот несколько советов по установке Anaconda для новичков:

— Выбирайте рекомендованные настройки, на первое время этого будет достаточно. Например, Install for: Just me (recommended).

— Но если не поставить галочку «Add Anaconda to my PATH environment variable», то Anaconda не будет запускаться по умолчанию, каждый раз ее нужно будет запускать отдельно.

— На вопрос: «Do you wish to initialize Anaconda3?» (Хотите ли вы инициализировать Anaconda3?) отвечайте «Да».

— После завершения установки перезагрузите компьютер.

Запуск JupyterLab В командной строке Anaconda запустите JupyterLab — это интерактивная среда для работы с кодом, данными и блокнотами, которая входит в пакет дистрибутива. Для этого введите jupyter-lab .

Открытие блокнота Создайте в JupyterLab новый блокнот Python3. Для его создания надо щелкнуть на значке «+», расположенном в верхней левой части интерфейса. В появившемся меню выбрать «Python 3» для создания блокнота.

Импорт библиотеки В первой ячейке пропишите: import pandas as pd , после этого в следующих ячейках можно писать код.

Читайте также Как выбрать IT-специальность в новых реалиях?

DataFrame и Series

Чтобы анализировать данные с помощью Pandas, нужно понять, как устроены структуры этих данных внутри библиотеки. В первую очередь разберем, что такое DataFrame и Series.

Series

Pandas Series (серия) — это одномерный массив. Визуально он похож на пронумерованный список: слева в колонке находятся индексы элементов, а справа — сами элементы.

my_series = pd.Series([5, 6, 7, 8, 9, 10])

Pandas Series пример массива

Индексом может быть числовой показатель (0, 1, 2…), буквенные значения (a, b, c…) или другие данные, выбранные программистом. Если особое значение не задано, то числовые индексы проставляются автоматически. Например, от 0 до 5 как в примере выше.

Такая нумерация называется RangeIndex, в ней всегда содержатся числа от 0 до определенного числа N, которое обозначает количество элементов в серии. Собственные значения индексов задаются в квадратных скобках через index, как в примере ниже:

my_series2 = pd.Series([5, 6, 7, 8, 9, 10]), index=['a', 'b', 'c', 'd', 'e', 'f'])

Собственные значения индексов в Pandas

Индексы помогают обращаться к элементам серии и менять их значения. Например, чтобы в нашей серии [5, 6, 7, 8, 9, 10] заменить значения некоторых элементов на 0, мы прописываем индексы нужных элементов и указываем, что они равны нулю:

my_series2[['a', 'b', 'f']] = 0

Можно сделать выборку по нескольким индексам, чтобы ненужные элементы в серии не отображались:

my_series2[['a', 'b', 'f']]
a 5 b 6 f 10 dtype: int64

DataFrame

Pandas DataFrame — это двумерный массив, похожий на таблицу/лист Excel (кстати, данные из Excel можно читать с помощью команды pandas.read_excel(‘file.xls’)) . В нем можно проводить такие же манипуляции с данными: объединять в группы, сортировать по определенному признаку, производить вычисления. Как любая таблица, датафрейм состоит из столбцов и строк, причем столбцами будут уже известные объекты — Series.

Чтобы проверить, действительно ли серии — это части датафрейма, можно извлечь любую колонку из таблицы. Возьмем набор данных о нескольких странах СНГ, их площади и населении и выберем колонку country:

df = pd.DataFrame(< 'country': ['Kazakhstan', 'Russia', 'Belarus', 'Ukraine'], 'population': [17.04, 143.5, 9.5, 45.5], 'square': [2724902, 17125191, 207600, 603628] >)

Pandas DataFrame пример

В итоге получится простая серия, в которой сохранятся те же индексы по строкам, что и в исходном датафрейме:

df['country']
type(df['country'])

Pandas DataFrame индексы по строкам

Станьте аналитиком данных и получите востребованную специальность

Кроме этого, у датафрейма есть индексы по столбцам, которые задаются вручную. Для простоты написания кода обозначим страны индексами из двух символов: Kazakhstan — KZ, Russia — RU и так далее:

# Создаем датафрейм с заданными индексами df = pd.DataFrame(< 'country': ['Kazakhstan', 'Russia', 'Belarus', 'Ukraine'], 'population': [17.04, 143.5, 9.5, 45.5], 'square': [2724902, 17125191, 207600, 603628] >, index=['KZ', 'RU', 'BY', 'UA'])

Pandas пример индекса по строкам

# Изменяем индексы df.index = ['KZ', 'RU', 'BY', 'UA'] df.index.name = 'Country Code'

По индексам можно искать объекты и делать выборку, как в Series . Возьмем тот же датафрейм и сделаем выборку по индексам KZ, RU и колонке population методом .loc (в случае .loc мы используем квадратные скобки, а не круглые, как с другими методами), чтобы сравнить население двух стран:

df.loc[['KZ', 'RU'], 'population']

Anaconda выведет следующее:

Country Code
KZ 17.04
RU 143.50
Name: population, dtype: float64

Также в DataFrame производят математические вычисления. Например, рассчитаем плотность населения каждой страны в нашем датафрейме. Данные в колонке population (численность населения) делим на square (площадь) и получаем новые данные в колонке density, которые показывают плотность населения:

# Вычисление плотности населения df['density'] = df['population'] / df['square'] * 1000000

в Pandas

Станьте аналитиком данных и получите востребованную специальность

Чтение и запись данных

В Pandas работают с форматами csv, excel, sql, html, hdf и другими. Полный список можно посмотреть с помощью метода .read, где через нижнее подчеркивание «_» будут указаны все доступные форматы.

Ниже представлены примеры чтения и записи данных на Python с использованием Pandas:

Чтение данных:

  1. Чтение данных из CSV файла:
import pandas as pd # Чтение CSV файла data = pd.read_csv('data.csv') # Вывод первых нескольких строк датафрейма print(data.head())
  1. Чтение данных из Excel файла:
# Чтение данных из Excel файла data = pd.read_excel('data.xlsx') # Вывод первых нескольких строк датафрейма print(data.head())
  1. Чтение данных из SQL базы данных:
from sqlalchemy import create_engine # Создание подключения к базе данных engine = create_engine('sqlite:///database.db') # Чтение данных с помощью SQL запроса query = "SELECT * FROM table_name" data = pd.read_sql(query, engine) # Вывод первых нескольких строк датафрейма print(data.head())

Запись данных:

  1. Запись данных в CSV или Exсel файл:
# Создание датафрейма data = pd.DataFrame(< 'name': ['Alice', 'Bob', 'Charlie'], 'age': [25, 30, 22] >) # Запись в CSV файл (или Exсel, нужно будет поменять расширение ниже) data.to_csv('output.csv', index=False)
  1. Запись данных в SQL базу данных:
import pandas as pd from sqlalchemy import create_engine # Создание датафрейма data = pd.DataFrame(< 'name': ['Alice', 'Bob', 'Charlie'], 'age': [25, 30, 22] >) # Создание подключения к базе данных engine = create_engine('sqlite:///new_database.db') # Запись данных в базу данных data.to_sql('new_table', engine, index=False, if_exists='replace')

Доступ по индексу в DataFrame

Для поиска данных в библиотеке Pandas используются два метода: .loc и .iloc . Рассмотрим их функциональность и применение.

Метод .loc:

Метод .loc предоставляет доступ к данным по заданному имени строки (индексу) в DataFrame. Рассмотрим пример с набором данных о скорости и ядовитости нескольких видов змей:

data = index = ['cobra', 'viper', 'sidewinder'] df = pd.DataFrame(data, index=index) # Вывод датафрейма print(df)

Используя метод .loc , мы можем получить информацию о конкретном виде змеи, например, гадюке (viper):

# Получение данных о гадюке (viper) viper_data = df.loc['viper'] print(viper_data)

метод .loc python pandas

Метод .iloc:

Метод .iloc позволяет осуществлять доступ к данным по порядковому номеру строки в DataFrame. Рассмотрим пример с набором данных, имеющим числовые индексы:

mydict = [, , ] df = pd.DataFrame(mydict) # Вывод датафрейма print(df)
 a b c d 0 1 2 3 4 1 100 200 300 400 2 1000 2000 3000 4000 

Используя метод .iloc , можно получить данные из первой строки с индексом 0:

first_row = df.iloc[0] first_row

пример использования метода iloc в Pandas

Читайте также Что нужно знать, чтобы стать дата-сайентистом?

Группировка и агрегирование данных

Для этого используется метод .groupby , он позволяет анализировать отдельные группы данных и сравнивать показатели. Например, у нас есть несколько обучающих курсов, информация о которых хранится в одной таблице. Нужно проанализировать, какой доход приносит каждый из них:

Используем .groupby и указываем название колонки title, на основе которой Pandas объединит все данные. После этого используем метод .agregate – он поможет провести математические вычисления, то есть суммировать стоимость внутри каждой группы.

import pandas as pd # Создание DataFrame с данными о курсах data = < 'title': ['Курс A', 'Курс B', 'Курс C', 'Курс D', 'Курс E'], 'income': [100, 150, 200, 120, 180] >df = pd.DataFrame(data) # Группировка данных по названию курса и агрегирование дохода grouped = df.groupby('title', as_index=False).aggregate() grouped

Обратите внимание на as_index=False , эта часть кода отвечает за то, чтобы сохранить числовые индексы в результатах группировки и вычисления.

Сводные таблицы в Pandas

Их используют для обобщения информации, собранной об объекте исследования. Когда исходных данных много и все они разного типа, составление таблиц помогает упорядочить информацию. Чтобы создавать на Python сводные таблицы, тоже используют библиотеку Pandas, а именно — метод .pivot_table .

Для примера возьмем условный набор данных с простыми категориями one / two, small / large и числовыми значениями. В столбце A две категории foo / bar складываются в слово foobar — текст, который используется в программировании для условного обозначения. В этом случае он указывает, что мы делим данные на две группы по неопределенному признаку.

df = pd.DataFrame() df

Результат выполнения кода:

Python сводная таблица с помощью pandas

С помощью метода .pivot_table преобразуем эти данные в таблицу, а в скобках прописываем условия.

table = pd.pivot_table(df, values='D', index=['A', 'B'], columns=['C'], aggfunc=np.sum) table

преобразованные данные в таблицу

Мы разбиваем данные на две категории: bar и foo, в каждой из них будут подгруппы со значениями one и two, которые в свою очередь делятся на small и large. В сводной таблице мы вычисляем, сколько объектов будет в каждой группе. Для этого используем методы values, index, columns и aggfunc:

  • values — метод для агрегации, объединяет элементы в одну систему;
  • index и columns — методы, отвечающие за группировку столбцов;
  • aggfunc — метод, который передает список функций, необходимых для расчета.

Визуализация данных в Pandas

Дата-аналитики составляют наглядные графики с помощью Pandas и библиотеки Matplotlib. В этой связке Pandas отвечает за вычислительную часть работы, а вспомогательная библиотека «создает» картинку.

Посмотрим на данные о продажах в одной из компаний:

Число покупок на одного покупателя Количество покупателей
7000 4
3755 6
2523 13
541 16
251 21
1 31

В таблице видно, что одни пользователи совершили уже более 7 000 покупок, а некоторые — сделали первую. Чтобы увидеть подробную картину, составляем график sns.distplot. На горизонтальной оси будет отображаться число покупок на одного покупателя, а на вертикальной — количество покупателей, которые совершили именно столько покупок в этой компании. Так по графику можно определить, что самой многочисленной оказалась группа клиентов, которая совершила всего несколько покупок, а группа постоянных клиентов немногочисленная.

import seaborn as sns import matplotlib.pyplot as plt # Создание данных purchase_counts = [7000, 3755, 2523, 541, 251, 1] customer_counts = [4, 6, 13, 16, 21, 31] # Создание графика sns.set(style="whitegrid") sns.distplot(purchase_counts, bins=20, kde=False, hist_kws=) plt.xlabel('Число покупок на одного покупателя') plt.ylabel('Количество покупателей') plt.title('Распределение числа покупок') plt.show()

график с помощью Pandas на Python

distplot — это график, который визуализирует гистограммы, то есть распределяет данные по столбцам. Каждому столбцу соответствует доля количества объектов в данной группе. Также distplot показывает плотность распределения — плавный линейный график, в котором самая высокая точка указывает на наибольшее количество объектов.

Кроме этого, в Pandas есть другие виды графиков:

  • kdeplot — график плотности распределения, который останется, если убрать гистограммы из distplot;
  • jointplot — график, показывающий распределение данных между двумя переменными. Каждая строка из набора данных в исходном файле отображается на графике как точка внутри системы координат. У точек на графике jointplot будет два заданных значения: одно по оси X, другое по оси Y.

Например, можно отследить взаимосвязь между тем, сколько минут посетитель проводит в торговом центре и сколько магазинов успевает посетить за это время: кто-то за 30 минут успеет зайти в 5 бутиков, а кто-то обойдет 16. При этом каждый посетитель на графике будет отображаться отдельной точкой.

Аналитик данных

Аналитики влияют на рост бизнеса. Они выясняют, какой товар и в какое время больше покупают. Считают юнит-экономику. Оценивают окупаемость рекламной кампании. Поэтому компании ищут и переманивают таких специалистов.

картинка (73)

Статьи по теме:
Разбираемся, почему эти профессии не стоит путать

Отвечает Мария Жарова, эксперт по Python и математике для Data Science, ментор одного из проектов на курсе по Data Science.

Pandas loc против iloc: в чем разница?

Когда дело доходит до выбора строк и столбцов кадра данных pandas, loc и iloc — это две часто используемые функции.

Вот тонкая разница между двумя функциями:

  • loc выбирает строки и столбцы с определенными метками
  • iloc выбирает строки и столбцы в определенных целочисленных позициях

В следующих примерах показано, как использовать каждую функцию на практике.

Пример 1: Как использовать loc в Pandas

Предположим, у нас есть следующие Pandas DataFrame:

import pandas as pd #create DataFrame df = pd.DataFrame(, index=['A', 'B', 'C', 'D', 'E', 'F', 'G', 'H']) #view DataFrame df team points assists A A 5 11 B A 7 8 C A 7 10 D A 9 6 E B 12 6 F B 9 5 G B 9 9 H B 4 12 

Мы можем использовать loc для выбора определенных строк DataFrame на основе их индексных меток:

#select rows with index labels 'E' and 'F' df.loc[['E', 'F']] team points assists E B 12 6 F B 9 5 

Мы можем использовать loc для выбора определенных строк и определенных столбцов DataFrame на основе их меток:

#select 'E' and 'F' rows and 'team' and 'assists' columns df.loc[['E', 'F'], ['team', 'assists']] team assists E B 12 F B 9 

Мы можем использовать loc с аргументом : для выбора диапазонов строк и столбцов на основе их меток:

#select 'E' and 'F' rows and 'team' and 'assists' columns df.loc['E ': , :' assists'] team points assists E B 12 6 F B 9 5 G B 9 9 H B 4 12 

Пример 2: Как использовать iloc в Pandas

Предположим, у нас есть следующие Pandas DataFrame:

import pandas as pd #create DataFrame df = pd.DataFrame(, index=['A', 'B', 'C', 'D', 'E', 'F', 'G', 'H']) #view DataFrame df team points assists A A 5 11 B A 7 8 C A 7 10 D A 9 6 E B 12 6 F B 9 5 G B 9 9 H B 4 12 

Мы можем использовать iloc для выбора определенных строк DataFrame на основе их целочисленной позиции:

#select rows in index positions 4 through 6 (not including 6) df.iloc [4:6] team points assists E B 12 6 F B 9 5 

Мы можем использовать iloc для выбора определенных строк и определенных столбцов DataFrame на основе их позиций в индексе:

#select rows in range 4 through 6 and columns in range 0 through 2 df.iloc [4:6, 0:2] team assists E B 12 F B 9 

Мы можем использовать loc с аргументом : для выбора диапазонов строк и столбцов на основе их меток:

#select rows from 4 through end of rows and columns up to third column df.iloc [4: , :3] team points assists E B 12 6 F B 9 5 G B 9 9 H B 4 12 

Дополнительные ресурсы

В следующих руководствах объясняется, как выполнять другие распространенные операции в pandas:

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

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