Улучшите внешний вид данных! Давайте посмотрим на эти стили в Pandas.

анализ данных
Улучшите внешний вид данных! Давайте посмотрим на эти стили в Pandas.

Публичный аккаунт WeChat: «Python Reading Finance»
Если у вас есть какие-либо вопросы или предложения, пожалуйста, оставьте сообщение в публичном аккаунте

ПандыstyleИспользование редко встречается в большинстве руководств, в основном используется для украшенияDataFrameиSeriesВывод может отображать результаты данных более интуитивно.

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

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

import pandas as pd
import numpy as np

data = data = pd.read_excel('./data/sales.xlsx')
data.head()

1.png

Функции в наборе данных: номер заказа, имя клиента, название товара, количество, цена за единицу, сумма и соответствующая дата покупки.

форматирование вывода

styleсерединаformatФункция может форматировать выходные данные, например, в наборе данных выше, чтобы найти среднюю и общую сумму, потраченную каждым клиентом, требуя два десятичных знака и отображая соответствующую валюту.

(data.groupby(['姓名'])['金额'].agg(['mean','sum'])
                             .head(5)
                             .style
                             .format('${0:,.2f}'))

2.png

Или найдите общий объем потребления каждого клиента (сохраните 2 знака после запятой) и его соответствующую долю (отображается в процентах).

consumer_sales = data.groupby('姓名')['金额'].agg(['sum']).reset_index()
consumer_sales['消费金额占比'] = consumer_sales['sum'] / consumer_sales['sum'].sum()
(consumer_sales.head(5)
              .style
              .format({'sum':'${0:,.0f}', '消费金额占比': '{:.2%}'}))

3.png

Выделите специальные значения

styleВы также можете выделить специальные значения в данных, например, выделить самое большое значение в данных (highlight_max), минимальное значение (highlight_min).

#求每个月的销售总金额,并分别用红色、绿色高亮显示最大值和最小值
monthly_sales = data.resample('M',on='日期')['金额'].agg(['sum']).reset_index()
monthly_sales['pct_of_total'] = monthly_sales['sum'] / data['金额'].sum()

format_dict = {'sum':'${0:,.0f}', '日期': '{:%Y-%m}', 'pct_of_total': '{:.2%}'}
(monthly_sales.style
              .format(format_dict)
              .highlight_max(color='#cd4f39')
              .highlight_min(color='lightgreen'))

4.png

Стиль уровня

использоватьstyleизbackground_gradientметод, вы также можете реализовать стиль цветовой шкалы отображения в условном форматировании, аналогичном Excel, и использовать глубину цвета для визуального представления размера данных.

import seaborn as sns

cm = sns.light_palette("green", as_cmap=True)

(data.groupby(['姓名'])[['数量','金额']]
     .agg(['sum'])
     .head(5)
     .style
     .background_gradient(cmap=cm))

5.png

стиль панели данных

Точно так же для стиля гистограммы в условном форматировании Excel вы можете использоватьstyleсерединаbarДля достижения аналогичного эффекта размер значения можно визуально отображать через длину цветной полосы.

(monthly_sales.style
              .format(format_dict)
              .bar(color='#FFA07A', vmin=100_000, subset=['sum'], align='zero')
              .bar(color='lightgreen', vmin=0, subset=['pct_of_total'], align='zero')
)

6.png

Спарклайны

Наконец, простая и легкая в использовании операция Sao -sparklinesОн может отображать мини-карту характеристик данных в виде строки.

Предположим, у меня сейчас есть такое требование, то есть я хочу видеть общее распределение количества покупок и суммы всех пользователей. При обычном мышлении его можно нарисовать в наглядном виде, но это немного сложно.sparklinesЭтого эффекта можно легко добиться.

Сначала нужно установитьsparklinesэта сумка

pip install sparklines

Поскольку для реализации требований необходимо использоватьgroupbyфункция, поэтому сначала определите функцию-обработчик

from sparklines import sparklines

# 定义sparklines函数用于展现数据分布
def sparkline_str(x):
    bins = np.histogram(x)[0]
    sl = ''.join(sparklines(bins))
    return sl

# 定义groupby之后的列名
sparkline_str.__name__ = "分布图"

data.groupby('姓名')[['数量', '金额']].agg(['mean', sparkline_str])

7.png

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

этоsparklinesФункция довольно крутая и практичная. Для более конкретного использования вы можете посмотретьsparklinesдокументация.

Использованная литература:ПБ Python.com/styling-disk…

Отсканируйте код, чтобы подписаться на официальный аккаунт"Питон Чтение Финансов", получите галантерею в первый раз!