给报告加分:善用高大上的图表

在做专题分析或者业务汇报时,数据分析师不仅要取数分析,还要产出完整的PPT报告 。报告做到什么程度,主要看领导风格 。有的不在乎报告美观度,正确的数据、科学的分析、可落地的结论和建议、有逻辑的报告框架这4点达成了就差不多了,报告不丑就行 。有的比较在乎报告美观度,除了以上4点,数据分析师还要在报告美化上下功夫 。而报告美化的技巧之一就是使用高大上的图表来展示数据 , 本文就总结下一些高大上的图表的具体应用场景和Python绘图过程 。

1. 地图

应用场景:

主要用于展示各国家数据、各省份数据、各城市数据等

Python绘图过程:

# 假设我们有一份2021年全国各省GDP的数据df = pd.read_excel(r'.2021年全国各省GDP.xlsx')df.head()# 绘制GDP地图# 创建数据对data_pair = [list(z) for z in zip(df['省份'], df['GDP(亿元)'])]# 创建地图c = (Map().add(series_name='GDP(亿元)',data_pair=data_pair,maptype='china',).set_global_opts(title_opts=opts.TitleOpts('2021年全国各省GDP'),visualmap_opts=opts.VisualMapOpts(min_=min(df['GDP(亿元)']),max_=max(df['GDP(亿元)']),range_text=['高', '低'],pos_top='center',is_piecewise=True,pieces=[{'min':0, 'max':10000, 'label':'0-1W', 'color':'#dae8ff'},{'min':10000, 'max':50000, 'label':'1W-5W', 'color':'#b6d2ff'},{'min':50000, 'max':80000, 'label':'5W-8W', 'color':'#aacbff'},{'min':80000, 'max':100000, 'label':'8W-10W', 'color':'#6da6ff'},{'min':100000, 'max':150000, 'label':'10W-15W', 'color':'#3d89ff'},]),).set_series_opts(label_opts=opts.LabelOpts(is_show=True),showLegendSymbol=False,))c.render("2021年全国各省GDP地图.html")#保存到本地c.render_notebook()#在notebook中显示

源数据:


给报告加分:善用高大上的图表



图表:
给报告加分:善用高大上的图表



2. 桑基图

应用场景:

主要用于展示页面流转数据、用户迁移数据、构成数据等

Python绘图过程:

# 假设我们有一份用户等级迁移数据customer_level = pd.DataFrame({'cst_grp_from': ['1月_M0','1月_M0','1月_M0','1月_M1','1月_M1','1月_M1','1月_M1','1月_M1','1月_M2','1月_M2','1月_M2','1月_M2','1月_M2','1月_M2','1月_M3','1月_M3','1月_M3','1月_M3','1月_M3','1月_M3'],'cst_grp_to': ['2月_M0','2月_M1','2月_M2','2月_M0','2月_M1','2月_M2','2月_M3','2月_M4','2月_M0','2月_M1','2月_M2','2月_M3','2月_M4','2月_M5','2月_M0','2月_M1','2月_M2','2月_M3','2月_M4','2月_M5'],'cnt': np.random.randint(10000, 50000, 20)})customer_level.head()# 绘制用户等级迁移桑基图# 创建nodesnode_contents = sorted(list(set(customer_level['cst_grp_from'].tolist()customer_level['cst_grp_to'].tolist())))nodes = [{'name': x} for x in node_contents]# 创建linkslinks = [{'source': x, 'target': y, 'value': z} for x, y, z in zip(customer_level['cst_grp_from'], customer_level['cst_grp_to'], customer_level['cnt'])]links# 创建桑基图c = (Sankey().add(series_name='数量',nodes=nodes,links=links,linestyle_opt=opts.LineStyleOpts(opacity=0.3, curve=0.4, color="source"),label_opts=opts.LabelOpts(position="right"),).set_global_opts(title_opts=opts.TitleOpts(title="用户等级迁移")))c.render("用户等级迁移桑基图.html")#保存到本地c.render_notebook()#在notebook中显示

源数据:


给报告加分:善用高大上的图表



图表:
给报告加分:善用高大上的图表



3. 漏斗图

应用场景:

主要用于展示转化数据等

Python绘图过程:

