Обзор замечательных функций библиотеки Python Pandas 0.25.0

Pandas - одна из самых популярных библиотек Python. Он широко используется в большом количестве проектов в области науки о данных. В этой статье документируется список функций и улучшений, которые были введены в Pandas версии 0.25.0.

1. Во-первых, когда была выпущена версия 0.25 Pandas?

Версия Pandas 0.25 была выпущена 18 июля 2019 года.

2. Как установить Pandas версии 0.25?

Через Pip используйте эту команду

pip install pandas==0.25 --force-reinstall --user

3. Давайте рассмотрим основные функции.

3.1. Именованная агрегация

Pandas представил концепцию именованной функции агрегации в групповом поведении. Мы можем использовать функцию именованной агрегации, если мы хотим применить несколько функций агрегации к определенным столбцам в фрейме данных и хотим назвать выходные столбцы.

Pandas предлагает NamedAgg functionality, которая принимает требуемый столбец, и агрегатную функцию для применения в качестве аргументов ** kwags. Мы также можем передать простые кортежи (столбец, агрегатная функция) в agg function фрейма данных или явно объявить NamedAgg namedtuple и передать аргументы функции.

В качестве примера давайте рассмотрим, что это datafame, который содержит количество и цену напитков Coke и Pepsi:

my_df = pd.DataFrame({'products': ['coke', 'pepsi', 'coke', 'pepsi'],
'quantity': [10, 12, 10, 8], 'price': [100, 150, 50, 100]})
print(my_df)

Теперь предположим, что мы хотим рассчитать минимальную и среднюю цену, а также максимальное количество для каждого продукта. Сверху мы хотим присвоить столбцам соответствующие имена: minimum_price, average_price и maximum_quantity.

Мы могли бы использовать названную функцию агрегирования

my_df = my_df.groupby('products').agg(
minimum_price = pd.NamedAgg(column='price', aggfunc='min'),
average_price = pd.NamedAgg(column='price', aggfunc=np.mean),
maximum_quantity = pd.NamedAgg(column='quantity', aggfunc= 'max'))
print(my_df)

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

3.2 Мультииндекс печатается с хорошей структурой

Сколько раз мы использовали многоиндексную структуру данных Pandas! Визуализировать мультииндексные данные всегда было довольно сложно. Мы привыкли видеть все уровни и коды MultiIndex jumbled вместе.

Версия Pandas 0.25 улучшила способ представления MultiIndex. Теперь он печатает каждую строку как кортеж, что позволяет нам четко визуализировать столбцы по вертикали.

В качестве примера давайте рассмотрим, что это MultiIndex

df = pd.MultiIndex.from_product([['FinTechExplained', 'Publication'], range(3)])
print(df)

Если мы его распечатаем, то теперь увидим:

Легче визуализировать уровни FinTechExplained и Publication, а также коды 0,1 и 2, отображаемые в виде строк по вертикали.

3.3 Нормализация Json теперь поддерживает максимальный уровень функциональности

Pandas предлагает широко используемый модуль json_normalize. Этот модуль позволяет нам преобразовать данные в формате json в табличный формат. Иногда данные json очень вложены, мы хотим только нормализовать json до максимального уровня. Как видно из заголовка, появился новый параметр: max_level.

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

Например, если это наш JSON:

from pandas.io.json import json_normalize
data = [{'Person': {'Name': 'FarhadMalik'},'Address': {'PostCode': 'E1','Location': {'City': 'NewYork', 'Country': 'US'}}}]

Person - это сложный объект, который содержит свойства Name и Address. Адрес содержит атрибуты PostCode и Location. Кроме того, Location - это сложный объект с атрибутами City и Country.

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

normalised = json_normalize(data, max_level=1)
print(normalised)

Мы видим, что Address.Location не нормализован и представлен в своем формате Json.

3.4 Разнесение по строкам в виде списка

Большая часть данных, которые я использовал в своих проектах, хранится в файлах csv или excel. Чтобы представить списки в табличном формате без повторения большого количества информации, мы часто представляем столбцы в формате, подобном спискам.

Например, давайте предположим, что у нас есть несколько продуктов, и мы хотим сохранить список прошлых цен. Мы можем создать два столбца в CSV-файле: Product и Price:

Столбец «Цены» содержит список цен на каждый продукт, разделенных запятыми.

df = pd.DataFrame([{'Product': 'Coke', 'Prices': 100,123,101,105,99,94,98},{'Product': 'Pepsi', 'Prices': 101,104,104,101,99,99,99}])
print(df)

Кроме того, иногда мы представляем данные в столбце в виде массива.

Версия 0.25 предлагает DataFrame.explode() функцию, которая преобразует каждый элемент списка в строку, реплицируя значения индекса. Мы можем передать столбец в качестве параметра и ожидать, что он вернет фрейм данных, в котором индекс повторяется для каждой строки, а списки расширяются / разбиваются на строки.

df = df.assign(Prices=df.Prices.str.split(',')).explode('Prices')
print(df)

Эта функция может оказаться очень полезной.

3.5 Передача имен столбцов с пробелом в метод query ()

Иногда столбцы содержат пробел. Версия 0.25 предлагает расширенные функциональные возможности в DataFrame.query() методе, который может оценивать запрос столбцов, содержащих пробелы, заключая их в обратные кавычки.

Например, если ваш столбец называется FinTechExplained Views и вы хотите найти строки, в которых просмотры меньше 2, вы можете использовать обратные кавычки для ссылки на требуемый столбец:

df.query('`FinTechExplained Views` <2')

3.6 Rename () поддерживает возникновение ошибок

Мы можем использовать DataFrame.rename () для переименования столбцов фрейма данных. Что, если столбцы, которые мы хотим переименовать, не существуют во фрейме данных?

Версия 0.25 позволяет нам передавать параметр errors. Если установлено значение «поднять», возникает ошибка KeyError. KeyError - это словарь. Он содержит индекс или имена столбцов, которых нет в переименованном индексе.

Мы также можем передать значение как «ignore», которое также является значением по умолчанию. Функция игнорирования по существу скрывает ошибки, и ошибки не возникают во время операции переименования.

df.rename(columns={"FirstColumn": "a", "SecondColumn": "b", "DoesntExistColumn": "c"}, errors="raise")
Traceback (most recent call last):
KeyError: ['DoesntExistColumn'] not found in axis

В приведенном выше примере столбец DoesNotExist не существует во фрейме данных. В результате KeyError указывает имя столбца, который не удалось найти.

Если вы хотите понять обширный список функций Pandas, прочтите эту статью:



Если вы хотите получить хорошее представление о Python, прочтите эту статью:



Для более подробной информации, пожалуйста, просмотрите эту страницу.

Резюме

В этой статье показан список функций и улучшений, представленных в версии Pandas 0.25.0.

Надеюсь, это поможет.