前言 嗨嘍~大家好呀,這裡是魔王吶 ! 中秋節,又稱拜月節、月光誕、月夕等,節期在每年的農曆八月十五日(九月十)。 中秋節自古以來就有祭月、賞月、吃月餅、玩花燈、賞桂花、飲桂花酒等民俗,流傳經久不息。 馬上有臨近中秋,這不得好好準備~於是準備對月餅數據進行可視乎 數據 數據集、源碼、解答加Q君羊:9 ...
前言
嗨嘍~大家好呀,這裡是魔王吶 !
中秋節,又稱拜月節、月光誕、月夕等,節期在每年的農曆八月十五日(九月十)。
中秋節自古以來就有祭月、賞月、吃月餅、玩花燈、賞桂花、飲桂花酒等民俗,流傳經久不息。
馬上有臨近中秋,這不得好好準備~於是準備對月餅數據進行可視乎
數據
數據集、源碼、解答加Q君羊:926207505 點擊藍字加入【python學習裙】
代碼
# 導包 import pandas as pd import numpy as np import re # author:Dragon少年 # 導入爬取得到的數據 df = pd.read_csv("月餅.csv", encoding='utf-8-sig', header=None) df.columns = ["商品名", "價格", "購買人數", "店鋪", "地址"] # 去除重覆的數據 df.drop_duplicates(inplace=True) print(df.shape) # 刪除購買人數0的記錄 df['購買人數'] = df['購買人數'].replace(np.nan,'0人付款') 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) df.to_csv('月餅清洗數據.csv') # 導入包 from pyecharts.charts import Bar from pyecharts import options as opts # 計算月餅總銷量Top10的店鋪 shop_top10 = df.groupby('店鋪')['銷量'].sum().sort_values(ascending=False).head(10) # 繪製柱形圖 bar1 = Bar(init_opts=opts.InitOpts(width='600px', height='450px')) bar1.add_xaxis(shop_top10.index.tolist()) bar1.add_yaxis('銷量', shop_top10.values.tolist()) bar1.set_global_opts(title_opts=opts.TitleOpts(title='銷量Top10店鋪-Dragon少年'), xaxis_opts=opts.AxisOpts(axislabel_opts=opts.LabelOpts(rotate=-30))) bar1.render("銷量Top10店鋪-Dragon少年.html") bar1.render_notebook() # 導入包 from pyecharts.charts import Bar from pyecharts import options as opts # 計算銷量top10月餅 shop_top10 = df.groupby('商品名')['銷量'].sum().sort_values(ascending=False).head(10) # 繪製柱形圖 bar0 = Bar(init_opts=opts.InitOpts(width='750px', height='450px')) bar0.add_xaxis(shop_top10.index.tolist()) bar0.add_yaxis('銷量', shop_top10.values.tolist()) bar0.set_global_opts(title_opts=opts.TitleOpts(title='銷量Top10月餅-Dragon少年'), xaxis_opts=opts.AxisOpts(axislabel_opts=opts.LabelOpts(rotate=-30))) bar0.render("銷量Top10月餅-Dragon少年.html") bar0.render_notebook() from pyecharts.charts import Pie def price_range(x): #按照淘寶推薦劃分價格區間 if x <= 50: return '50元以下' elif x <= 150: return '50-150元' elif x <= 500: return '150-500元' else: return '500元以上' df['price_range'] = df['價格'].apply(lambda x: price_range(x)) price_cut_num = df.groupby('price_range')['銷量'].sum() data_pair = [list(z) for z in zip(price_cut_num.index, price_cut_num.values)] print(data_pair) # 餅圖 pie1 = Pie(init_opts=opts.InitOpts(width='750px', height='350px')) # 內置富文本 pie1.add( series_name="銷量", radius=["35%", "55%"], data_pair=data_pair, label_opts=opts.LabelOpts(formatter='{b}—占比{d}%'), ) pie1.set_global_opts(legend_opts=opts.LegendOpts(pos_left="left", pos_top='30%', orient="vertical"), title_opts=opts.TitleOpts(title='不同價格月餅銷量占比-Dragon少年')) pie1.render("不同價格月餅銷量占比-Dragon少年.html") pie1.render_notebook() from pyecharts.charts import Map # 計算銷量 province_num = df.groupby('省份')['銷量'].sum().sort_values(ascending=False) # 繪製地圖 map1 = Map(init_opts=opts.InitOpts(width='950px', height='600px')) map1.add("", [list(z) for z in zip(province_num.index.tolist(), province_num.values.tolist())], maptype='china' ) map1.set_global_opts(title_opts=opts.TitleOpts(title='各省月餅銷量分佈-Dragon少年'), visualmap_opts=opts.VisualMapOpts(max_=1500000) ) map1.render("各省月餅銷量分佈-Dragon少年.html") map1.render_notebook()
效果
尾語
要成功,先發瘋,下定決心往前沖!
學習是需要長期堅持的,一步一個腳印地走向未來!
未來的你一定會感謝今天學習的你。
—— 心靈雞湯
本文章到這裡就結束啦~感興趣的小伙伴可以複製代碼去試試哦