# 假设我们有一份按月的贷款转化数据df = pd.DataFrame({'月份': ['2022-10', '2022-11', '2022-12'],'注册': np.random.randint(low=5000, high=6000, size=3),'申请': np.random.randint(low=4000, high=5000, size=3),'通过': np.random.randint(low=3000, high=4000, size=3),'放款': np.random.randint(low=2000, high=3000, size=3),})df# 绘制12月的贷款转化漏斗图data = https://www.itzhengshu.com/ppt/df[df['月份']=='2022-12'].drop('月份', axis=1)data_pair = [list(z) for z in zip(list(data.columns), list(map(int, list(data.iloc[0, :].values))))]c = (Funnel().add(series_name="人数",data_pair=data_pair,gap=2,tooltip_opts=opts.TooltipOpts(formatter="{a}
{b} : {c}"),label_opts=opts.LabelOpts(is_show=True, position="inside"),itemstyle_opts=opts.ItemStyleOpts(border_color="#fff", border_width=1),).set_global_opts(title_opts=opts.TitleOpts(title="12月贷款转化漏斗")))c.render("12月的贷款转化漏斗.html")#保存到本地c.render_notebook()#在notebook中显示

源数据:


给报告加分:善用高大上的图表



图表:
给报告加分:善用高大上的图表



4. 词云图

应用场景:

主要用于展示商品评论数据、新闻话题热度数据等

Python绘图过程:

# 假设我们有一份苹果iPhone13的用户评价数据df = pd.DataFrame({'评价': ['外观', '续航', '服务', '清晰度', '手感', '散热', '系统', '游戏', '重量', '音效', '拍照'],'数量': np.random.randint(low=10000, high=1000000, size=11)})df.head()# 绘制评价数据的词云图words = list(zip(df['评价'], df['数量']))c = (WordCloud().add(series_name="数量",data_pair=words,word_size_range=[10, 100],shape=SymbolType.DIAMOND).set_global_opts(title_opts=opts.TitleOpts(title="iPhone13评价")))c.render("iPhone13评价词云图.html")#保存到本地c.render_notebook()#在notebook中显示

源数据:


给报告加分:善用高大上的图表

【给报告加分:善用高大上的图表】

图表:
给报告加分:善用高大上的图表



5. 热力图

应用场景:

主要用于展示相关度数据、同级比较数据等

Python绘图过程:

# 假设我们有一份产品销售数据df = pd.DataFrame({'日期': pd.date_range(start='2022-12-01', end='2022-12-31'),'产品A': np.random.randint(low=100, high=1000, size=31),'产品B': np.random.randint(low=100, high=1000, size=31),'产品C': np.random.randint(low=100, high=1000, size=31),'产品D': np.random.randint(low=100, high=1000, size=31),'产品E': np.random.randint(low=100, high=1000, size=31),})df.head()# 计算产品之间的相关系数corr = df.corr()# 绘制相关系数热力图plt.figure(figsize=(8, 6), dpi=100)heatmap = sns.heatmap(data=corr,vmin=-1,vmax=1,cmap=sns.diverging_palette(0, 230, 90, 60, as_cmap=True),#网上找的一个比较清晰好看的配色方案annot=True,fmt='.2f',annot_kws={'size':10},linewidths=2,cbar_kws={'shrink': .8},square=True,mask=np.triu(np.ones_like(corr, dtype=bool)),#只显示对脚线下面部分图)heatmap_fig = heatmap.get_figure()heatmap_fig.savefig('产品相关系数热力图.png')

源数据:


给报告加分:善用高大上的图表



图表:
给报告加分:善用高大上的图表



6. 箱线图

应用场景:

主要用于展示数据分布,比单一的平均值好

Python绘图过程:

# 假设我们有某3家公司的员工工资数据fk = Faker(locale='zh-CN')#用于构造虚假数据df = pd.DataFrame({'公司': np.random.choice(['华为', '腾讯', '阿里'], size=100),'姓名': [fk.name() for i in range(100)],'工资': np.random.randint(low=5000, high=50000, size=100)})df.head()# 绘制3家公司的员工工资的箱线图box = sns.boxplot(data=https://www.itzhengshu.com/ppt/df, x='公司', y='工资', palette='Set2')box_fig = box.get_figure()box_fig.savefig('员工工资箱线图.png')

源数据:


给报告加分:善用高大上的图表



图表:
给报告加分:善用高大上的图表



7. 其他图表

还有一些在特定场景下很适合的图表,比如帕累托图(柱线组合图)、瀑布图、字母饼图、复合条饼图、雷达图、旭日图等,这些用Excel就能很容易画出来 , 不需要借助诸如Python等工具 , 如下图所示,这里就不一一展示了 。
给报告加分:善用高大上的图表



题外话

话说回来,现在一些大厂已经开始反内卷了,反对在PPT上耗费时间,只产出了一点有价值的结论,却花费了更多的时间在展示它上面,不如将时间投入到分析和挖掘上,获得更多有价值的结论和建议,用PPT还不如用Excel来的快速高效 。不过,具体怎么做,可能还要看领导看场景 。

相关经验推荐