日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > python >内容正文

python

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

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

每天新增一個文檔來匯總這個數據。這樣搞了幾天之后,過了一個周末,過來突然發現數據變多了很多,這個時候要調整策略,直接一個文檔匯總出要的數據就可以了。

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

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文档的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。