Python自動(dòng)化實(shí)現(xiàn)日?qǐng)?bào)數(shù)據(jù)可視化
1、前言
今天,我們就來(lái)聊聊如何用Python這一強(qiáng)大的編程語(yǔ)言,實(shí)現(xiàn)“解放雙手,一鍵運(yùn)行!Python每日自動(dòng)生成數(shù)據(jù)日?qǐng)?bào)”的神奇魔力。本文使用案例數(shù)據(jù),構(gòu)造銷(xiāo)售收入、銷(xiāo)售單量等關(guān)鍵性指標(biāo),借助Python工具一鍵生成數(shù)據(jù)日?qǐng)?bào),下面一起學(xué)習(xí)吧!
在這個(gè)快節(jié)奏的工作環(huán)境中,時(shí)間就是金錢(qián),效率決定成敗。傳統(tǒng)的手動(dòng)制作數(shù)據(jù)日?qǐng)?bào),不僅耗時(shí)耗力,還容易出錯(cuò)。而Python憑借其簡(jiǎn)潔的語(yǔ)法、豐富的庫(kù)支持和強(qiáng)大的自動(dòng)化能力,正逐步成為數(shù)據(jù)分析和自動(dòng)化辦公的利器。通過(guò)編寫(xiě)幾個(gè)簡(jiǎn)單的Python腳本,我們就能讓數(shù)據(jù)自動(dòng)匯聚、分析,并生成精美的日?qǐng)?bào),幫助我們?cè)谒蚕⑷f(wàn)變的市場(chǎng)中搶占先機(jī)。
2、導(dǎo)入數(shù)據(jù)
import pandas as pd from datetime import datetime df=pd.read_excel(r"D:\mydata\CSDNdata\銷(xiāo)售數(shù)據(jù)明細(xì).xlsx") df.head()#數(shù)據(jù)預(yù)覽
查看數(shù)據(jù)屬性
df.info()
查看數(shù)據(jù)屬性,其中銷(xiāo)售日期為日期類(lèi)型,銷(xiāo)量和銷(xiāo)售額為數(shù)值類(lèi)型,其他均為文本數(shù)據(jù)類(lèi)型。
3、計(jì)算指標(biāo)
計(jì)算指標(biāo)設(shè)定,設(shè)置本文需要計(jì)算的指標(biāo),指標(biāo)計(jì)算如下:
- • 收入=銷(xiāo)量*銷(xiāo)售額
- • 單量=銷(xiāo)量匯總
- • 貨品數(shù)=貨品數(shù)去重
- • 收入環(huán)比:本月收入/上月收入-1
- • 單量環(huán)比:本月單量/上月單量-1
3.1 計(jì)算12月相關(guān)指標(biāo)
首先選取12月的數(shù)據(jù),截止到2021年12月30日的數(shù)據(jù),分別計(jì)算本月截止12月30日收入、本月截止12月30日單量、本月截止12月30日貨品數(shù)。
#這里假設(shè)數(shù)據(jù)的時(shí)間段時(shí)2021年12月1日到2021年12月30日 the_month=df[(df['銷(xiāo)售日期']>=datetime(2021,12,1))&(df['銷(xiāo)售日期']<=datetime(2021,12,30))] shouru1=(the_month['銷(xiāo)量']*the_month['銷(xiāo)售額']).sum()#本月截止12月30日收入 danliang1=the_month['銷(xiāo)量'].sum()#本月截止12月30日單量 huopin1=the_month['貨號(hào)'].nunique()#本月截止12月30日貨品數(shù) print("本月截止12月30日收入為{:.2f}元,單量為{}個(gè),貨品數(shù)為{}個(gè)".format(shouru1,danliang1,huopin1))
輸出:
本月截止12月30日收入為369242.50元,單量為728個(gè),貨品數(shù)為227個(gè)
3.2 計(jì)算11月相關(guān)指標(biāo)
假設(shè)數(shù)據(jù)的時(shí)間段時(shí)2021年11月1日到2021年11月30日
last_month=df[(df['銷(xiāo)售日期']>=datetime(2021,11,1))&(df['銷(xiāo)售日期']<=datetime(2021,11,30))] shouru2=(last_month['銷(xiāo)量']*last_month['銷(xiāo)售額']).sum()#上月截止11月30日收入 danliang2=last_month['銷(xiāo)量'].sum()#上月截止11月30日單量 huopin2=last_month['貨號(hào)'].nunique()#上月截止11月30日貨品數(shù) print("上月截止11月30日收入為{:.2f}元,單量為{}個(gè),貨品數(shù)為{}個(gè)".format(shouru2,danliang2,huopin2))
輸出:
上月截止11月30日收入為654637.10元,單量為886個(gè),貨品數(shù)為211個(gè)
3.3 利用函數(shù)進(jìn)行封裝
以上我們可以發(fā)現(xiàn)規(guī)律,計(jì)算本月的相關(guān)指標(biāo)數(shù)據(jù)與計(jì)算上月同期的指標(biāo)數(shù)據(jù)計(jì)算邏輯是一樣的,除了數(shù)據(jù)選取的日期不一樣,我們可以自定義一個(gè)函數(shù),用于計(jì)算相關(guān)的數(shù)據(jù)指標(biāo),簡(jiǎn)化數(shù)據(jù)計(jì)算的流程。
def get_month_data(df): shouru=(df['銷(xiāo)量']*df['銷(xiāo)售額']).sum() danliang=df['銷(xiāo)量'].sum() huopin=df['貨號(hào)'].nunique() return(shouru,danliang,huopin) shouru1,danliang1,huopin1=get_month_data(the_month)#計(jì)算本月數(shù)據(jù)指標(biāo) shouru2,danliang2,huopin2=get_month_data(last_month)#計(jì)算上月數(shù)據(jù)指標(biāo) print("本月截止12月30日收入為{:.2f}元,單量為{}個(gè),貨品數(shù)為{}個(gè)".format(shouru1,danliang1,huopin1)) print("上月截止11月30日收入為{:.2f}元,單量為{}個(gè),貨品數(shù)為{}個(gè)".format(shouru2,danliang2,huopin2))
3.4 計(jì)算環(huán)比
構(gòu)建一個(gè)DataFrame,填入具體的計(jì)算指標(biāo)數(shù)值,計(jì)算環(huán)比數(shù)據(jù)。
ribao=pd.DataFrame([[shouru1,shouru2], [danliang1,danliang2], [huopin1,huopin2]], columns=['本月','上月'],index=['收入','單量','貨品數(shù)']) ribao['環(huán)比']=ribao['本月']/ribao['上月']-1 ribao['環(huán)比']=ribao['環(huán)比'].apply(lambda x:format(x,'.2%')) ribao
3.5 計(jì)算每月的銷(xiāo)售額、銷(xiāo)量數(shù)據(jù)情況
計(jì)算每月的銷(xiāo)售額、銷(xiāo)售數(shù)據(jù)情況,使用groupby函數(shù),同時(shí)aggregate函數(shù)自定義數(shù)值的計(jì)算方式,數(shù)據(jù)結(jié)果如下。
df['銷(xiāo)售月份']=df['銷(xiāo)售日期'].astype(str).str[0:7].str.replace('-','') df_group=df.groupby("銷(xiāo)售月份").aggregate({"銷(xiāo)售額":"sum","銷(xiāo)量":"sum"}) df_group
4、數(shù)據(jù)可視化
導(dǎo)入pyecharts庫(kù),制作組合圖。
#使用pyecharts庫(kù)作圖 from pyecharts import options as opts from pyecharts.charts import Bar, Line #導(dǎo)入數(shù)據(jù) v1 = df_group['銷(xiāo)售額'].round(2).tolist() v2 = df_group['銷(xiāo)量'].tolist() #柱形圖 bar = (Bar() .add_xaxis(df_group.index.tolist()) .add_yaxis("銷(xiāo)售額", v1 ,category_gap="60%",gap="10%") #設(shè)置柱形間隙寬度 .extend_axis(yaxis=opts.AxisOpts(axislabel_opts=opts.LabelOpts(formatter="{value} 單"), min_=0,max_=1750))#設(shè)置次坐標(biāo)軸坐標(biāo)大小 .set_series_opts(label_opts=opts.LabelOpts(is_show=True))#顯示數(shù)據(jù)標(biāo)簽 .set_global_opts(title_opts=opts.TitleOpts(title="21年每月銷(xiāo)售額與銷(xiāo)量情況"), ) ) #折線(xiàn)圖 line = Line().add_xaxis(df.index.tolist()).add_yaxis("銷(xiāo)售量", v2, yaxis_index=1, is_smooth=True) #組合圖 bar.overlap(line) #在線(xiàn)顯示 bar.render_notebook()
由圖像可以看出,截止21年12月25日數(shù)據(jù),21年7月銷(xiāo)量最高、12月銷(xiāo)量最低、21年10月收入最高、2月收入最低。
總結(jié)
通過(guò)前面的步驟,我們順利完成了一份基礎(chǔ)的數(shù)據(jù)日?qǐng)?bào)。這份日?qǐng)?bào)雖能反映關(guān)鍵信息,但在實(shí)際工作場(chǎng)景中,數(shù)據(jù)報(bào)表的復(fù)雜程度遠(yuǎn)超于此。實(shí)際的數(shù)據(jù)報(bào)表往往涉及繁多的指標(biāo),計(jì)算邏輯也極為復(fù)雜,這就要求數(shù)據(jù)分析師持續(xù)優(yōu)化計(jì)算流程,以確保數(shù)據(jù)處理的高效與準(zhǔn)確。
到這里,我們已經(jīng)初步體驗(yàn)到 “Python 每日自動(dòng)生成數(shù)據(jù)日?qǐng)?bào)” 帶來(lái)的巨大便利,它真正實(shí)現(xiàn)了 “解放雙手,一鍵運(yùn)行”。從數(shù)據(jù)的抓取、清洗,到深入分析,再到可視化報(bào)告的生成,Python 憑借強(qiáng)大的功能和出色的靈活性,構(gòu)建起一個(gè)高效、精準(zhǔn)的數(shù)據(jù)處理流程。這一流程不僅大幅提升了工作效率,還讓我們得以從繁瑣的數(shù)據(jù)整理工作中解脫出來(lái),將更多精力投入到對(duì)數(shù)據(jù)背后深層含義的洞察以及策略制定上。
不過(guò),要達(dá)成這樣的成果并非輕而易舉。掌握 Python 編程是基礎(chǔ),同時(shí),還需要根據(jù)具體業(yè)務(wù)需求,對(duì)腳本進(jìn)行定制與優(yōu)化。但請(qǐng)堅(jiān)信,一旦熟練掌握這門(mén)技能,Python 必將成為你職業(yè)生涯中不可或缺的強(qiáng)大助力,為你在數(shù)據(jù)領(lǐng)域的探索與發(fā)展提供有力支持
以上就是Python自動(dòng)化實(shí)現(xiàn)日?qǐng)?bào)數(shù)據(jù)可視化的詳細(xì)內(nèi)容,更多關(guān)于Python數(shù)據(jù)可視化的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!
相關(guān)文章
python實(shí)現(xiàn)對(duì)數(shù)組按指定列排序
這篇文章主要介紹了python實(shí)現(xiàn)對(duì)數(shù)組按指定列排序方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2024-02-02Python3 中作為一等對(duì)象的函數(shù)解析
這篇文章主要介紹了Python3 中作為一等對(duì)象的函數(shù),本文通過(guò)實(shí)例代碼講解的非常詳細(xì),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2019-12-12Pycharm運(yùn)行程序時(shí),控制臺(tái)輸出PyDev?console:starting問(wèn)題
Pycharm運(yùn)行程序時(shí),控制臺(tái)輸出PyDev?console:starting問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2023-05-05python3實(shí)現(xiàn)簡(jiǎn)單飛機(jī)大戰(zhàn)
這篇文章主要為大家詳細(xì)介紹了python3實(shí)現(xiàn)簡(jiǎn)單飛機(jī)大戰(zhàn),文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2020-11-11分享5個(gè)數(shù)據(jù)處理更加靈活的pandas調(diào)用函數(shù)方法
這篇文章主要介紹了分享5個(gè)數(shù)據(jù)處理更加靈活的pandas調(diào)用函數(shù)方法,文章基于python的相關(guān)內(nèi)容展開(kāi)詳細(xì)介紹,需要的小伙伴可以參考一下2022-04-04Jupyter?notebook運(yùn)行后打不開(kāi)網(wǎng)頁(yè)的問(wèn)題解決
本文主要介紹了Jupyter?notebook運(yùn)行后打不開(kāi)網(wǎng)頁(yè)的問(wèn)題解決,文中通過(guò)示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2022-03-03淺談python腳本設(shè)置運(yùn)行參數(shù)的方法
今天小編就為大家分享一篇淺談python腳本設(shè)置運(yùn)行參數(shù)的方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2018-12-12