>  기사  >  백엔드 개발  >  시각화 | Python은 추석 월병을 분석합니다. 이러한 맛은 yyds입니다!

시각화 | Python은 추석 월병을 분석합니다. 이러한 맛은 yyds입니다!

Python当打之年
Python当打之年앞으로
2023-08-10 15:25:061225검색

시각화 | Python은 추석 월병을 분석합니다. 이러한 맛은 yyds입니다!


중추절이라고도 알려진 달, 달빛 축제, 가을 축제, 중추절 가을 축제, 달 숭배 축제, 월양 축제, 달 축제, 동창회 등은 중국 전통 민속 축제입니다. 예로부터 달을 숭배하고, 달을 감상하고, 월병을 먹고, 등불을 가지고 놀고, 계수나무 감상, 계수나무주 마시기 등의 민속풍습이 오늘날까지 전해져 오랫동안 지속되어 왔다. 이번 호에서는
어떤 맛의 월병이 잘 팔리는지, 어떤 곳이 잘 팔리는지를 알아보기 위해 모바오 추석 월병 매출을 분석해보겠습니다. 도움이 되었으면 좋겠습니다. 내 친구들이 도와줍니다.
관련 라이브러리:
  • Pandas

    — 데이터 처리

  • Pyecharts

    — 데이터 시각화

  • jieba — 단어 분할
  • collections — 데이터 통계

시각화 부분:

  • Bar - 막대형 차트
  • Pie - 원형 차트
  • Map— 지도
  • Stylecloud — 워드 클라우드
1. 모듈 가져오기

import re
import jieba
import stylecloud
import numpy as np
import pandas as pd
from collections import Counter
from pyecharts.charts import Bar
from pyecharts.charts import Map 
from pyecharts.charts import Pie
from pyecharts.charts import Grid
from pyecharts.charts import Page
from pyecharts.components import Image
from pyecharts.charts import WordCloud
from pyecharts import options as opts 
from pyecharts.globals import SymbolType
from pyecharts.commons.utils import JsCode
2. 팬더 데이터 처리

2.1 데이터 읽기
df = pd.read_excel("月饼.xlsx")
df.head(10)

결과:

시각화 | Python은 추석 월병을 분석합니다. 이러한 맛은 yyds입니다!
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("万")]
시각화 | Python은 추석 월병을 분석합니다. 이러한 맛은 yyds입니다!

付款人数超过10000后会直接用""替代,这里我们需要将其恢复:

# 提取数值
df['num'] = [re.findall(r'(\d+\.{0,1}\d*)', i)[0] for i in df['付款情况']] 
df['num'] = df['num'].astype('float')

# 提取单位(万)
df['unit'] = [''.join(re.findall(r'(万)', i)) for i in df['付款情况']] 
df['unit'] = df['unit'].apply(lambda x:10000 if x=='万' else 1)

# 计算销量
df['销量'] = df['num'] * df['unit']
df = df[df['地址'].notna()]
df['省份'] = df['地址'].str.split(' ').apply(lambda x:x[0])

# 删除多余的列
df.drop(['付款情况', 'num', 'unit'], axis=1, inplace=True)

# 重置索引
df = df.reset_index(drop=True)

结果:

시각화 | Python은 추석 월병을 분석합니다. 이러한 맛은 yyds입니다!


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'))
)

效果:

시각화 | Python은 추석 월병을 분석합니다. 이러한 맛은 yyds입니다!

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

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%')) 
)
시각화 | Python은 추석 월병을 분석합니다. 이러한 맛은 yyds입니다!
这样是不是好多了。

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

시각화 | Python은 추석 월병을 분석합니다. 이러한 맛은 yyds입니다!

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()
效果:

시각화 | Python은 추석 월병을 분석합니다. 이러한 맛은 yyds입니다!

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

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) for z 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()

结果:

시각화 | Python은 추석 월병을 분석합니다. 이러한 맛은 yyds입니다!

지리적 분포도에서 매장은 주로 Beijing, Shandong, Zhejiang, Guangdong, Yunnan 및 기타 남동부 지역에 분포되어 있습니다.
3.4 가격대별 월병 판매량 비율

시각화 | Python은 추석 월병을 분석합니다. 이러한 맛은 yyds입니다!

可以看到,50以下的月饼销量占比达到了52%,超过了半数的月饼售价在50元以内,100아래 월병 판매율85%에 도달했습니다. 1,000위안이 넘는 것도 있지만, 전체적인 가격은 여전히 ​​비교적 저렴합니다.
3.5 월병 맛 분포

시각화 | Python은 추석 월병을 분석합니다. 이러한 맛은 yyds입니다!

Liuxin, 다섯알, 계란노른자연꽃장, 된장요! ! ! 3.6 워드 클라우드 다이어그램 온라인으로 실행 가능(모든 코드 포함)
:
시각화 | Python은 추석 월병을 분석합니다. 이러한 맛은 yyds입니다!
https://www.heywhale.com/mw/project/61404e0ff0de6200174ada20

위 내용은 시각화 | Python은 추석 월병을 분석합니다. 이러한 맛은 yyds입니다!의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
이 기사는 Python当打之年에서 복제됩니다. 침해가 있는 경우 admin@php.cn으로 문의하시기 바랍니다. 삭제