首页 > 编程语言 > 详细

Python数据可视化:拉面数据分析

时间:2020-09-29 17:44:08      阅读:37      评论:0      收藏:0      [点我收藏+]

前言

本文的文字及图片来源于网络,仅供学习、交流使用,不具有任何商业用途,版权归原作者所有,如有问题请及时联系我们以作处理。

数据准备

今天我们就用一组实战数据来画出上图,数据集是一份拉面数据集。没错,就是下面的拉面。

技术分享图片

 

数据来源https://www.theramenrater.com/(拉面爱好者)的评论,数据集预览如下,该数据集可以来分析各个国家的拉面店评分以及风格等。

技术分享图片

 

本案例需要分析拉面品牌数量前十的国家(或地区)的拉面店平均评分星级。为了达到上述分析目的,我们需要对数据进行简单的处理:

  • 读取数据后,将Stars列中评分为Unrated的替换为3分
  • 按照国家进行统计,求出评分个数,以及均值
  • 降序,选出Top 10
file = ramen-ratings.csv
df = pd.read_csv(file)
df[Stars].replace({Unrated: 3}, inplace=True)
df[Stars] = pd.to_numeric(df[Stars])
print(df.info())
# get top 10
df_stars = df.groupby(by=Country).agg({Stars: [count, mean]})
df_stars.sort_values(by=(Stars, count), ascending=False, inplace=True)
print(df_stars.head(10))
top_10 = df_stars.iloc[0:10, :]

 

最后我们的数据预览如下:

技术分享图片

 

绘制组合图Combo Chart

上面的组合图包含柱状图和曲线图, 采用barplot 和lineplot可以轻易分别画出。

关键问题是如何进行组合。这里有个小技巧:所谓组合,其实是障眼法,只不过是两幅图的x轴重叠罢了。在matplotlib里面,可以采用twinx来共享x轴,y轴的次坐标与主坐标分布两侧。

所以知道上述技巧后,代码的编写就是轻而易举的事情。

# standard plot
fig, ax1 = plt.subplots(figsize=(10, 6))
sns.barplot(data=top_10, x=top_10.index, y=(Stars, count), ax=ax1)
ax1.set_xlabel(Country/Area)
ax1.set_ylabel(Count)
ax1.set_ylim([0, 400])
ax2 = ax1.twinx() # share the x axis
print(top_10[(Stars, mean)])
sns.lineplot(data=top_10, x=top_10.index, y=top_10[(
    Stars, mean)], marker="*", color=k, markersize=12)
ax2.set_ylabel(Rate)
ax2.set_ylim([0, 5])
ax1.set_title(Ramen Quantities & Ratings in Areas)
plt.tight_layout()
plt.show()

 

技术分享图片

 

自定义星级Ticks

上面的标准组合图中右侧的次坐标Ticks 默认为数字,分别表示0-5个星级评分。我们可以自定义Ticks 让其显示更加友善----直接替换为★级个数。比如★★★★★ (五星)。

两个问题摆在我们面前:

  • ★ 怎么画?
  • ★怎么替换Ticks 标签?

答案很简单,matplotlib都考虑到了。

数学里面包含大量的特殊符号,比如≥,⊙,?,?等你想的到想不到的符号,都在TeX符号集中包含,像★ 就可以用‘$\bigstar$’来表达。

怎么替换Ticks 标签?当然是用函数了,我们写一个函数,将数字替换为★级个数,然后用yaxis.set_major_formatter调用该函数即可。

def stars(x,pos):
    return r$\bigstar$ * int(x)
ax2.yaxis.set_major_formatter(FuncFormatter(stars))

 

技术分享图片

 

这样,右侧次坐标的Ticks 换成了星级★符号。

总结

本文展示了matplotlib 的一些画图小技巧,并且在拉面数据集上进行了展示:

  • 通过共享x轴,实现柱状图和曲线图的组合绘制,类似Excel组合图
  • 通过LaTex符号以及自定义Ticks ,将Ticks 替换为星级★符号,更加美观

以下文章来源于Python小例子,作者 无尘

转载地址

https://blog.csdn.net/fei347795790?t=1

Python数据可视化:拉面数据分析

原文:https://www.cnblogs.com/hhh188764/p/13750434.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!