python将数据写入excel_【Python】将数据库中的数据查询出来自动写入excel文档
01
—
鏈接數據庫
import pandas as pd
import xlwings as xw
from sqlalchemy import create_engine
pd.set_option('display.float_format',lambda x : '%.4f' % x)#到小數點后兩位,完整顯示
def engine():
? ? dbs=["yy_wr:DB@&0727Ydb..CN@192.168.1.165:5567/v2"]
? ? engine=create_engine(
? ? ? ? 'mysql+pymysql://'+dbs[0],
? ? ? ? echo=False,
? ? ? ? pool_recycle=7200?
? ? )
? ? print("成功鏈接數據庫")
? ? return engine
02
—
將數據庫中的查詢語句轉譯到python中
sql="""SELECT DATE_FORMAT(交易時間,'%d') 日期, 服務費,`商戶服務費`,流量費,count(*),sum(交易金額) ,'非云閃付' 類別 from transaction_detail_202008 where `收單英文名稱`='KQ_ZQ'?
and `業務產品` like '%%99%%' and `服務類型` not like '%%云閃付%%'
GROUP BY 1,2,3,4 union all
SELECT DATE_FORMAT(交易時間,'%d') 日期,? 服務費,`商戶服務費`,流量費,count(*),sum(交易金額),'云閃付' 類別 from transaction_detail_202008 where `收單英文名稱`='KQ_ZQ'?
and `業務產品` like '%%99%%' and `服務類型` like '%%云閃付%%'
GROUP BY 1,2,3,4;"""
df=pd.read_sql(sql,con=engine())
【他給我的代碼,在'%d'中的第一個百分號前還有個%,我這邊查出來結果有問題,他那邊是正常的,我刪掉一個結果才符合預期】
03
—
打開指定的excel工作表新增工作表
app=xw.App()
df_data=app.books.open(r"E:\工作計劃\周例會數據分享\2020.8.30\服務費收取數據源.xlsx")
df_data.sheets.add('newsource')
df_sheet=df_data.sheets('newsource')
04
—
將數據庫中查詢出的結果寫入指定的excel區域
df_sheet.range("a1").value="每日交易數據"
df_sheet.range("a1:g1").api.merge
df_sheet.range("a2").value=list(df.columns)
for i in range(3,len(df)+3):
? ? df_sheet.range("a"+str(i)).value=list(df.loc[i-3])
print("每日交易數據保存完成")
【merge函數后面的括號已刪除,在同事那邊沒問題,在我這邊報錯NoneType,我刪掉這個括號才算正?!?/p>
05
—
將查出的數據進行匯總處理【透視表】
pdf=df.pivot_table(values="sum(交易金額)",index="日期",columns="類別",aggfunc="sum")
b = pdf.T.agg('sum').T#右側合計列
pdf['合計']=list(b)
a = pdf.agg('sum')#底部合計行
pdf.loc["合計"]=list(a)
pdf['云閃付占比']=(pdf['云閃付']/pdf['合計']).apply(lambda x:"%.2f%%" % (x * 100))
sever_amount=[]
sever_fee=[]
for? i in range(len(pdf)):
? ? sever_amount.append(df[(df['服務費']=='0.060%')&(df['日期']==pdf.index[i])].sum()['sum(交易金額)'])
? ? sever_fee.append(df[(df['服務費']=='0.060%')&(df['日期']==pdf.index[i])].sum()['sum(交易金額)']*0.0006)
pdf['收取服務費交易金額']=sever_amount
pdf['收取服務費金額']=sever_fee
pdf['收取服務費交易金額占比']=(pdf['收取服務費交易金額']/pdf['合計']).apply(lambda x:"%.2f%%" % (x * 100))
pdf['收取服務費交易金額占非云閃付交易比例']=(pdf['收取服務費交易金額']/pdf['非云閃付']).apply(lambda x:"%.2f%%" % (x * 100))
df_sheet.range("i1").value="云閃付交易"
df_sheet.range("i1:m1").api.merge
df_sheet.range("n1").value="服務費與占比"
df_sheet.range("n1:q1").api.merge
df_sheet.range("i2").value=pdf
print('服務費與云閃付數據保存完成')
【這一部分的處理比較復雜,運用到透視表,還運營到條件求和】
06
—
保存&關閉文件,退出app,打印提示信息
df_data.save()#保存文件#文件如果是打開狀態,不會報錯? ?但更改不會起作用
df_data.close()#關閉文件關閉之后其他的才能操作#保存時會先檢查是否已經存在,如果已經存在會有彈窗提醒
app.quit()
print("保存并關閉")
昨晚看了網易直播課的一堂課,用python去做量化投資。第一部分老師自我介紹【吹牛B】第二部分講股票投資的一些指標計算方式第三部分用python和yahoofinance中的數據進行投資收益測算感悟:了解了量化投資是個什么玩意:用算法和指標讓程序去幫忙買入賣出。昨天的課程沒有太復雜的算法,只需要用工具把一系列的數據算出來。只是根據設置的條件去買進賣出。這種投資有勝有負,昨天的BTC模擬數據是9勝10負,但是從年初到現在的收益率已經到了89%。投資要克服人性中的貪婪。在投資中,下跌是必然【如同地心引力】,上漲需要集聚很多的能量。如果人在操作股票的時候能夠死守規則,應該也不至于被割韭菜割得肉都割掉了。總結
以上是生活随笔為你收集整理的python将数据写入excel_【Python】将数据库中的数据查询出来自动写入excel文档的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: termux php 出错,androi
- 下一篇: python卸载_删除系统 Python