2020-08-14

# -*- coding:utf-8 -*-
import matplotlib.pyplot as plt #from matplotlib import pyplot as plt
from matplotlib import ticker
import sqlite3
import pandas as pd
import os

st_list=input("请输入您要分析财报的股票代码(以逗号分开,如6011111,002241,603986):")
st_list=st_list.split(",")
for st in st_list:
# 数据库文件
    print(st)
    db = 'stockfin.db'
    # 连接数据库,如果没有则创建数据库
    conn = sqlite3.connect(db)
    # 获取游标
    csr = conn.cursor()
    bs_sql='SELECT * from bs where 代码="{}" and "年报日期" like "%12%" order by "年报日期";'.format(st)
    bs=pd.read_sql_query(bs_sql, conn)
    print(bs)
    st_name=bs["简称"][0]
    print(st_name)
    pl_sql='SELECT * from pl where 代码="{}"  and "年报日期" like "%12%" order by "年报日期";'.format(st)
    pl=pd.read_sql_query(pl_sql, conn)
    print(pl)
    cash_sql='SELECT * from cash where 代码="{}" and "年报日期" like "%12%"  order by "年报日期";'.format(st)
    cash=pd.read_sql_query(cash_sql, conn)
    print(cash)
    #ROE=净利润 /净资产=净利润 /(资产-负债)
    BSPL=pd.merge(bs,pl, on="年报日期",how="left")
    roe=pd.DataFrame(BSPL,columns=["资产总计", "负债合计", "四、净利润","年报日期"])
    #roe[["资产总计", "负债合计", "四、净利润"]]=roe[["资产总计", "负债合计", "四、净利润"]].astype(float)
    roe[["资产总计", "负债合计", "四、净利润"]]=roe[["资产总计", "负债合计", "四、净利润"]].apply(pd.to_numeric)
    print(roe)
    roe["净资产"]= roe["资产总计"]-roe["负债合计"]
    roe["净资产收益率"]=roe["四、净利润"]/roe["净资产"]
    #roe["净资产收益率"]=roe["净资产收益率"].apply(lambda x: format(x, '.2%'))  #Series.apply()让序列的值依次在lambda函数中执行;
    print(roe)
    line_lable=st+"_"+st_name
    plt.cla()
    plt.figure()
    fig =plt.figure(figsize=(8,5))  #Figure:指整个图形(可以通过plt.figure()设置画布的大小和分辨率等)
    ## 可用MarkerEdgeColor或mec设置标记边缘颜色;MarkerFaceColor或mfc设置标记填充颜色;MarkerSize设置标记大小
    plt.plot(roe["年报日期"], roe["净资产收益率"], marker='o', mec='r', mfc='w',label=line_lable, linewidth=4)
    print(type(plt.gca()))
    plt.gca().yaxis.set_major_formatter(ticker.PercentFormatter(xmax=1, decimals=1))
    # 设置图表标题,并给坐标轴添加标签
    title=st+"_"+st_name+"_"+"净资产收益率(ROE)趋势"
    plt.title(title, fontsize=20)
     #显示图形的图例
    plt.legend()
    plt.xlabel("报告日期", fontsize=12)
    plt.ylabel("净资产收益率", fontsize=12)
    f_name=title+".jpg"
    # 获取今日日期,并转换为字符串的形式。以此日期命名建立文件路径
    data = st+"_"+st_name+ "//"
    # 判断是否存在此文件夹
    folder = os.path.exists(data)
    # 如果不存在就新建该文件夹
    if not folder:
        os.makedirs(data)
    save_file = os.path.join(data, f_name)
    print(save_file)

    fig.savefig(save_file)
    #plt.show()
    conn.close()
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。