首页 好物正文

可视化Python分析中秋月饼,这几种口味才是yyds

admin 好物 2022-10-23 14:27:37 516 0

中秋月饼销量、口味分布效果图

大家好,我是【Python当打之年】

中秋节,又称祭月节、月光诞、月夕、秋节、仲秋节、拜月节、月娘节、月亮节、团圆节等,是中国民间的传统节日。自古便有祭月、赏月、吃月饼、玩花灯、赏桂花、饮桂花酒等民俗,流传至今,经久不息。

本期我们通过分析某宝中秋月饼的销售情况,看看哪些口味月饼卖得好哪些地方月饼卖得好,希望对小伙伴们有所帮助。

涉及到的库:

Pandas— 数据处理Pyecharts— 数据可视化jieba— 分词collections— 数据统计

可视化部分:

Bar— 柱状图Pie— 饼状图Map— 地图Stylecloud— 词云图

1. 导入模块

importreimportjiebaimportstylecloudimportnumpy as npimportpandas as pd from collectionsimportCounter from pyecharts.chartsimportBar from pyecharts.chartsimportMap from pyecharts.chartsimportPie from pyecharts.chartsimportGrid from pyecharts.chartsimportPage from pyecharts.componentsimportImage from pyecharts.chartsimportWordCloud from pyechartsimportoptions as opts from pyecharts.globalsimportSymbolType from pyecharts.commons.utilsimportJsCode

2. Pandas数据处理

2.1 读取数据

df = pd.read_excel("月饼.xlsx") df.head(10)

结果:

2.2 去除重复值

print(df.shape)df.drop_duplicates(inplace=True)print(df.shape)

(4520, 5)(1885, 5)

一共有4520条数据,去重后还有1885条数据(某宝一个店铺会在不同页面推荐,导致重复数据比较多)。

2.3 空值处理

处理购买人数为空的记录:

df[付款情况] = df[付款情况].replace(np.nan,0人付款)

2.4 处理付款情况字段

df[df[付款情况].str.contains("万")]

付款人数超过10000后会直接用"万"替代,这里我们需要将其恢复,直接转换为销量(销量=售价*人数):

提取数值df[num] = [re.findall(r(\d+\.{0,1}\d*), i)[0]foriindf[付款情况]] df[num] = df[num].astype(float)提取单位(万)df[unit] = [.join(re.findall(r(万), i))foriindf[付款情况]] df[unit] = df[unit].apply(lambdax:10000ifx==else1)计算销量df[销量] = df[num] * df[unit] df = df[df[地址].notna()] df[省份] = df[地址].str.split().apply(lambdax:x[0])删除多余的列df.drop([付款情况,num,unit], axis=1, inplace=True)重置索引df = df.reset_index(drop=True)

结果:

3. Pyecharts数据可视化

3.1 月饼商品销量Top10

代码:

shop_top10= df.groupby(商品名称)[销量].sum().sort_values(ascending=False).head(10) bar0= ( Bar() .add_xaxis(shop_top10.index.tolist()[::-1]) .add_yaxis(sales_num, shop_top10.values.tolist()[::-1]) .reversal_axis() .set_global_opts(title_opts=opts.TitleOpts(title=月饼商品销量Top10), xaxis_opts=opts.AxisOpts(axislabel_opts=opts.LabelOpts(rotate=-30))) .set_series_opts(label_opts=opts.LabelOpts(position=right)) )

效果:

商品名称太长显示不全,我们调整一下边距

bar1 = ( Bar() .add_xaxis(shop_top10.index.tolist()[::-1]) .add_yaxis(sales_num, shop_top10.values.tolist()[::-1],itemstyle_opts=opts.ItemStyleOpts(color=JsCode(color_js))) .reversal_axis() .set_global_opts(title_opts=opts.TitleOpts(title=月饼商品销量Top10), xaxis_opts=opts.AxisOpts(axislabel_opts=opts.LabelOpts(rotate=-30)), ) .set_series_opts(label_opts=opts.LabelOpts(position=right)) )将图形整体右移grid = ( Grid() .add(bar1, grid_opts=opts.GridOpts(pos_left=45%, pos_right=10%)) )

