原始数据

 导入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()

Logo

永洪科技,致力于打造全球领先的数据技术厂商,具备从数据应用方案咨询、BI、AIGC智能分析、数字孪生、数据资产、数据治理、数据实施的端到端大数据价值服务能力。

更多推荐