用pandas创建出色彩缤纷的图形用户画面(GUI)

在本文的以下部分中,我们将探讨一种向Pandas数据框添加颜色和样式的方法。我们将重点放在应用颜色和表情符号上,利用类似于电子表格中常用的条件格式化方法。
 
通过这种策略,我们旨在增强数据的呈现方式,使信息的探索和理解不仅具有信息性,而且视觉上吸引人。
 
一、什么是Pandas Style?
Pandas Styler是Pandas库中的一个模块,提供了用于创建DataFrame的HTML样式表示的方法。该功能允许在可视化过程中自定义DataFrame的外观Pandas Styler 的核心功能在于根据特定条件突出显示、着色和格式化单元格,有助于直观识别数据集中的模式和趋势。
 

此外,Pandas Styler 以其能够通过生成使用HTML和CSS的可视化表示来协助设计DataFrame或系列而脱颖而出。这种功能简化了创建引人注目且定制化数据呈现方式,增强了可视体验,并使数据集中信息更易直观解释。

图片
接下来,我们将使用一组数据创建一个数据透视表的代码,并从中开始为其添加不同的样式和条件格式,就像在前面的图片中所看到的那样。
 
 
二、数据透视表
数据透视表是一种表格数据结构,它提供了另一个表中信息的汇总概览,根据一个变量组织数据,并显示与另一个变量相关联的值。
 
在这种特定情况下,数据透视表根据“吸烟者”列组织数据,并按客户在餐厅消费的日期对小费总额进行分类呈现。
简单示例

以下示例显示了“tips” DataFrame 中的 `pivot_table` 方法:

import pandas as pd
import seaborn as sns
# 创建表格
data = sns.load_dataset(‘tips’)
data_pivot = pd.pivot_table(
data,
index=‘smoker’,
columns=‘day’,
values=‘total_bill’,
aggfunc=‘sum’).reset_index()
data_pivot

图片
 
三、案例:苹果应用商店应用
在这个分析中,我们将使用’🍎 苹果应用商店应用’ 数据框架来探索透视表的创建和表格样式的定制。该数据集提供了关于苹果App Store 应用程序的详细见解,涵盖了从应用名称到大小、价格和评级等具体方面。我们的目标是有效地拆分信息,并同时运用增强呈现和理解数据效果的样式。
 

该数据集是从Kaggle下载而来,包含超过7000个苹果iOS移动应用程序详情。重要说明:这些数据是在2017年7月收集的。

图片
 
1、读取表格
在下面的代码块中,我们将通过读取CSV文件来创建一个DataFrame

import pandas as pd
import numpy as np
import math
import matplotlib.pyplot as plt

path=‘data/AppleStore.csv’
data =pd.read_csv(path,sep=‘;’)

2、数据透视表

在下一步中,我们将从一个数据框创建一个数据透视表。

# 过滤数据,仅保留前15个流派。
top_genre = data.value_counts(‘prime_genre’)[:15].index.tolist()
tmp = data.loc[data[‘prime_genre’].isin(top_genre),[‘prime_genre’,‘user_rating’,‘price’]]
# 创建一个新列,其中评分四舍五入到最接近的整数。
tmp[‘user_rating’] = [f’rating_{str(math.trunc(item))} for item in tmp[‘user_rating’]]
# 创建一个数据透视表
tmp_pivot = (
pd.pivot_table(
data = tmp,
columns=‘user_rating’,
index=‘prime_genre’,
values=‘price’,
aggfunc=‘mean’,
fill_value=0
).reset_index().round(2)
)
# 重命名列
tmp_pivot.columns.name=
# 打印数据透视表
tmp_pivot

图片
 
 
四、使用Pandas进行样式设置
现在我们将探讨Pandas中的`style`模块,该模块使我们能够增强DataFrame的视觉呈现。`style`模块提供了各种选项来修改数据的外观,允许我们自定义以下方面:

 

着色单元格:根据单元格值或条件应用不同颜色。
 
突出显示:强调特定行、列或值。
 
格式化:调整显示值的格式,包括精度和对齐方式。
 
条形图:在单元格内使用水平或垂直条形图表示数据。
1、为标题设置背景颜色

在本节中,我们将为标题和表格应用样式。因此,我们使用背景颜色来突出显示标题和表格的其余部分。

