股票数据分析

168 阅读2分钟

携手创作,共同成长!这是我参与「掘金日新计划 · 8 月更文挑战」的第11天,点击查看活动详情

股票数据分析

读取收盘价和交易量数据,实现如下功能:

(1)统计收盘价的算术平均数。

(2)统计收盘价的加权平均值(权值为交易量)。

(3)统计收盘价的方差。

(4)统计收盘价的中位数。

(5)统计收盘价的最小值。

(6)统计收盘价的最大值。

(7)绘制股票最高价和最低价折线图。

1.下载stock.xlsx股票信息文件

读取stock.xlsx文件中的股票信息作为一个DataFrame,计算每天最高价与最低价的算术平均值。将此平均值作为单独的一列添加到原始数据的DataFrame对象中。

image.png

2.函数解析

numpy.loadtxt从txt或csv文件中读取数据,返回数组。函数定义如下:

numpy.loadtxt(fname, dtype=<class 'float'>, comments='#',delimiter=None, converters=None, skiprows=0,usecols=None, unpack=False, ndmin=0, encoding='bytes')

参数含义如下: fname:要读取的文件或文件名;

dtype:结果数组的数据类型,默认为float类型;

comments:标记注释的字符串;

delimiter:文件中分隔值的字符串;

converters:将列号映射到函数的字典,这个函数将该列字符串解析为所需的值;

skiprows:读取数据时跳过的行数;

usecols:整数或整数序列,表示需要读取的列号(列编号从0开始);

unpack:是否将返回的数组转置,若为True,返回的数组将被转置,方便将每列数据组成的数组分别赋值给一个单独的变量或作为序列中单独的一个元组;

ndmin:整数(0、1或2),表示返回数组至少具有的维数,否则一维轴会被压缩;

encoding:用于解码文件中字符的编码。

3.终端运行

import numpy as np
import matplotlib.pyplot as plt

close_price, change_volume = np.loadtxt('stock.csv', delimiter=',',
                                        usecols=(4, 6), unpack=True,
                                        skiprows=1)
print(close_price)
print(change_volume )
meanS1 = np.mean(close_price)
print('收盘价算术平均值:', meanS1)
wavgS1 = np.average(close_price, weights=change_volume)
print('收盘价的加权平均值:', wavgS1)
varS1 = np.var(close_price)
print('收盘价的方差:', varS1)
medianS1 = np.median(close_price)

print('收盘价的中位数:', medianS1)
minS1 = np.min(close_price)
print('收盘价的最小值:', minS1)
maxS1 = np.max(close_price)
print('收盘价的最大值:', maxS1)

plt.rcParams['font.family'] = "STSong"
Date = np.loadtxt('stock.csv', dtype=str,delimiter=',',
                                        usecols=(0), unpack=True,
                                        skiprows=1)
High_price, Low_price = np.loadtxt('stock.csv', delimiter=',',
                                        usecols=(2, 3), unpack=True,
                                        skiprows=1)

plt.figure(num="股票分析", figsize=(30, 6))  # 绘图区域大小
plt.rcParams['font.family'] = 'STSong'  # 设置字体
plt.title("股票最高和最低价")  # 图片标题
plt.xlabel("日期")  # X轴标签
plt.ylabel("价格")  # Y轴标签

plt.plot(Date, High_price, "rs--", label="最高股价")  # 绘制最高股价
plt.plot(Date, Low_price, "bo:", label="最低股价")  # 绘制最低股价
plt.legend()  # 显示图例
plt.savefig("ggg.png")  # 保存图片
plt.show()  # 显示图片

4.运行结果

image.png

image.png