使用pandas分析沪深300指数行业权重
所属分类 quant
浏览量 432
沪深300 成本股权重 和 沪深个股行业 可从中证指数公司官网下载
下载excel 后 转成 csv 格式,方便 pandas读取
中证行业分类(2021版)
https://www.csindex.com.cn/#/dataService/industryClassification
沪深300 行业分布
https://www.csindex.com.cn/#/indices/family/detail?indexCode=000300
# 导入 pandas包
import pandas as pd
# 沪深300 成本股权重
hs300_weight_file="/data/hs300weight.csv"
# 沪深个股行业
stock_industry_file="/data/industry-classify.csv"
hs300_weight_df = pd.read_csv(hs300_weight_file)
industry_df = pd.read_csv(stock_industry_file)
# 筛选列 4 5 9
hs300_weight_df2 = hs300_weight_df.iloc[:,[4,5,9]]
hs300_weight_df2.columns
hs300_weight_df2.head()
# 列名修改
hs300_weight_df2.columns=["code","name","weight"]
hs300_weight_df2.columns
hs300_weight_df2.head()
# code 整数转字符串,不足六位前面补零
hs300_weight_df2['code_str'] = hs300_weight_df2['code'].apply(lambda x: f"{x:06d}")
# 使用这个也可以
hs300_weight_df2['code_str'] = hs300_weight_df2['code'].astype(str).str.zfill(6)
# 选取列 第 0 到6列
industry_df2 = industry_df.iloc[:,0:6]
# 列名修改
industry_df2.columns=["code","name","icode1","iname1","icode2","iname2"]
industry_df2.columns
# 列名修改 name 改成 sname
hs300_weight_df2.columns = ['codeint', 'sname', 'weight', 'code']
# 连接 列名重复 会自动加上前缀 譬如 xname yname
df = pd.merge(hs300_weight_df2,industry_df2,how='inner',on='code')
# 一级行业权重 分组汇总
industry1_weights = df.groupby(by=['iname1'])['weight'].sum()
# 二级行业权重 分组汇总
industry2_weights = df.groupby(by=['iname2'])['weight'].sum()
type(industry2_weights)
pandas.core.series.Series
# 值排序
industry1_weights.sort_values()
# 值排序 降序
industry1_weights.sort_values(ascending=False)
# 一级行业code 分组 权重求和
industry1_code_weights = df.groupby(by=['icode1'])['weight'].sum()
# 折线图
industry1_code_weights.plot()
# 饼图
industry1_code_weights.plot(kind='pie')
画图 中文显示乱码 missing from current font.
上一篇
下一篇
使用 mplfinance 画 K线
python import 用法
pandas 画图
大数据数学基础(Python语言描述) 内容简介和目录
量化投资入门指南
Python 量化库