日韩av黄I国产麻豆传媒I国产91av视频在线观看I日韩一区二区三区在线看I美女国产在线I麻豆视频国产在线观看I成人黄色短片

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 >

python将数据写入excel_【Python】将数据库中的数据查询出来自动写入excel文档

發(fā)布時間:2025/3/15 23 豆豆
生活随笔 收集整理的這篇文章主要介紹了 python将数据写入excel_【Python】将数据库中的数据查询出来自动写入excel文档 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
近期每天都要監(jiān)控一個數(shù)據(jù)。第一個版本是這樣的:

每天新增一個文檔來匯總這個數(shù)據(jù)。這樣搞了幾天之后,過了一個周末,過來突然發(fā)現(xiàn)數(shù)據(jù)變多了很多,這個時候要調(diào)整策略,直接一個文檔匯總出要的數(shù)據(jù)就可以了。

這樣查了兩天,我又嫌麻煩了,跟同事說了我的需求,問他能不能幫我用python搞成自動查結(jié)果然后把結(jié)果寫到excel中的。他聽完需求說這樣是沒有問題的。中午的時候他就把代碼給我了。大概分這6部分:

01

鏈接數(shù)據(jù)庫

import pandas as pd

import xlwings as xw

from sqlalchemy import create_engine

pd.set_option('display.float_format',lambda x : '%.4f' % x)#到小數(shù)點后兩位,完整顯示

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("成功鏈接數(shù)據(jù)庫")

? ? return engine

02

將數(shù)據(jù)庫中的查詢語句轉(zhuǎn)譯到python中

sql="""SELECT DATE_FORMAT(交易時間,'%d') 日期, 服務(wù)費,`商戶服務(wù)費`,流量費,count(*),sum(交易金額) ,'非云閃付' 類別 from transaction_detail_202008 where `收單英文名稱`='KQ_ZQ'?

and `業(yè)務(wù)產(chǎn)品` like '%%99%%' and `服務(wù)類型` not like '%%云閃付%%'

GROUP BY 1,2,3,4 union all

SELECT DATE_FORMAT(交易時間,'%d') 日期,? 服務(wù)費,`商戶服務(wù)費`,流量費,count(*),sum(交易金額),'云閃付' 類別 from transaction_detail_202008 where `收單英文名稱`='KQ_ZQ'?

and `業(yè)務(wù)產(chǎn)品` like '%%99%%' and `服務(wù)類型` like '%%云閃付%%'

GROUP BY 1,2,3,4;"""

df=pd.read_sql(sql,con=engine())

【他給我的代碼,在'%d'中的第一個百分號前還有個%,我這邊查出來結(jié)果有問題,他那邊是正常的,我刪掉一個結(jié)果才符合預期】

03

打開指定的excel工作表新增工作表

app=xw.App()

df_data=app.books.open(r"E:\工作計劃\周例會數(shù)據(jù)分享\2020.8.30\服務(wù)費收取數(shù)據(jù)源.xlsx")

df_data.sheets.add('newsource')

df_sheet=df_data.sheets('newsource')

04

將數(shù)據(jù)庫中查詢出的結(jié)果寫入指定的excel區(qū)域

df_sheet.range("a1").value="每日交易數(shù)據(jù)"

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("每日交易數(shù)據(jù)保存完成")

【merge函數(shù)后面的括號已刪除,在同事那邊沒問題,在我這邊報錯NoneType,我刪掉這個括號才算正常】

05

將查出的數(shù)據(jù)進行匯總處理【透視表】

pdf=df.pivot_table(values="sum(交易金額)",index="日期",columns="類別",aggfunc="sum")

b = pdf.T.agg('sum').T#右側(cè)合計列

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['服務(wù)費']=='0.060%')&(df['日期']==pdf.index[i])].sum()['sum(交易金額)'])

? ? sever_fee.append(df[(df['服務(wù)費']=='0.060%')&(df['日期']==pdf.index[i])].sum()['sum(交易金額)']*0.0006)

pdf['收取服務(wù)費交易金額']=sever_amount

pdf['收取服務(wù)費金額']=sever_fee

pdf['收取服務(wù)費交易金額占比']=(pdf['收取服務(wù)費交易金額']/pdf['合計']).apply(lambda x:"%.2f%%" % (x * 100))

pdf['收取服務(wù)費交易金額占非云閃付交易比例']=(pdf['收取服務(wù)費交易金額']/pdf['非云閃付']).apply(lambda x:"%.2f%%" % (x * 100))

df_sheet.range("i1").value="云閃付交易"

df_sheet.range("i1:m1").api.merge

df_sheet.range("n1").value="服務(wù)費與占比"

df_sheet.range("n1:q1").api.merge

df_sheet.range("i2").value=pdf

print('服務(wù)費與云閃付數(shù)據(jù)保存完成')

【這一部分的處理比較復雜,運用到透視表,還運營到條件求和】

06

保存&關(guān)閉文件,退出app,打印提示信息

df_data.save()#保存文件#文件如果是打開狀態(tài),不會報錯? ?但更改不會起作用

df_data.close()#關(guān)閉文件關(guān)閉之后其他的才能操作#保存時會先檢查是否已經(jīng)存在,如果已經(jīng)存在會有彈窗提醒

app.quit()

print("保存并關(guān)閉")

昨晚看了網(wǎng)易直播課的一堂課,用python去做量化投資。第一部分老師自我介紹【吹牛B】第二部分講股票投資的一些指標計算方式第三部分用python和yahoofinance中的數(shù)據(jù)進行投資收益測算

感悟:了解了量化投資是個什么玩意:用算法和指標讓程序去幫忙買入賣出。昨天的課程沒有太復雜的算法,只需要用工具把一系列的數(shù)據(jù)算出來。只是根據(jù)設(shè)置的條件去買進賣出。這種投資有勝有負,昨天的BTC模擬數(shù)據(jù)是9勝10負,但是從年初到現(xiàn)在的收益率已經(jīng)到了89%。

投資要克服人性中的貪婪。在投資中,下跌是必然【如同地心引力】,上漲需要集聚很多的能量。如果人在操作股票的時候能夠死守規(guī)則,應該也不至于被割韭菜割得肉都割掉了。

總結(jié)

以上是生活随笔為你收集整理的python将数据写入excel_【Python】将数据库中的数据查询出来自动写入excel文档的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。