pyecharts 可视化小练

编程入门 行业动态 更新时间:2024-10-07 22:21:23

<a href=https://www.elefans.com/category/jswz/34/1762087.html style=pyecharts 可视化小练"/>

pyecharts 可视化小练

 

import tushare as ts
import pandas as pd
import time
import datetime
from sqlalchemy import create_engine
import numpy as np
engine = create_engine('mssql+pymssql://sa:123456@127.0.0.1:1433/fenben',echo=True)
engine.connect()
tb='中国宝安'
data=pd.read_sql('select convert(varchar,trade_date,23) ,* from {gp} order by trade_date asc'.format(gp=tb),con=engine)
del data['ts_code']
del data['trade_date']
import pyecharts.options as opts
from pyecharts.charts import Line,Bar,Page
from pyechartsponents import Table
from pyecharts.options import ComponentTitleOpts

week_name_list = data.iloc[:,0].tolist()
high_temperature = data['close']
# )
c=(
# Line(init_opts=opts.InitOpts(width="1600px", height="800px"))
Line()
.add_xaxis(xaxis_data=week_name_list)
.add_yaxis(
series_name=tb,
y_axis=high_temperature,
markpoint_opts=opts.MarkPointOpts(
data=[
opts.MarkPointItem(type_="max", name="最大值"),
opts.MarkPointItem(type_="min", name="最小值"),
]
),
markline_opts=opts.MarkLineOpts(
data=[opts.MarkLineItem(type_="average", name="平均值")]
),
)
.set_global_opts(
title_opts=opts.TitleOpts(title="行情趋势图", subtitle="仅供学习参考"),
tooltip_opts=opts.TooltipOpts(trigger="axis"),
toolbox_opts=opts.ToolboxOpts(is_show=True),
xaxis_opts=opts.AxisOpts(type_="category", boundary_gap=False),
)
# .render("temperature_change_line_chart.html")
)
dcp=data['close'].describe()
thead=dcp.index.tolist()
print(dcp)
trow=dcp.tolist()
dmax=int(data['close'].max())
fanwei=list(range(0,dmax,2))
# print(fanwei)
fenzu=pd.cut(data['close'].values,fanwei,right=False)
pinshu=fenzu.value_counts()
# a=[ '[0, 3)','[3, 6)','[6, 9)','[9, 12)','[12, 15)','[15, 18)','[18, 21)','[21, 24)','[24, 27)']
a=fanwei[1:]
d = (
Bar()
.add_xaxis(a)
.add_yaxis(tb,y_axis=pinshu.tolist())
.set_global_opts(title_opts=opts.TitleOpts(title="分布图"))
# .render("bar_histogram.html")
)
headers =thead
rows =[trow]
e=(
Table()
.add(headers, rows)
.set_global_opts(title_opts=ComponentTitleOpts(title="描述统计", subtitle="count:计数,mean:平均值,std:标准差,min:最小值,max:最大值,%:分位值")
)
)

sql_ex='select convert(varchar,trade_date,23) as pcd ,* from {gpname} order by trade_date asc '.format(gpname=tb)
df = pd.read_sql(sql=sql_ex, con=engine,index_col = 'pcd',parse_dates=['pcd'])
sub = df['close']
train = df['close'].tail(int(len(sub)*0.7))
test = df['close'].head(int(len(sub)*0.3))
import statsmodels.api as sm
train_results = sm.tsa.arma_order_select_ic(train, ic=['aic', 'bic'], trend='nc', max_ar=8, max_ma=8)
q=train_results.aic_min_order[0]
p=train_results.aic_min_order[1]
model = sm.tsa.ARIMA(sub, order=(q, 0, p))
results = model.fit()
predict_sunspots = results.predict(start=pd.to_datetime( '2021-03-01'),end=pd.to_datetime('2021-08-11'),dynamic=False)
rf=np.round(np.array(results.forecast(30)[0]),2).tolist()
f=(
Line()
.add_xaxis(xaxis_data=list(range(0,30,1)))
.add_yaxis(
series_name="30天预测",
# y_axis=results.forecast(30)[0]
y_axis=rf
)
.set_global_opts(
          yaxis_opts=opts.AxisOpts(
              min_=results.forecast(30)[0].min()
        ),title_opts=opts.TitleOpts(title="趋势预测图")
   ))
page = Page(layout=Page.SimplePageLayout) # 简单布局 layout=Page.DraggablePageLayout Page.SimplePageLayout
# 将上面定义好的图添加到 page
page.add(e, c,d,f)
page.render("page_simple_layout.html")

更多推荐

pyecharts 可视化小练

本文发布于:2024-03-04 03:30:18,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1708158.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:pyecharts

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!