这样是不是好多了。

还可以来些其他(比如:形状)设置:

3.2 月饼销量排名TOP10店铺

代码:

shop_top10 = df.groupby(店铺名称)[销量].sum().sort_values(ascending=False).head(10) bar3 = ( Bar(init_opts=opts.InitOpts( width=800px, height=600px,)) .add_xaxis(shop_top10.index.tolist()) .add_yaxis(, shop_top10.values.tolist(), category_gap=30%, ) .set_global_opts( xaxis_opts=opts.AxisOpts(axislabel_opts=opts.LabelOpts(rotate=-30)), title_opts=opts.TitleOpts( title=月饼销量排名TOP10店铺, pos_left=center, pos_top=4%, title_textstyle_opts=opts.TextStyleOpts( color=ed1941, font_size=16)), visualmap_opts=opts.VisualMapOpts( is_show=False, max_=600000, range_color=["CCD3D9","E6B6C2","D4587A","FF69B4","DC364C"] ), ) ) bar3.render_notebook()

效果:

稻香村的月饼销量遥遥领先。

3.3 全国各地区月饼销量

province_num = df.groupby(省份)[销量].sum().sort_values(ascending=False) map_chart = Map(init_opts=opts.InitOpts(theme=light, width=800px, height=600px)) map_chart.add(, [list(z)forz in zip(province_num.index.tolist(), province_num.values.tolist())], maptype=china, is_map_symbol_show=False, itemstyle_opts={normal: {shadowColor:rgba(0, 0, 0, .5),阴影颜色shadowBlur:5,阴影大小shadowOffsetY:0,Y轴方向阴影偏移shadowOffsetX:0,x轴方向阴影偏移borderColor:fff} } ) map_chart.set_global_opts( visualmap_opts=opts.VisualMapOpts( is_show=True, is_piecewise=True, min_ =0, max_ =1, split_number =5, series_index=0, pos_top=70%, pos_left=10%, range_text=[销量(份):,], pieces=[ {max:2000000,min:200000,label:> 200000,color:990000}, {max:200000,min:100000,label:100000-200000,color:CD5C5C}, {max:100000,min:50000,label:50000-100000,color:F08080}, {max:50000,min:10000,label:10000-50000,color:FFCC99}, {max:10000,min:0,label:0-10000,color:FFE4E1}, ], ), legend_opts=opts.LegendOpts(is_show=False), tooltip_opts=opts.TooltipOpts( is_show=True, trigger=item, formatter={b}:{c}), title_opts=dict( text=全国各地区月饼销量, left=center, top=5%, textStyle=dict( color=DC143C)) ) map_chart.render_notebook()

结果:

从地域分布图来看,店铺主要分布在北京、山东、浙江、广东、云南等东南地区。

3.4 不同价格区间的月饼销量占比

可以看到,50以下的月饼销量占比达到了52%,超过了半数的月饼售价在50元以内,100以下的月饼销量占比更是达到了85%之多,虽然也有价格在1000元以上的,但整体价格还是比较实惠的。

3.5 月饼口味分布

流心、五仁、蛋黄莲蓉、豆沙 yyds!!!

3.6 词云图

END

以上就是本期为大家整理的全部内容了,赶快练习起来吧,喜欢的朋友可以点赞、转发,也可以在评论区留言相互交流。文章首发公众号Python当打之年,每天都有python编程技巧推送,希望大家可以喜欢。

提前祝各位朋友中秋节快乐!

祝各位朋友中秋节快乐!

中秋节快乐!

健康食品 产品推荐 洗护测评 知识科普

版权声明 1、本网站名称:三九知识
2、本站永久网址:www.1puu.com
3、本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任
4、如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 aaw4008@foxmail.com 网站右下角【投诉删除】可进入实时客服
5、本站一律禁止以任何方式发布或转载任何违法的相关信息,访客发现请向站长举报
本文链接:http://1puu.com/post/1413.html