跳转到根目录:知行合一:投资篇
已完成:
1、投资&技术
1.1.1 投资-编程基础-numpy
1.1.2 投资-编程基础-pandas
1.2 金融数据处理
1.3 金融数据可视化
2、投资方法论
2.1.1 预期年化收益率
2.1.2 一个关于y=ax+b的故事
2.1.3-数据标准化
2.1.4-相关性分析
2.2.1.1-一个关于定投的故(姿)事(势)
2.2.1.3-移动平均线
3、投资实证
[3.1 2023这一年] 被鸽
文章目录
1. 什么是数据标准化?
数据标准化,就是把2个原先无法直接比较的数据,将其进行处理后,可以放在一起比较。
举个例子:
如果我们要比较贵州茅台和券商ETF的收盘价对比,直接对比是无法比较的,价格相差太多了。贵州茅台1600元一股,券商ETF是0.8元一股,画收盘价折线图是不太好画的。
所以,我们需要将2者标准化处理,变成可以在1个图中可以对比的。
2. 数据准备
这里,我们拿沪深300和医药ETF来看怎么做数据标准化。
操作流程相对比较简单:
- 使用qstock获取数据
- 将数据放在一起,拼接成dataframe
- 使用sklearn对dataframe的数据进行标准化处理
import qstock as qs
import pandas as pd
stocks_info = [
{
'code': '510300', 'name': '沪深300'},
{
'code': '512010', 'name': '医药ETF'}
]
# 使用qstock获取数据
for stock in stocks_info:
df = qs.get_data(stock['code']) # 从qstock获取对应的股票历史数据
stock['history_df'] = df # 将其存在 history_df 这个key里面。
# 将数据放在一起,拼接成dataframe
df_all = pd.DataFrame()
for stock in stocks_info:
df = stock['history_df']
df = df[['close']] # 只需要 date 和 close 2列就行了。
df.rename(columns={
'close': stock['name']}, inplace=True) # 用股票的名字来重命名close列
if df_all.size == 0:
df_all = df
else:
df_all = df_all.join(df) # join是按照index来连接的。
print('数据标准化前:\n', df_all) # 取第1列和第2列的方法: df_all.iloc[:, 0:2]
# 使用sklearn对dataframe的数据进行标准化处理
import sklearn
from sklearn import preprocessing
z_scaler = preprocessing.StandardScaler() # 建立 StandardScaler 对象
z_data = z_scaler.fit_transform(df_all) #数据标准化
z_data = pd.DataFrame(z_data) #将数据转为Dataframe
z_data.columns = df_all.columns
z_data.index = df_all.index
print('数据标准化后:\n', z_data)
数据标准化前:
沪深300 医药ETF
date
2012-05-28 2.004 NaN
2012-05-29 2.044 NaN
2012-05-30 2.036 NaN
2012-05-31 2.030 NaN
2012-06-01 2.030 NaN
... ... ...
2024-01-10 3.341 0.386
2024-01-11 3.360 0.390
2024-01-12 3.349 0.384
2024-01-15 3.345 0.385
2024-01-16 3.367 0.385
[2833 rows x 2 columns]
数据标准化后:
沪深300 医药ETF
date
2012-05-28 -1.316805 NaN
2012-05-29 -1.276481 NaN
2012-05-30 -1.284546 NaN
2012-05-31 -1.290595 NaN
2012-06-01 -1.290595 NaN
... ... ...
2024-01-10 0.031019 -0.292433
2024-01-11 0.050172 -0.265917
2024-01-12 0.039083 -0.305691
2024-01-15 0.035051 -0.299062
2024-01