# 样式:更改列标题的背景颜色
headers = {
‘selector’: ‘th.col_heading’,
‘props’: ‘background-color: #5E17EB; color: white;’
}
index_style = {
‘selector’: ‘th.index_name’,
‘props’: ‘background-color: #5E17EB; color: white;’
}
tmp_pivot_style = (
tmp_pivot
.style
.set_table_styles([headers,index_style])
.set_properties(**{‘background-color’: ‘#ECE3FF’,‘color’: ‘black’})
)
tmp_pivot_style

图片

 

2、为特定单元格设置背景颜色
在下面的代码片段中,演示了如何使用 pandas 样式为我们 DataFrame 中的特定单元格设置自定义背景颜色

(
tmp_pivot
.style
.set_table_styles([headers, index_style])
.set_properties(**{‘background-color’: ‘#ECE3FF’, ‘color’: ‘black’})
.set_properties(**{‘background-color’: ‘#FD636B’, ‘color’: ‘white’},subset=pd.IndexSlice[4, ‘rating_5’])
)

图片
 
3、为数据框中最大/小值设置背景颜色

现在,我们将专注于突出显示DataFrame中的最大和最小值。因此,我们将为这些极端值分配独特的背景颜色,以便更快速、更直观地理解数据集。下面的代码片段演示了如何实现这种样式增强。

# 选择以’rating_’开头的列
columns = tmp_pivot.columns[tmp_pivot.columns.str.startswith(‘rating_’)]
# 获取最大值和最小值
max_value = tmp_pivot[columns].max().max()
min_value = tmp_pivot[columns].min().min()
# 为具有最大值的单元格设置样式
max_style = f’border: 4px solid #3BE8B0 !important;’
# 为具有最小值的单元格设置样式
min_style = f’background-color: #FF66C4; ‘
(
tmp_pivot
.style
.set_table_styles([headers, index_style])
.set_properties(**{‘background-color’: ‘#ECE3FF’, ‘color’: ‘black’})
.set_properties(**{‘background-color’: ‘#FD636B’, ‘color’: ‘white’}, subset=pd.IndexSlice[4, ‘rating_5’])
.applymap(lambda x: max_style if x == max_value else )
.applymap(lambda x: min_style if x == min_value else , subset=columns)
)

图片
4、风格:颜色背景渐变
在接下来的部分中,我们将深入探讨颜色映射的概念,它代表了以渐变方式排列的一系列颜色。调色板基本上是一个包含独特命名的一组颜色,其中最受欢迎的有[‘viridis’, ‘magma’, ‘Greens’, ‘Reds’]
 

创建这些颜色光谱背后的主要目标是增强数据的视觉表示。渐变中每种颜色都具有特定细微差别,有助于更加细致地呈现数据可视化体验。

import matplotlib.pyplot as plt
import numpy as np
# 定义颜色映射表
for cmap_item in [‘viridis’, ‘magma’,‘Greens’,‘Reds’]:
cmap = plt.get_cmap(cmap_item)
# 创建一个颜色渐变
gradient = np.linspace(0, 1, 256).reshape(1, -1)
# 显示颜色调色板
plt.figure(figsize=(10, 0.2))
plt.imshow(gradient, aspect=‘auto’, cmap=cmap)
plt.axis(‘off’)
plt.title(f’{cmap_item.capitalize()} Color Palette’, loc=‘left’, fontsize=9)
plt.show()

图片

图片

Viridis调色板:

 

现在,我们将为我们的数据透视表应用一个颜色渐变,让您可以观察使用Viridis调色板着色的方式。在这种情况下,较浅的颜色表示分布中较大的值,而较深的阴影对应于分布中较小的值。这种方法提供了一种直观传达数据大小的视觉呈现方式,使得更容易识别数据集中的模式和变化。

plt.get_cmap(‘viridis’,lut=20)

图片

(
tmp_pivot
.style
.set_table_styles([headers, index_style])
.background_gradient(cmap=‘viridis’,subset=columns)
)

图片

5、列中的彩色背景

在下一个代码块中,我们将通过为特定列引入不同颜色的背景来增强我们数据透视表的视觉呈现。这种技术有助于更好地突出和分类数据,使得从表格中获取见解变得更加容易。

(
tmp_pivot
.style
.set_table_styles([headers, index_style])
.set_properties(**{‘background-color’: ‘#FFCFC9’,‘color’:‘black’},subset=[‘rating_0’,‘rating_1’])
.set_properties(**{‘background-color’: ‘#FFF1B0’,‘color’:‘black’},subset=[‘rating_2’,‘rating_3’])
.set_properties(**{‘background-color’: ‘#BEEAE5’,‘color’:‘black’},subset=[‘rating_4’,‘rating_5’])
)

图片
6、颜色条

在这一部分中,我们将使用 style.bar 函数向我们的 DataFrame 中引入一个动态颜色条。颜色条提供了数据值的视觉表示,为不同数据范围分配不同的颜色。

(
tmp_pivot
.style
.set_table_styles([headers, index_style])
.set_properties(**{‘background-color’: ‘#ECE3FF’, ‘color’: ‘black’})
.set_properties(**{‘background-color’: ‘white’,‘color’:‘black’},subset=columns)
.bar(color=‘#FFCFC9’,subset=[‘rating_0’,‘rating_1’])
.bar(color=‘#FFF1B0’,subset=[‘rating_2’,‘rating_3’])
.bar(color=‘#BEEAE5’,subset=[‘rating_4’,‘rating_5’])
)

图片

发布者:股市刺客,转载请注明出处:https://www.95sca.cn/archives/102099
站内所有文章皆来自网络转载或读者投稿,请勿用于商业用途。如有侵权、不妥之处,请联系站长并出示版权证明以便删除。敬请谅解!

(0)
股市刺客的头像股市刺客
上一篇 2024 年 7 月 26 日
下一篇 2024 年 7 月 26 日

相关推荐

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注