利用python對月餅數據進行可視化(看看哪家最劃算)
更新時間:2022年09月09日 09:31:21 作者:魔王不會哭
通過python對數據進行可視化展示,可直觀地展示數據之間的關系,為用戶提供更多的信息,這篇文章主要給大家介紹了關于利用python對月餅數據進行可視化的相關資料,看看哪家最劃算,需要的朋友可以參考下
前言
中秋節(jié),又稱拜月節(jié)、月光誕、月夕等,節(jié)期在每年的農歷八月十五日(九月十)。
中秋節(jié)自古以來就有祭月、賞月、吃月餅、玩花燈、賞桂花、飲桂花酒等民俗,流傳經久不息。
馬上有臨近中秋,這不得好好準備~于是準備對月餅數據進行可視乎
數據


代碼
# 導包 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']
# 刪除沒有發(fā)貨地址的店鋪數據 獲取省份
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): #按照淘寶推薦劃分價格區(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['價格'].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='—占比wppm3vysvbp%'),
)
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()
效果



尾語
到此這篇關于利用python對月餅數據進行可視化的文章就介紹到這了,更多相關python對月餅數據可視化內容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!
相關文章
教你怎么用Python處理excel實現(xiàn)自動化辦公
這篇文章主要介紹了教你怎么用Python處理excel實現(xiàn)自動化辦公,文中有非常詳細的代碼示例,對正在學習python的小伙伴們有非常好的幫助,需要的朋友可以參考下2021-04-04
Python使用Selenium抓取動態(tài)網頁的方法步驟
在如今的網絡中,許多網站是“動態(tài)”的,即網頁內容不是靜態(tài)的 HTML 文件,而是由 JavaScript 動態(tài)生成的,這種動態(tài)網頁在數據抓取中帶來了一些挑戰(zhàn),在本教程中,我們將詳細介紹如何使用 Python 抓取動態(tài)網頁,需要的朋友可以參考下2024-11-11

