天天看點

groupby python_使用python畫資料大圖,數倍提升工作效率

groupby python_使用python畫資料大圖,數倍提升工作效率

日常工作中果果經常要處理各種各樣的資料。說到資料分析,Excel是不錯的選擇,畢竟Excel提供了很友善的互動式界面,資料過濾和可視化功能。基本上你能想到的功能,Excel都能提供。

但是問題在于,同樣的資料可能每月每周甚至每天都會更新,比如說銷售資料。每一次資料更新,意味着要手動做一系列事情:

導入到Excel裡->調整格式->資料處理->畫圖->排版->分析->發給上司

這樣的工作單次可能耗時不多,但是經常做、每天做,就有點讓人抓狂了。

如何從機械式的工作中解脫出來呢,當然是使用

python

了!

下面果果給大家展示一張python繪制的圖:

groupby python_使用python畫資料大圖,數倍提升工作效率

這是一張用python繪制的圖,它有幾個特點:

  1. 自動繪圖 :是導入資料後程式自動出的圖;
  2. 自動排版 :這是一張組合圖,程式自動排版。對于單個子圖來說,組圖的資訊更豐富,給人的感官帶來很好的體驗;
  3. 形式多樣 :包含各種常用的圖,包括折現圖,餅圖,散點圖,直方圖等;

自從果果在工作中使用了python繪圖之後,再也不用手動調資料畫圖了。隻要新的資料來了,自動出一張大圖。這樣可以把更多的時間放在分析資料上。

這樣一來,原來的工作流,就被簡化成了:

自動出圖->資料分析->發給上司

不僅省了很多力氣,而且把時間和精力聚焦在了最重要的部分,也就是寫資料分析報告。這塊做的越好,上司越滿意。

好了,說了這麼多,下面就由小六六手把手教你怎麼做這樣一張大圖。

Step1. 加載python中必要的庫

import 
           

這裡使用了matplotlib繪圖,使用pandas加載和處理資料。

Step2.讀取資料

這裡果果并沒有使用真的資料,而是自己造了一組數,見下面代碼

dates = pd.date_range('20170101', periods=300)
df = pd.DataFrame(np.random.rand(300,4), index=dates, columns=list('ABCD'))
           
groupby python_使用python畫資料大圖,數倍提升工作效率

如上圖所示,這裡的A、B、C、D可以業務上有不同含義的資料,比如四種商品的點選量,出售數量等。

我們可以簡單的把這組資料視為四種物品每天的出貨量。

Step3.處理資料

這一部分就需要結合具體的業務了;一般來說業務資料的處理流程是固定的,是以這裡寫好之後就不用再改動了。當然,後續調整的話也很友善。

///按月份對商品資料求和
date_groupby = df.groupby(lambda x:pd.datetime.strftime(x,'%Y-%m')).apply(sum)
///統計四種商品的出貨總量占比
date_sum = df.apply(sum)
date_ratio = date_sum/date_sum.sum()
           

Step4.畫圖

處理好各種資料之後,就可以調用繪圖工具畫圖啦。這裡根據大家想要的呈現形式,調用matplotlib強大的功能,就可以自動生成各式各樣的圖。

fig = plt.figure(figsize=(8,9))

ax_0 = fig.add_subplot(3, 1, 1 )
ax_0_twin = ax_0.twinx()

ax_0_twin.bar(date_groupby.index,date_groupby["A"],width = 0.2,label = "A")
plt.ylim((0, 25))

ax_0.plot(date_groupby.index,date_groupby["B"],color = "r", label = "B")

ax_0_twin.set_title(r'Distribution over month',fontsize=15)
ax_0.legend(loc=2, prop={'size': 12})
ax_0_twin.legend(loc=1, prop={'size': 12})
ax_0.set_ylabel(r'B_count',fontsize=11)
ax_0_twin.set_ylabel(r'A_count',fontsize=11)


ax_1 = fig.add_subplot(3, 2, 3 )
rng = np.random.RandomState(10)
colors = rng.rand(50)
sc = ax_1.scatter(df["A"].iloc[0:50],df["B"].iloc[0:50], 
                  c=colors,s=100*df["C"].iloc[0:50])
plt.colorbar(sc)


ax_2 = fig.add_subplot(3, 2, 4 )
ax_2.pie(date_ratio,
        labels=date_ratio.index , autopct = '%3.1f%%',
       startangle = 180, shadow = True)

ax_3 = fig.add_subplot(3, 1, 3 )
ax_3.hist(df["A"],bins = 100)
ax_3.set_title(r'A hist over day',fontsize=15)
           

最後看一眼生成的圖:

groupby python_使用python畫資料大圖,數倍提升工作效率
用python繪圖,解放雙手,釋放創造力!你學會了麼?

文中相關的代碼已經整理好,關注公衆号

果果資料

,回複 “

畫圖

” 即可獲得下載下傳連結。

groupby python_使用python畫資料大圖,數倍提升工作效率

其他文章:

小六六:使用Python做中文分詞和繪制詞雲​zhuanlan.zhihu.com

groupby python_使用python畫資料大圖,數倍提升工作效率

小六六:使用Python爬取12306資料:如何搶到從北京回家的票​zhuanlan.zhihu.com

groupby python_使用python畫資料大圖,數倍提升工作效率

小六六:如何使用python做中文情感分析​zhuanlan.zhihu.com

groupby python_使用python畫資料大圖,數倍提升工作效率

繼續閱讀