首页  

使用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 量化库