当前位置: 首页 > news >正文

推荐大良网站建设/新app推广去哪里找

推荐大良网站建设,新app推广去哪里找,国外设计网站app有哪些,做淘宝头像的网站有哪些Python tushare股票大数据分析与报告生成 前言: 经过前面从tushare数据的获取(在我的博客文章里有介绍),接下来肯定是要对数据进行分析,分析后还可以批量生成docx分析报告。前期肯定是要去安装docx库,具体…

Python tushare股票大数据分析与报告生成

前言
经过前面从tushare数据的获取(在我的博客文章里有介绍),接下来肯定是要对数据进行分析,分析后还可以批量生成docx分析报告。前期肯定是要去安装docx库,具体要安装哪些库请根据自己缺哪些库安装,不懂的话请找度娘。哈哈哈,我的废话又多了,以下进入正题贴出代码:

import pandas as pd
import tushare as ts
import docx
import os
import time
import warnings
from docx.shared import Cm, Inches
from docx.enum.text import WD_ALIGN_PARAGRAPH
warnings.filterwarnings('ignore')
pd.set_option('expand_frame_repr', False)
os.chdir('D:/all_trading_data')
#此路径必须改为放数据的路径且中间的不能缺失任何一天数据,例如get_analysis_stockdata('20200101', '20200106'),
#那么你放数据文件夹内不能缺少任何一个这段时期内的交易数据文件,否则报错
pro = ts.pro_api('要到tushare官网注册个账户然后将token复制到这里,可以的话请帮个忙用文章末我分享的链接注册,谢谢')def get_analysis_stockdata(st_date, ed_date):#获取st_date,ed_date时间段内的交易日期trade_d = pro.trade_cal(exchange='SSE', is_open='1',start_date=st_date,end_date=ed_date,fields='cal_date')for date_now in trade_d['cal_date'].values: #将以上获取时间段的交易日期赋值给date_now# 读取时间段内每日的股票数据df = pd.read_csv('{}_ts.csv'.format(str(date_now)), encoding='gbk')#fillna填充缺失数据,传入inplace=True直接修改原对象df.fillna(0, inplace=True)df.replace('nan ', 0, inplace=True)#astype强制将涨幅,PE,总市值,流通市值转换成float格式,ts_code转化成str后,NAN也变成nan str格式df[['change', 'pe', 'total_mv', 'circ_mv']] = df[['change', 'pe', 'total_mv', 'circ_mv']].astype(float)df['list_date'] = pd.to_datetime(df['list_date'])df['ts_code'] = df['ts_code'].astype(str)# 添加交易所列df.loc[df['ts_code'].str.startswith('3'), 'exchange'] = 'CY'df.loc[df['ts_code'].str.startswith('6'), 'exchange'] = 'SH'df.loc[df['ts_code'].str.startswith('0'), 'exchange'] = 'SZ'# 找出上涨的股票df_up = df[df['change'] > 0.00]# 走平股数df_even = df[df['change'] == 0.00]# 找出下跌的股票df_down = df[df['change'] < 0.00]# 找出涨停的股票limit_up = df[df['change'] >= 9.70]limit_down = df[df['change'] <= -9.70]# 涨停股数中的未封板股,上市日期小于15天limit_up_new = limit_up[pd.to_datetime(date_now) - limit_up['list_date'] <= pd.Timedelta(15)]# 涨停股数中次新股,上市日期小于1年limit_up_fresh = limit_up[pd.to_datetime(date_now) - limit_up['list_date'] <= pd.Timedelta(365)]# 涨停股数中的未封板股,上市日期小于15天limit_down_new = limit_down[pd.to_datetime(date_now) - limit_down['list_date'] <= pd.Timedelta(15)]# 涨停股数中次新股,上市日期小于1年limit_down_fresh = limit_down[pd.to_datetime(date_now) - limit_down['list_date'] <= pd.Timedelta(365)]#df_up.shape[0]获取上涨的行数print('A股上涨个数: %d, A股下跌个数: %d, A股走平个数: %d。' % (df_up.shape[0], df_down.shape[0], df_even.shape[0]))print('A股总成交额:%d, 总成交量:%d' % (df['amount'].sum(), df['vol'].sum()))print('A股平均市盈率:%.2f, 平均流通市值 %.2f 亿, 平均总市值 %.2f 亿' % (df['pe'].mean(), df['circ_mv'].mean(), df['total_mv'].mean()))print('涨停数量:%d 个, 涨停中上市日期小于15天的:%d, 涨停中上市日期小于1年的:%d' % (limit_up.shape[0], limit_up_new.shape[0], limit_up_fresh.shape[0]))print('跌停数量:%d 个, 涨停中上市日期小于15天的:%d, 涨停中上市日期小于1年的:%d' % (limit_down.shape[0], limit_down_new.shape[0], limit_down_fresh.shape[0]))def get_output(df, columns='_industry', name='_limit_up'):# df.copy(deep= False)和df.copy()都是浅拷贝,是复制了旧对象的内容,然后重新生成一个新对象,改变旧对象不会影响新对象。df = df.copy()output = pd.DataFrame()#df.groupby(columns)根据列值分组数据,并根据股票代码统计数据output = pd.DataFrame(df.groupby(columns)['ts_code'].count())output['pe_mean'] = round(df.groupby(columns)['pe'].mean(),2)output['nmc_mean'] = round(df.groupby(columns)['circ_mv'].mean(),2)output['mktcap_mean'] = round(df.groupby(columns)['total_mv'].mean(),2)output['volume_mean'] = round(df.groupby(columns)['vol'].mean(),2)output['amount_mean'] = round(df.groupby(columns)['amount'].mean(),2)#依据ts_code进行降序,排序后的数据集替换原来的数据output.sort_values('ts_code', ascending=False, inplace=True)#改列值名字,将ts_code改成name+‘_count’的形式output.rename(columns={'ts_code': name + '_count'}, inplace=True)return outputfile = docx.Document()file.add_paragraph('A股上涨个数: %d, A股下跌个数: %d, A股走平个数: %d。' % (df_up.shape[0], df_down.shape[0], df_even.shape[0]))file.add_paragraph('A股总成交额:%d, 总成交量:%d' % (df['amount'].sum(), df['vol'].sum()))file.add_paragraph('A股平均市盈率:%.2f, 平均流通市值 %.2f 亿, 平均总市值 %.2f 亿' % (df['pe'].mean(), df['circ_mv'].mean(), df['total_mv'].mean()))file.add_paragraph('涨停数量:%d 个, 涨停中上市日期小于15天的:%d, 涨停中上市日期小于1年的:%d' % (limit_up.shape[0], limit_up_new.shape[0], limit_up_fresh.shape[0]))file.add_paragraph('跌停数量:%d 个, 涨停中上市日期小于15天的:%d, 涨停中上市日期小于1年的:%d' % (limit_down.shape[0], limit_down_new.shape[0], limit_down_fresh.shape[0]))file.add_paragraph('\n')for i in ['industry', 'exchange', 'area']:# 对涨停的股票分析output_limit_up = get_output(limit_up, columns=i, name='limit_up').reset_index()# 对跌停的股票分析output_limit_down = get_output(limit_down, columns=i, name='limit_down').reset_index()# 对全量的股票分析output_total = get_output(df, columns=i, name='total').reset_index()print(output_limit_up)print(output_limit_down)print(output_total)for j in [output_limit_up, output_limit_down, output_total]:tb = file.add_table(rows=len(j.index)+1, cols=len(j.columns),style='Medium Grid 3 Accent 1')tb.autofit = False  #关闭表格行宽自适应for x in range(len(j.columns)):tb.cell(0, x).text = j.columns[x]  #添加表列头tb.cell(0, x).width = Inches(1.2)  #设置行宽tb.cell(0, x).paragraphs[0].alignment = WD_ALIGN_PARAGRAPH.CENTER  #文字居中for row in range(len(j.index)):for col in range(len(j.columns)):tb.cell(row+1, col).text = str(j.iloc[row, col]) #设置行宽tb.cell(row+1, col).paragraphs[0].alignment = WD_ALIGN_PARAGRAPH.CENTER #文字居中file.add_paragraph('\n')    #表格换行#之所以生成文件慢是因为output_total这个统计需要长时间写入docx,如果需要速度快你可以试着把output_total去掉#生成一个docx文件我的电脑需要34分钟左右file.save('D:\\all_data_word\\{}_分析报告.docx'.format(str(date_now)))print('{}_分析报告分析完成'.format(str(date_now)))
if __name__=="__main__":get_analysis_stockdata('20200101', '20200106')

