利用python對(duì)月餅數(shù)據(jù)進(jìn)行可視化(看看哪家最劃算)
前言
中秋節(jié),又稱拜月節(jié)、月光誕、月夕等,節(jié)期在每年的農(nóng)歷八月十五日(九月十)。
中秋節(jié)自古以來(lái)就有祭月、賞月、吃月餅、玩花燈、賞桂花、飲桂花酒等民俗,流傳經(jīng)久不息。
馬上有臨近中秋,這不得好好準(zhǔn)備~于是準(zhǔn)備對(duì)月餅數(shù)據(jù)進(jìn)行可視乎
數(shù)據(jù)
代碼
# 導(dǎo)包 import pandas as pd import numpy as np import re
# author:Dragon少年 # 導(dǎo)入爬取得到的數(shù)據(jù) df = pd.read_csv("月餅.csv", encoding='utf-8-sig', header=None) df.columns = ["商品名", "價(jià)格", "購(gòu)買人數(shù)", "店鋪", "地址"] # 去除重復(fù)的數(shù)據(jù) df.drop_duplicates(inplace=True) print(df.shape) # 刪除購(gòu)買人數(shù)0的記錄 df['購(gòu)買人數(shù)'] = df['購(gòu)買人數(shù)'].replace(np.nan,'0人付款') df['num'] = [re.findall(r'(\d+\.{0,1}\d*)', i)[0] for i in df['購(gòu)買人數(shù)']] # 提取數(shù)值 df['num'] = df['num'].astype('float') # 轉(zhuǎn)化數(shù)值型 # 提取單位(萬(wàn)) df['unit'] = [''.join(re.findall(r'(萬(wàn))', i)) for i in df['購(gòu)買人數(shù)']] # 提取單位(萬(wàn)) df['unit'] = df['unit'].apply(lambda x:10000 if x=='萬(wàn)' else 1) # 計(jì)算銷量 df['銷量'] = df['num'] * df['unit'] # 刪除沒(méi)有發(fā)貨地址的店鋪數(shù)據(jù) 獲取省份 df = df[df['地址'].notna()] df['省份'] = df['地址'].str.split(' ').apply(lambda x:x[0]) # 刪除多余的列 df.drop(['購(gòu)買人數(shù)', '地址', 'num', 'unit'], axis=1, inplace=True) # 重置索引 df = df.reset_index(drop=True) df.to_csv('月餅清洗數(shù)據(jù).csv')
# 導(dǎo)入包 from pyecharts.charts import Bar from pyecharts import options as opts # 計(jì)算月餅總銷量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()
# 導(dǎo)入包 from pyecharts.charts import Bar from pyecharts import options as opts # 計(jì)算銷量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): #按照淘寶推薦劃分價(jià)格區(qū)間 if x <= 50: return '50元以下' elif x <= 150: return '50-150元' elif x <= 500: return '150-500元' else: return '500元以上' df['price_range'] = df['價(jià)格'].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')) # 內(nèi)置富文本 pie1.add( series_name="銷量", radius=["35%", "55%"], data_pair=data_pair, label_opts=opts.LabelOpts(formatter='—占比ublnpf9mb%'), ) pie1.set_global_opts(legend_opts=opts.LegendOpts(pos_left="left", pos_top='30%', orient="vertical"), title_opts=opts.TitleOpts(title='不同價(jià)格月餅銷量占比-Dragon少年')) pie1.render("不同價(jià)格月餅銷量占比-Dragon少年.html") pie1.render_notebook()
from pyecharts.charts import Map # 計(jì)算銷量 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()
效果
尾語(yǔ)
到此這篇關(guān)于利用python對(duì)月餅數(shù)據(jù)進(jìn)行可視化的文章就介紹到這了,更多相關(guān)python對(duì)月餅數(shù)據(jù)可視化內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
- 利用Python進(jìn)行數(shù)據(jù)可視化常見(jiàn)的9種方法!超實(shí)用!
- Python數(shù)據(jù)可視化 pyecharts實(shí)現(xiàn)各種統(tǒng)計(jì)圖表過(guò)程詳解
- 利用Python繪制MySQL數(shù)據(jù)圖實(shí)現(xiàn)數(shù)據(jù)可視化
- python使用pyecharts庫(kù)畫(huà)地圖數(shù)據(jù)可視化的實(shí)現(xiàn)
- 利用Python代碼實(shí)現(xiàn)數(shù)據(jù)可視化的5種方法詳解
- Python數(shù)據(jù)可視化庫(kù)seaborn的使用總結(jié)
- Python數(shù)據(jù)可視化:箱線圖多種庫(kù)畫(huà)法
- python如何爬取網(wǎng)站數(shù)據(jù)并進(jìn)行數(shù)據(jù)可視化
- Python數(shù)據(jù)可視化之畫(huà)圖
- Python數(shù)據(jù)分析:手把手教你用Pandas生成可視化圖表的教程
相關(guān)文章
python實(shí)現(xiàn)簡(jiǎn)單的俄羅斯方塊
這篇文章主要為大家詳細(xì)介紹了python實(shí)現(xiàn)簡(jiǎn)單的俄羅斯方塊,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2022-01-01Python實(shí)現(xiàn)的連接mssql數(shù)據(jù)庫(kù)操作示例
這篇文章主要介紹了Python實(shí)現(xiàn)的連接mssql數(shù)據(jù)庫(kù)操作,結(jié)合實(shí)例形式分析了Python安裝pymssql模塊以及基于pymssql模塊連接sql2008 R2數(shù)據(jù)庫(kù)的具體操作技巧,需要的朋友可以參考下2018-08-08使用Python實(shí)現(xiàn)壓縮pptx的功能
當(dāng)處理大型PPTX文件時(shí),其中包含許多高分辨率照片時(shí),文件大小可能會(huì)顯著增加,為了解決這個(gè)問(wèn)題,我們可以使用Python編程語(yǔ)言和python-pptx庫(kù)來(lái)壓縮PPTX文件中的照片,下面我們就來(lái)看看具體操作吧2024-02-02在python3環(huán)境下的Django中使用MySQL數(shù)據(jù)庫(kù)的實(shí)例
下面小編就為大家?guī)?lái)一篇在python3環(huán)境下的Django中使用MySQL數(shù)據(jù)庫(kù)的實(shí)例。小編覺(jué)得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2017-08-08如何在django里上傳csv文件并進(jìn)行入庫(kù)處理的方法
這篇文章主要介紹了如何在django里上傳csv文件并進(jìn)行入庫(kù)處理的方法,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2019-01-01python數(shù)據(jù)可視化Seaborn畫(huà)熱力圖
這篇文章主要介紹了數(shù)據(jù)可視化Seaborn畫(huà)熱力圖,熱力圖的想法其實(shí)很簡(jiǎn)單,用顏色替換數(shù)字,下面我們來(lái)看看文章對(duì)操作過(guò)程的具體介紹吧,需要的小伙伴可以參考一下具體內(nèi)容,希望對(duì)你有所幫助2022-01-01