成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專欄INFORMATION COLUMN

利用PYTHON全自動生成分析報告

xorpay / 2533人閱讀

摘要:本文通過一個簡單實例,介紹中的一個叫模塊,可以實現(xiàn)全自動獲取數(shù)據(jù)分析數(shù)據(jù)最終生成分析報告的全部操作。另外更有用的在于通過嵌入網(wǎng)絡(luò)爬蟲,以及對外部的接口,可以快速實現(xiàn)大量手工勞動才能完成的工作,提高工作效率

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

一、從萬得數(shù)據(jù)庫讀取數(shù)據(jù),保存可視化結(jié)果圖片
def getDataAndSavePic():
    db_engine = create_engine("oracle://lianghua:[email protected]: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股數(shù)據(jù)
    selectsql = text(s)
    result = session.execute(selectsql)  # 執(zhí)行查詢語句
    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:	emppie.png"  #餅狀圖圖片地址
    bar_file_path = r"d:	empar.png" #柱狀圖圖片地址
    #繪制餅狀圖,分別計算主板、中小板和創(chuàng)業(yè)板股票的數(shù)量占比
    (
    df_result.groupby("PLATENAME")
    .count()
    .plot.pie(y="STOCKNAME",figsize=(6, 6),autopct="%.2f")
    )
    plt.savefig(pie_file_path)
    #繪制柱狀圖,獲取不同年份上市股票的數(shù)量
    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: 數(shù)據(jù)記錄,用于表格顯示
    :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模塊是一個非常實用的用于自動生成報告的文檔,可以自動根據(jù)讀取的數(shù)據(jù)生成")
    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"根據(jù)程序計算動態(tài)結(jié)果替換動態(tài)內(nèi)容,如統(tǒng)計數(shù)字等", style="ListBullet"
    )
    document.add_paragraph(
        u"可以自動嵌入相應(yīng)的圖片和表格", style="ListBullet"
    )
    document.add_paragraph(
        u"支持各類樣式進(jìn)行調(diào)整", 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"二、各板塊統(tǒng)計", level=1)
    text=u"滬深兩地的上市A股總共有%s只,其中滬市有 %s 只,深市有%s 只,各板塊的數(shù)據(jù)占比如下所示"
         %(str(df["STOCKNAME"].count()),
           str(df[df["TRDMARKETNAME"]=="上海"]["STOCKNAME"].count()),
           str(df[df["TRDMARKETNAME"]=="深圳"]["STOCKNAME"].count())
           )
    document.add_paragraph(text)
    # 插入圖片,文件名可以作為參數(shù)傳入,由之前的程序進(jìn)行傳入
    document.add_picture(pie_file_path, width=Inches(5.0))

    document.add_heading(u"三、上市時間統(tǒng)計", level=1)
    text=u"
上市時間分布圖如下所示,可以看出今明兩年并不上上市的高峰期"
    document.add_paragraph(text)
    # 插入圖片,文件名可以作為參數(shù)傳入,由之前的程序進(jìn)行傳入
    document.add_picture(bar_file_path, width=Inches(5.0))


    document.add_heading(u"四、待上市新股統(tǒng)計", level=1)
    # 輪詢上市時間為空的未上市股票,添加表格
    text=u"
待上市股票列表如下"
    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文檔當(dāng)中
gen_docfile(df,pie_file_path,bar_file_path,r"d:	emp	est.doc")
四、最終效果圖

打開d:temptest.doc,效果如下:

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

文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請注明本文地址:http://systransis.cn/yun/41431.html

相關(guān)文章

  • 首次公開,整理12年積累的博客收藏夾,零距離展示《收藏夾吃灰》系列博客

    摘要:時間永遠(yuǎn)都過得那么快,一晃從年注冊,到現(xiàn)在已經(jīng)過去了年那些被我藏在收藏夾吃灰的文章,已經(jīng)太多了,是時候把他們整理一下了。那是因為收藏夾太亂,橡皮擦給設(shè)置私密了,不收拾不好看呀。 ...

    Harriet666 評論0 收藏0
  • 基于Selenium + Python的web自動化框架

    摘要:一什么是是一個基于瀏覽器的自動化工具,她提供了一種跨平臺跨瀏覽器的端到端的自動化解決方案。模塊主要用來記錄用例執(zhí)行情況,以便于高效的調(diào)查用例失敗信息以及追蹤用例執(zhí)行情況。測試用例倉庫用例倉庫主要用來組織自動化測試用例。 一、什么是Selenium? Selenium是一個基于瀏覽器的自動化工具,她提供了一種跨平臺、跨瀏覽器的端到端的web自動化解決方案。Selenium主要包括三部分:...

    sunny5541 評論0 收藏0
  • 【數(shù)據(jù)科學(xué)系統(tǒng)學(xué)習(xí)】Python # 數(shù)據(jù)分析基本操作[三] matplotlib

    摘要:有一些表示常見圖形的對象稱為塊,完整的集合位于。中的繪圖函數(shù)在中,有行標(biāo)簽列標(biāo)簽分組信息。密度圖通過計算可能會產(chǎn)生觀測數(shù)據(jù)的連續(xù)概率分布的估計而產(chǎn)生的。在探索式數(shù)據(jù)分析工作中,同時觀察一組變量的散布圖是很有意義的。 我們在上一篇介紹了 pandas,本篇介紹 matplotlib。 繪圖和可視化 一個用于創(chuàng)建出版質(zhì)量圖表的桌面繪圖包。 Matplotlib API入門 Figure ...

    BDEEFE 評論0 收藏0
  • 一份關(guān)于人工智能、機器學(xué)習(xí)和大數(shù)據(jù)的報告

    摘要:為了你最好的未來,請不斷的學(xué)習(xí)創(chuàng)始人兼首席執(zhí)行官人工智能和機器學(xué)習(xí)的時代已經(jīng)到來了,這些領(lǐng)域都有可能對印度的行業(yè)產(chǎn)生重大的影響。在印度努力重振生產(chǎn)力增長的同時,人工智能和機器學(xué)習(xí)有望填補這一空白。 showImg(http://upload-images.jianshu.io/upload_images/13825820-702c6873cd07cfc3.jpg?imageMogr2/...

    Carbs 評論0 收藏0

發(fā)表評論

0條評論

最新活動
閱讀需要支付1元查看
<