python對月餅數據進行可視化,看看哪家最划算

来源:https://www.cnblogs.com/Qqun261823976/archive/2022/09/06/16661850.html
-Advertisement-
Play Games

前言 嗨嘍~大家好呀,這裡是魔王吶 ! 中秋節,又稱拜月節、月光誕、月夕等,節期在每年的農曆八月十五日(九月十)。 中秋節自古以來就有祭月、賞月、吃月餅、玩花燈、賞桂花、飲桂花酒等民俗,流傳經久不息。 馬上有臨近中秋,這不得好好準備~於是準備對月餅數據進行可視乎 數據 數據集、源碼、解答加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()

 

效果

 

 

 

 

 

 

 

 

尾語

要成功,先發瘋,下定決心往前沖!

學習是需要長期堅持的,一步一個腳印地走向未來!

未來的你一定會感謝今天學習的你。

—— 心靈雞湯

本文章到這裡就結束啦~感興趣的小伙伴可以複製代碼去試試哦

您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • Java 監控直播流rtsp協議轉rtmp、hls、httpflv協議返回瀏覽器 需求背景: 在做之前的項目的時候有一個對接攝像頭實時播放的需求,由於我們攝像頭的購買量不是很多,海康威視不給我們提供流媒體雲伺服器,所以需要我們自己去 一個去滿足我們能在瀏覽器看到監控畫面。項目源代碼在以前公司沒有拷貝 ...
  • 根據XPATH批量替換XML節點中的值 by: 授客 QQ:1033553122 測試環境 JDK 1.8.0_25 代碼實操 message.xml文件 <Request service="SALE_ORDER_SERVICE" lang="zh-CN"> <Head> <AccessCode>x ...
  • JavaGUI-坦克大戰03 7.線程的應用 7.1坦克子彈發射思路 紙上得來終覺淺,絕知此事要躬行。在學習了線程的基本知識之後,我們現在來實際運用一下。 在坦克大戰2.0基礎上添加如下功能:當玩家按一下 j 鍵,就發射一顆子彈。 思路: 當發射一顆子彈後,就等於啟動了一個線程 Hero類有子彈的對 ...
  • 1.生成器 如果創建一個有很多元素的列表,但是只需要訪問前幾個元素,後面的元素占著的空間就白白浪費了 在迴圈的過程中不斷推算出後續的元素呢?這樣就不必創建完整的list,從而節省大量的空間。 在Python中,這種一邊迴圈一邊計算的機制,稱為生成器:generator。 要創建一個generator ...
  • 咳咳~ 其實是奶奶常說,艾歐尼亞昂揚不滅,正義將指引著我們! 好吧,並不是奶奶說,只是最近回家發現一些黑白老照片,看著不夠清晰,然後實驗了一波用Python把老照片變成彩色的。 代碼展示 import requests # Python學習交流資料源碼獲取群 279199867 r = reques ...
  • 1.什麼是路由層 簡單來說,就是通過路由層中的path函數,告訴django遇到那個url,執行那個視圖函數 2.路由層的請求流程 1.客戶在瀏覽器輸入網址→請求進入django的setting.py中的ROOT_URLCONF尋找指定使用的urls.py文件位置(如果中間件有路由功能,urls文件 ...
  • 由於現在大多電腦都是多核CPU,多線程往往會比單線程更快,更能夠提高併發,但提高併發並不意味著啟動更多的線程來執行。更多的線程意味著線程創建銷毀開銷加大、上下文非常頻繁,你的程式反而不能支持更高的TPS。 時間片 多任務系統往往需要同時執行多道作業。作業數往往大於機器的CPU數,然而一顆CPU同時 ...
  • #第一步:下載完成後的基本設置 ##設置>>首選項 ###進行如下操作 ###這個設置主要是為了在NotePad++的頁面中可以輸入漢字 #第二步:在文件夾中新建文本文檔 ###將後面的尾碼改成java #第三步:使用NotePad++打開 ##滑鼠右鍵剛剛新建的文本,使用NotePad++打開 # ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...