简单股票数据可视化分析

本文介绍了如何使用Python中的numpy、pandas和matplotlib库对Baidu股票数据进行处理,包括数据读取、排序、绘制收盘价折线图以及使用pyecharts进行K线图和移动平均线的绘制。
摘要由CSDN通过智能技术生成

 原始数据

 导入numpy、pandas和matplotlib库
#导入数据分析三大剑客
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt

#正常显示中文和负号
plt.rcParams['font.sans-serif'].insert(0, 'SimHei')
plt.rcParams['axes.unicode_minus'] = False
#将图片进行矢量化
%config InlineBackend.figure_format = 'svg'
读取数据并进行简单处理
#读取数据
baidu_df = pd.read_excel('res/2022年股票数据.xlsx')

#将其日期按照升序排序并重置序号
baidu_df.sort_values(by='Date', ascending=True, inplace=True)
baidu_df.reset_index(drop=True, inplace=True)
baidu_df

数据可视化

绘制折线图

# 绘制全年收盘价的折线图
baidu_df.set_index('Date').Close.plot(kind='line', figsize=(10, 5))
plt.ylim(60, 140)
plt.show()

使用pyecharts绘图

#在顶部声明 Notebook 类型 
from pyecharts.globals import CurrentConfig, NotebookType
 CurrentConfig.NOTEBOOK_TYPE = NotebookType.JUPYTER_LAB
from pyecharts import options as opts
from pyecharts.charts import Kline

date = baidu_df.Date.dt.strftime('%m-%d').values.tolist()
data = baidu_df[['Open', 'Close', 'Low', 'High']].values.tolist()

kline = Kline()
kline.add_xaxis(date)
kline.add_yaxis("kline", data)
kline.set_global_opts(
    xaxis_opts=opts.AxisOpts(is_scale=True),
    yaxis_opts=opts.AxisOpts(
        is_scale=True,
        splitarea_opts=opts.SplitAreaOpts(
            is_show=True, areastyle_opts=opts.AreaStyleOpts(opacity=1)
        ),
    ),
    datazoom_opts=[opts.DataZoomOpts()],    #可提供区域缩放功能
    legend_opts=opts.LegendOpts(is_show=False),
)
#渲染K线图
kline.load_javascript()
#生成K线图
kline.render_notebook()

# 移动平均(5日平均)
ma5 = baidu_df.Close.rolling(5).mean()
ma5

# 移动平均(10日平均)
ma10 = baidu_df.Close.rolling(10).mean()
ma10

 

绘制折线图

from pyecharts.charts import Line
from pyecharts import options as opts

x_data = baidu_df.Date.dt.strftime('%m-%d').values.tolist()
y_data1 = ma5.values.tolist()
y_data2 = ma10.values.tolist()

# 创建折线图对象
line = Line(init_opts=opts.InitOpts(width='1000px', height='600px'))
# 添加横轴的数据
line.add_xaxis(xaxis_data=x_data)
# 添加纵轴的数据
line.add_yaxis(
    series_name='MA5',
    y_axis=y_data1,
    label_opts=opts.LabelOpts(is_show=False),
)
line.add_yaxis(
    series_name='MA10',
    y_axis=y_data2,
    label_opts=opts.LabelOpts(is_show=False),
)
line.set_global_opts(
    legend_opts=opts.LegendOpts(is_show=True),
    yaxis_opts=opts.AxisOpts(
        min_=80,
        max_=140
    )
)
# 加载绘图需要的JS文件
line.load_javascript()
line.render_notebook()

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值