用python实现计算收盘均值价的涨跌幅的均值、标准差,将开盘价涨跌幅、最高价涨跌幅、最低价涨跌幅三组数据分别以下操作:小于等于均值-3倍标准差的数据标记为-3、大于均值-3倍标准差且小于等于均值-2倍标准差的交易价格标记为-2,大于均值-2倍标准差且小于等于均值-1倍标准差的交易价格标记为-1,图形化展示标记数据,即将得到的三组标记数据绘制成三维图
时间: 2024-03-14 21:46:06 浏览: 64
好的,我来解答你的问题。
首先,我们需要获取收盘价、开盘价、最高价和最低价的数据,并计算出收盘价的均值和标准差,以及开盘价、最高价、最低价的涨跌幅。
可以使用pandas库来读取数据,并计算均值和标准差,代码如下:
```python
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
# 读取数据
df = pd.read_csv('data.csv')
# 计算收盘价的均值和标准差
close_mean = np.mean(df['收盘价'])
close_std = np.std(df['收盘价'])
# 计算开盘价、最高价、最低价的涨跌幅
df['开盘价涨跌幅'] = (df['开盘价'] - df['收盘价'].shift(1)) / df['收盘价'].shift(1)
df['最高价涨跌幅'] = (df['最高价'] - df['收盘价'].shift(1)) / df['收盘价'].shift(1)
df['最低价涨跌幅'] = (df['最低价'] - df['收盘价'].shift(1)) / df['收盘价'].shift(1)
```
然后,我们需要根据收盘价的均值和标准差,将开盘价、最高价、最低价的涨跌幅进行标记,代码如下:
```python
# 将开盘价涨跌幅进行标记
df.loc[df['开盘价涨跌幅'] <= close_mean - 3 * close_std, '开盘价标记'] = -3
df.loc[(df['开盘价涨跌幅'] > close_mean - 3 * close_std) & (df['开盘价涨跌幅'] <= close_mean - 2 * close_std), '开盘价标记'] = -2
df.loc[(df['开盘价涨跌幅'] > close_mean - 2 * close_std) & (df['开盘价涨跌幅'] <= close_mean - close_std), '开盘价标记'] = -1
# 将最高价涨跌幅进行标记
df.loc[df['最高价涨跌幅'] <= close_mean - 3 * close_std, '最高价标记'] = -3
df.loc[(df['最高价涨跌幅'] > close_mean - 3 * close_std) & (df['最高价涨跌幅'] <= close_mean - 2 * close_std), '最高价标记'] = -2
df.loc[(df['最高价涨跌幅'] > close_mean - 2 * close_std) & (df['最高价涨跌幅'] <= close_mean - close_std), '最高价标记'] = -1
# 将最低价涨跌幅进行标记
df.loc[df['最低价涨跌幅'] <= close_mean - 3 * close_std, '最低价标记'] = -3
df.loc[(df['最低价涨跌幅'] > close_mean - 3 * close_std) & (df['最低价涨跌幅'] <= close_mean - 2 * close_std), '最低价标记'] = -2
df.loc[(df['最低价涨跌幅'] > close_mean - 2 * close_std) & (df['最低价涨跌幅'] <= close_mean - close_std), '最低价标记'] = -1
```
最后,我们将得到的三组标记数据绘制成三维图,代码如下:
```python
from mpl_toolkits.mplot3d import Axes3D
fig = plt.figure()
ax = fig.add_subplot(111, projection='3d')
ax.scatter(df['开盘价标记'], df['最高价标记'], df['最低价标记'])
ax.set_xlabel('开盘价标记')
ax.set_ylabel('最高价标记')
ax.set_zlabel('最低价标记')
plt.show()
```
这样就可以得到三维图,图中的点表示标记的数据,可以根据点的位置判断其属于哪一组标记。
阅读全文