【數據分析入門】之:如何用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這個庫,這個庫功能的強大,大家可以慢慢了解,了解之後就會愛上。
接下來,看看我們的目的,是為了自動計算想要的數據:
- 時間格式處理
由於原始數據的時間是字元串格式,如果按天進行計算的話,需要分列成「日期」「時間」,我們保留「日期」列:
#日期處理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