看过来
《pandas 教程》 持续更新中,提供建议、纠错、催更等加作者微信: gairuo123(备注:pandas教程)和关注公众号「盖若」ID: gairuo。跟作者学习,请进入 Python学习课程。欢迎关注作者出版的书籍:《深入浅出Pandas》 和 《Python之光》。
电商类APP前端会设计两排icon(广告按钮),用来进行频道入口引导和活动入口引导。现有各个icon位置的UV数据:
# app 首页的 ICON 位 UV 数据
'''
icon uv
1 88
2 66
3 44
4 55
5 99
6 33
7 21
8 43
9 88
10 33
'''
其中icon列为位置顺序,1-5为第一排从左到右的位置,6-10为第二排从左到右的位置,现在要求将数据按直观的位置排列,并用背景颜色深度表示数据的大小。这个需求用pandas的样式(style)来实现,在使用样式前要对数据格式进行转换:
import pandas as pd
df = pd.read_clipboard()
(
df.assign(row=lambda x: x.icon>5)
.assign(icon=pd.Series([i for i in range(5)] * 2))
.pivot(index='row', columns='icon', values='uv')
.rename({True:'第二排', False:'第一排'})
)
'''
icon 0 1 2 3 4
row
第一排 88 66 44 55 99
第二排 33 21 43 88 33
'''
转换完成后直接使用style的background_gradient方法就可以了:
(
df.assign(row=lambda x: x.icon>5)
.assign(icon=pd.Series([i for i in range(5)] * 2))
.pivot(index='row', columns='icon', values='uv')
.rename({True:'第二排', False:'第一排'})
.style
.background_gradient(cmap='BuGn', vmin=20, vmax=100)
)
输出结果如下:
这个需求的难点是先对数据形状进行变换。
更新时间:2024-08-18 15:37:02 标签:pandas python 可视化