# -*- 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()
2020-08-14
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。