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