此外,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

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

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=‘;’)
在下一步中,我们将从一个数据框创建一个数据透视表。
# 过滤数据,仅保留前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

着色单元格:根据单元格值或条件应用不同颜色。 突出显示:强调特定行、列或值。 格式化:调整显示值的格式,包括精度和对齐方式。 条形图:在单元格内使用水平或垂直条形图表示数据。
在本节中,我们将为标题和表格应用样式。因此,我们使用背景颜色来突出显示标题和表格的其余部分。
# 样式:更改列标题的背景颜色
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

(
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’])
)

现在,我们将专注于突出显示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)
)

创建这些颜色光谱背后的主要目标是增强数据的视觉表示。渐变中每种颜色都具有特定细微差别,有助于更加细致地呈现数据可视化体验。
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)
)
在下一个代码块中,我们将通过为特定列引入不同颜色的背景来增强我们数据透视表的视觉呈现。这种技术有助于更好地突出和分类数据,使得从表格中获取见解变得更加容易。
(
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’])
)

在这一部分中,我们将使用 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
站内所有文章皆来自网络转载或读者投稿,请勿用于商业用途。如有侵权、不妥之处,请联系站长并出示版权证明以便删除。敬请谅解!