用了一段時間的python ,發覺python這小伙確實是做自動化的一把好手,鑒於python在自動化方面的良好的能力,python在自動化測試,自動化運維,爬蟲等方面都有着良好的表現。
我們在日常工作做需要對一下交易數據的統計,利潤的計算,對於這些每天的大量重復工作,何不用python寫一下代碼,讓這些工作變成自動化,提高准學性的同時,也解放了我們的工作時間,使得我們可以把更加多的時間花在解決問題上面。
下面的以python模擬excel的一下,日常操作,提高數據處理的效率,達到自動化的效果。
在我們處理數據之前,我們首先需要在我們的日常后台系統上面進行數據的下載,我們何不用python 把這一步也做自動化呢,在python里面有一個叫selenium庫在瀏覽器的自動化操作方面有着這良好的表現,可以幫助我們把日常的交易數據,利潤數據自動化的下載,做到全自動化,下一篇博客里面我們會進行介紹。
第一步
#首先我們需要需要3個庫,pandas庫,numpy庫,openpyxl庫。pandas在數據整理方面強大的能力,特別是在大數據的整理方面,小數據我們當然可以通過excel來實現,numpy在數據運算方面表現優異,openpyxl庫是我們在導出到xlsx的文件時所需要用到的不然to_excel的時候可能會報錯。
import pandas as pd
import numpy as np
import openpyxl
第二步
#下載了日常交易利潤數據表20180404104607.xls,和代理商之前的利潤匯總表2,公司會把代理商的分潤累積到一定程度的時候發放給代理商,這里我們取達到100元進行打開,我們首先用read_excel來讀取數據表格。
df=pd.read_excel('匯總表.xlsx',sheet_name='Sheet1')
df_2018=pd.read_excel('20180404104607.xls')
第三步
# 篩選利潤匯總表,得到我們需要的2列,代理商名稱和總額。
df_new=df[['代理商名稱','總額']]
第四步
# 篩選交易數據表,我們拿到扣完0.7稅的本級利潤,並取小數點后面的兩位數。
df_2018_代理商名稱=df_2018['代理商名稱']
df_2018_本級利潤=round(df_2018['本級利潤(元)']*0.93,2)
df111=pd.concat([df_2018_代理商名稱,df_2018_本級利潤],axis=1)
# print(df111)
第五步
# 合並交易數據,這里面的merge的功能有和excel里面的vlookup,sql里面的join功能是一樣的嗎,同時把我今日的交易利潤和歷史利潤相加。並重名名
df_result=df111.merge(df_new,on='代理商名稱')
# print(df_result)
dd=df_result['本級利潤(元)']+df_result['總額']
dd.columns=['總額']
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
#我們還可以是用apply的方式進行求和,但是首先需要drop去掉字符串,不然sum的時候就會報錯
df_result=df_result.drop(['代理商名稱'],axis=1)
del df_result['代理商名稱']
df_result['求和']=df_result.apply(lambda x: x.sum(),axis=1)
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
第六步
#篩選交易金額大於100的列
df_result_2=df_result['代理商名稱']
jieguo=pd.concat([df_result_2,dd],axis=1) jieguo=jieguo[jieguo['總額']>100]
#區間取值
jj=jieguo.loc[(jieguo['利潤']>70)&(jieguo['利潤']<100)]
#重行命名列
jieguo.columns=['代理商名稱','利潤']
jieguo.rename (columns = {'利潤': '付款金額'},inplace=True)
print(jieguo)
#把最后的結果導出到我們所要的表格的當中。
jieguo.to_excel('result.xlsx')
如果有更好的建議方法不足,請告之我,讓我們一起進步吧。謝謝