效果图:
在这里插入图片描述
在这里插入图片描述
PS:这代码的成功运行跟我前面发的两篇文章有关,可以的话请先查看我博客里文章先。
tushare注册链接:link

http://www.lbrq.cn/news/1340677.html

相关文章:

  • 网站加载等待/海南百度推广开户
  • 静态网站用什么做/杭州网站
  • 怎么查网站建设是哪家公司/百度seo课程
  • 贵阳疫情爆发时间/谷歌seo优化公司
  • 建站合同/万能搜索引擎
  • 莱芜网站建设资情况介绍/网络营销的三大基础
  • 个人网站开发/广州网络广告推广公司
  • 上海做网站找谁/重庆自动seo
  • 做英文网站内容来源/上海关键词排名优化怎样
  • wordpress主题启用后/优化视频
  • 专门做钣金的网站/网络推广网络营销软件
  • 运城推广型网站建设/百度贴吧官网入口
  • 张家港建网站价格/谷歌关键词排名查询工具
  • ps做网站框架搭建/seo网络科技有限公司
  • 怎样做阿里巴巴网站的店招/业务推广网站
  • 西宁做网站制作的公司/网络营销的整体概念
  • 网站可以做固定资产吗/站长工具查询系统
  • 网络公司开发网站/重庆网站建设公司
  • 二级网站怎么建设/在哪个网站可以免费做广告
  • 表情包做旧网站/营销推广怎么做
  • 四川成都最新新闻事件今天/栾城seo整站排名
  • b2c模式的网站有哪些/百度应用宝
  • 家政公司在哪个平台推广效果好/杭州seo排名优化外包
  • wordpress html 标签/整站优化
  • 网站banner文字最大多少/快速优化seo
  • 企业网站建设现状/百度指数的基本功能
  • 个人备案网站做淘宝客可以用吗/推广产品怎么发朋友圈
  • 做网站宽度和长度布局/保温杯软文营销300字
  • 建设一个公司网站/it行业培训机构一般多少钱
  • 温州建设网站制作/360识图
  • 区块链让物联网真正链接万物
  • Java 基础编程案例:从输入交互到逻辑处理
  • Vue 事件冒泡处理指南:从入门到精通
  • C4.5算法:增益率(Gain Ratio)
  • BGP笔记整理
  • 【linux基础】Linux命令提示符解析与操作指南