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

歡迎訪問 生活随笔!

生活随笔

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

python

python自动生成分析报告_利用PYTHON全自动生成分析报告

發布時間:2024/9/19 python 36 豆豆
生活随笔 收集整理的這篇文章主要介紹了 python自动生成分析报告_利用PYTHON全自动生成分析报告 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

日常工作當中,特別是金融行業當中,有不少人的工作是提取數據,分析數據,得到可視化圖表,并加入自已的研究分析結論,最終生成分析報告,并且有不少報告是定期生成,存在不少重復手工勞動。本文通過一個簡單實例,介紹python中的一個叫python-doc模塊,可以實現全自動獲取數據-分析數據-最終生成分析報告的全部操作。

一、從萬得數據庫讀取數據,保存可視化結果圖片

def getDataAndSavePic():

db_engine = create_engine('oracle://lianghua:lianghua@172.16.10.101:1521/orcl', echo=False)

DB_Session = sessionmaker(bind=db_engine)

session = DB_Session()

s = ("select OB_OBJECT_NAME_1090 AS STOCKNAME,"#股票名稱

" F5_1090 AS TRDMARKETNAME, "#交易所名稱

" F6_1090 AS PLATENAME, "#版塊名稱

" F17_1090 AS TIMETOMARKET, "#上市時間

" F16_1090 AS STOCKCODE "#股票代碼

"from wind.tb_object_1090 t where t.f4_1090='A' ")#只取A股數據

selectsql = text(s)

result = session.execute(selectsql) # 執行查詢語句

df_result = pd.DataFrame(result.fetchall())

df_result.columns = ['STOCKNAME', 'TRDMARKETNAME', 'PLATENAME', 'TIMETOMARKET','STOCKCODE'] # 列重命名

df_result = df_result.set_index('STOCKCODE')

session.close()

pie_file_path = r'd:\temp\pie.png' #餅狀圖圖片地址

bar_file_path = r'd:\temp\bar.png' #柱狀圖圖片地址

#繪制餅狀圖,分別計算主板、中小板和創業板股票的數量占比

(

df_result.groupby('PLATENAME')

.count()

.plot.pie(y='STOCKNAME',figsize=(6, 6),autopct='%.2f')

)

plt.savefig(pie_file_path)

#繪制柱狀圖,獲取不同年份上市股票的數量

df_result['YEARTOMARKET']=df_result['TIMETOMARKET'].map(lambda x:None if x is None else x[0:4])

(

df_result.groupby('YEARTOMARKET')

.count()

.plot.bar(y='STOCKNAME',figsize=(8, 6))

)

plt.savefig(bar_file_path)

return (df_result,pie_file_path,bar_file_path)

二、自動生成WORD文件,定義文檔模板

from docx import Document

from docx.shared import Inches

def gen_docfile(df,pie_file_path,bar_file_path,doc_file_path):

'''

:param df_result: 數據記錄,用于表格顯示

:param pie_file_path: 餅圖文件顯示

:param bar_file_path: 柱狀圖文件顯示

:param doc_file_path: 需要保存的WORK文件路徑

:return: 無返回值

'''

# 新建一個文檔

document = Document()

document.add_heading(u' 自動分析報告生成 ', 0)

# 添加一個段落

p = document.add_paragraph(u'python-doc模塊是一個非常實用的用于自動生成報告的文檔,可以自動根據讀取的數據生成')

p.add_run(u'圖片').bold = True

p.add_run(u' 和 ')

p.add_run(u'表格').italic = True

document.add_paragraph(u'python-doc模塊可以用于:')

#無序列表項

document.add_paragraph(

u'根據程序計算動態結果替換動態內容,如統計數字等', style='ListBullet'

)

document.add_paragraph(

u'可以自動嵌入相應的圖片和表格', style='ListBullet'

)

document.add_paragraph(

u'支持各類樣式進行調整', style='ListBullet'

)

document.add_paragraph(u'python-doc模塊不足的地方:')

document.add_paragraph(

u'相對簡單', style='ListNumber'

)

document.add_paragraph(

u'暫不支持WORD文檔模板', style='ListNumber'

)

document.add_heading(u'二、各板塊統計', level=1)

text=u'滬深兩地的上市A股總共有%s只,其中滬市有 %s 只,深市有%s 只,各板塊的數據占比如下所示'\

%(str(df['STOCKNAME'].count()),\

str(df[df['TRDMARKETNAME']=='上海']['STOCKNAME'].count()),\

str(df[df['TRDMARKETNAME']=='深圳']['STOCKNAME'].count())

)

document.add_paragraph(text)

# 插入圖片,文件名可以作為參數傳入,由之前的程序進行傳入

document.add_picture(pie_file_path, width=Inches(5.0))

document.add_heading(u'三、上市時間統計', level=1)

text=u'\n上市時間分布圖如下所示,可以看出今明兩年并不上上市的高峰期'

document.add_paragraph(text)

# 插入圖片,文件名可以作為參數傳入,由之前的程序進行傳入

document.add_picture(bar_file_path, width=Inches(5.0))

document.add_heading(u'四、待上市新股統計', level=1)

# 輪詢上市時間為空的未上市股票,添加表格

text=u'\n待上市股票列表如下'

df['TIMETOMARKET']=df['TIMETOMARKET'].map(lambda x:'99991231' if x is None else x[0:4])

df_newstock=df[df['TIMETOMARKET']=='99991231']

print df_newstock

#插入表格

table = document.add_table(rows=len(df_newstock.index)+1, cols=3,style='Table Grid')

hdr_cells = table.rows[0].cells

hdr_cells[0].text = u'股票名稱'

hdr_cells[1].text = u'上市交易所'

hdr_cells[2].text = u'上市板塊'

#編歷DATAFRAME

list_stockname=list(df_newstock['STOCKNAME'])

list_TRDMARKETNAME=list(df_newstock['TRDMARKETNAME'])

list_PLATENAME=list(df_newstock['PLATENAME'])

for i in range(len(df_newstock.index)):

row_cells = table.add_row().cells

#注意這里PYTHON2的編碼問題,多謝stackoverflow,程序員的圣地

row_cells[0].text = unicode(list_stockname[i],'utf-8')

row_cells[1].text = unicode(list_TRDMARKETNAME[i],'utf-8')

row_cells[2].text = unicode(list_PLATENAME[i],'utf-8')

document.add_page_break()

document.save(doc_file_path)

三、前后串在一起,生成最終完整的WORD文件

#生成圖片

(df,pie_file_path,bar_file_path)=getDataAndSavePic()

#整合到WORD文檔當中

gen_docfile(df,pie_file_path,bar_file_path,r'd:\temp\test.doc')

四、最終效果圖

打開d:\temp\test.doc,效果如下:

截圖1

截圖2

截圖3

截圖4

怎么樣,是不是很方便?對于圖表樣式和文檔樣式,python的matplotlib和python-doc模塊都可以修改,使用起來也非常方便。另外更有用的在于通過嵌入網絡爬蟲,以及對外部的接口,可以快速實現大量手工勞動才能完成的工作,提高工作效率

總結

以上是生活随笔為你收集整理的python自动生成分析报告_利用PYTHON全自动生成分析报告的全部內容,希望文章能夠幫你解決所遇到的問題。

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