【數據分析入門】之:如何用Python代替Excel

【數據分析入門】之:如何用Python代替Excel

來自專欄數據分析7 人贊了文章

其實大部分公司的數據分析,用Excel綽綽有餘。Excel的功能相當強大,除了在數據量大的地方有弱勢之外,像操作性和可視性,都是很強的。但是,如果不用VBA,其實每天手動操作的重複性很強,比如條件求和、條件計數、數據透視表什麼的。

每天的報表,如果只需要更新數據源就可以得到,那麼為什麼不用Python來自動化處理?

接下來,我們就看看,怎麼用Python代替我們做一些重複性強的工作。

第一步,就是要知道,Python它到底怎麼讀取Excel文件的。所需工具:Anoconda、Excel。


咱們以一個數據表作為例子:

這裡有一份訂單數據,包含:訂單時間、城市、商品名稱、價格、狀態、代理商,共6個欄位。

每天需要向部門領導彙報這樣的數據:

目標城市是指一些特定的城市,共50個:

如果用Excel處理的話,需要用到:分列、sumif、countif、vlookup等,稍不注意可能會出錯。

那我們得用Python幫我們處理。

Python讀取Excel文件

import pandas as pd #導入pandas庫import osos.chdir(rd:Python est) #更改路徑data=pd.read_excel(data.xls) #注意後綴是xls還是xlsx

處理文件

在將源數據讀取之後,我們可以用type(data)來查看數據的類型

採用這種方式讀取Excel文件之後,返回的是一個dataframe類型,我基本上都是用pandas這個庫,這個庫功能的強大,大家可以慢慢了解,了解之後就會愛上。

接下來,看看我們的目的,是為了自動計算想要的數據:

  1. 時間格式處理

由於原始數據的時間是字元串格式,如果按天進行計算的話,需要分列成「日期」「時間」,我們保留「日期」列:

#日期處理data[日期]=[x.split( )[0] for x in data[時間]]

2. 判斷是否在目標城市

#目標城市讀取cities=pd.read_excel(目標城市.xlsx)cities=list(cities[城市]) #轉換為列表格式#新增判斷列,在目標城市為1,不在目標城市為0data[是否在目標城市]=Nonedata.loc[data[城市].isin(cities),是否在目標城市]=1 #在目標城市設置為1data.loc[data[是否在目標城市].isnull(),是否在目標城市]=0 #其餘設置為0

3. 條件求和、計數,存入Excel

#各渠道,按天匯總 製成表格並存為excel文件writer=pd.ExcelWriter(數據匯總.xlsx) starts=0 #從第一行開始寫入數據agency=data[代理商].unique() for i in agency: data_agency=data[data[代理商]==i] order=data.groupby(日期)[城市].count() #每日總訂單量 sold=data.groupby(日期)[價格(元)].sum() #每日售出金額 order_target=data[data[是否在目標城市]==1].groupby(日期)[城市].count() #每日目標城市訂單量 sold_target=data[data[是否在目標城市]==1].groupby(日期)[價格(元)].sum() #每日目標城市售出金額 #整理成表 table=pd.concat([order,sold,order_target,sold_target],axis=1) table=pd.DataFrame(table) table.columns=[總訂單量,總售出價格,目標城市訂單數,目標城市售出價格] #寫入Excel title=pd.DataFrame([代理商: +i]) #將代理商名稱設置為小標題 title.to_excel(writer,startrow=starts,index=False,columns=None,header=False) table.to_excel(writer,startrow=starts+1) #寫入對應代理商的數據 starts=starts+len(table)+3 #下一個代理商的寫入位置writer.save()

看看單獨某個代理商的數據表:

差不多是這些數據了,然後將所有代理商的數據,存入至Excel文件,最終得到的數據如下:

生成報表

嗯,這下程序寫好了,每天就是更新一下數據源,然後點一下運行程序,數據就出來了。空出來的時間,可以拿來優化一下報表的外觀,讓報表好看些,是吧?

好吧,我儘力了,還是得多看看報表的美化。


以上例子的數據、代碼,可以在百度網盤下載哦:數據、代碼下載


推薦閱讀:

打造你的機器學習團隊:三種模式和角色分工
基於 XGBoost 對 Santander 銀行用戶購買行為進行預測
利用大數據促進可持續發展
基於RFM的客戶價值分析模型
介紹一位可能過時的咖狗神器XGBoost

TAG:數據分析 | 數據挖掘 | 數據分析師 |