Python金融数据获取与处理:同花顺与东方财富股票信息数据的深度挖掘

        在金融数据分析领域,获取准确且全面的数据是进行有效分析的前提。本文将介绍如何利用Python的相关库,特别是akshare库,来获取同花顺和东方财富平台的金融数据,并进行数据处理与保存,为后续的金融数据分析奠定基础。

        本人写这篇代码的目的主要是去获取一些股票研究的基本信息,比如各行业、各板块、各概念、各成分股的股票类目等等。

一、同花顺行业一览表获取

        同花顺作为国内知名的金融信息服务提供商,其行业数据具有较高的参考价值。通过akshare库,我们可以方便地获取同花顺行业的汇总信息。

import pandas as pd
#同花顺行业一览表
stock_board_industry_summary_ths_df = ak.stock_board_industry_summary_ths()
stock_board_industry_summary_ths_df.to_excel("同花顺行业一览表.xlsx")
print(stock_board_industry_summary_ths_df)

二、东方财富行业板块获取

        东方财富网提供了丰富的金融数据和分析工具。以下代码展示了如何获取东方财富的行业板块信息,并将其保存到Excel文件中,便于后续的数据处理和分析。

import akshare as ak
#东方财富行业板块
stock_board_industry_name_em_df = ak.stock_board_industry_name_em()
stock_board_industry_name_em_df.to_excel("东方财富行业板块.xlsx")
print(stock_board_industry_name_em_df)

三、东方财富成分股获取

        在获取了行业板块信息后,我们往往需要进一步获取每个板块的成分股,以便进行更深入的分析。以下代码通过遍历之前获取的行业板块信息,获取每个板块的成分股,并将所有数据整合后保存到一个新的Excel文件中。

         需要遍历"东方财富行业板块.xlsx"

import pandas as pd
import akshare as ak

# 读取data.xlsx文件
try:
    data_df = pd.read_excel("东方财富行业板块.xlsx", sheet_name=0)  # 假设数据在第一个工作表中
except FileNotFoundError:
    print("文件未找到,请确保data.xlsx文件存在且路径正确。")
    exit()
except Exception as e:
    print(f"读取文件时出错:{e}")
    exit()

# 检查是否包含"板块名称"列
if "板块名称" not in data_df.columns:
    print("Excel文件中未找到'板块名称'列,请检查列名是否正确。")
    exit()

# 创建一个空的DataFrame用于存储所有数据
all_data_df = pd.DataFrame()

# 遍历"板块名称"列中的每个板块
for value in data_df["板块名称"]:
    try:
        # 获取板块数据
        stock_board_industry_cons_em_df = ak.stock_board_industry_cons_em(symbol=value)
        
        # 检查是否获取到数据
        if stock_board_industry_cons_em_df is None or stock_board_industry_cons_em_df.empty:
            print(f"未获取到数据:板块名称为'{value}'")
            continue
        
        # 添加一列,存放板块名称(value值)
        stock_board_industry_cons_em_df["板块名称"] = value
        
        # 将数据追加到总DataFrame中
        all_data_df = pd.concat([all_data_df, stock_board_industry_cons_em_df], ignore_index=True)
        print(f"成功获取并添加数据:板块名称为'{value}'")
    except Exception as e:
        print(f"处理板块名称'{value}'时出错:{e}")

# 保存到新的Excel文件
try:
    all_data_df.to_excel("output_data.xlsx", index=False)
    print("数据已成功保存到'output_data.xlsx'文件中。")
except Exception as e:
    print(f"保存文件时出错:{e}")

四、沪深300-东方财富-个股人气榜-热门关键词获取

        沪深300指数是中国A股市场的重要指标之一,涵盖了沪深两市300家规模大、流动性好的代表性企业。获取沪深300成分股的热门关键词,可以帮助我们了解市场关注点和投资热点。

        需要遍历“沪深300股票类目表.xlsx”

import pandas as pd
import akshare as ak

# 读取data.xlsx文件
try:
    data_df = pd.read_excel("沪深300股票类目表.xlsx", sheet_name=0)  # 假设数据在第一个工作表中
except FileNotFoundError:
    print("文件未找到,请确保data.xlsx文件存在且路径正确。")
    exit()
except Exception as e:
    print(f"读取文件时出错:{e}")
    exit()

# 检查是否包含"板块名称"列
if "code1" not in data_df.columns:
    print("Excel文件中未找到'code1'列,请检查列名是否正确。")
    exit()

# 创建一个空的DataFrame用于存储所有数据
all_data_df = pd.DataFrame()

# 遍历"板块名称"列中的每个板块
for value in data_df["code1"]:
    try:
        # 获取板块数据
        stock_hot_keyword_em_df = ak.stock_hot_keyword_em(symbol=value)
        
        # 检查是否获取到数据
        if stock_hot_keyword_em_df is None or stock_hot_keyword_em_df.empty:
            print(f"未获取到数据:板块名称为'{value}'")
            continue
        
        # 添加一列,存放板块名称(value值)
        stock_hot_keyword_em_df["code1"] = value
        
        # 将数据追加到总DataFrame中
        all_data_df = pd.concat([all_data_df, stock_hot_keyword_em_df], ignore_index=True)
        print(f"成功获取并添加数据:板块名称为'{value}'")
    except Exception as e:
        print(f"处理板块名称'{value}'时出错:{e}")

# 保存到新的Excel文件
try:
    all_data_df.to_excel("东方财富-个股人气榜-热门关键词(沪深300).xlsx", index=False)
    print("数据已成功保存到'output_data.xlsx'文件中。")
except Exception as e:
    print(f"保存文件时出错:{e}")

五、概念板块类目表及成分股获取

        概念板块反映了市场对特定主题或行业的关注和投资热情。以下代码首先获取所有概念板块的类目表,然后针对特定概念板块,获取其成分股信息,并保存到相应的Excel文件中。

import akshare as ak
import pandas as pd


def fetch_and_save_concept_stocks(name):
    """
    获取指定股票概念的成分股,并保存至Excel文件。

    :param name: 股票概念名称
    """
    # 获取所有股票概念及其成分股信息
    concept_stocks_df = ak.stock_board_concept_name_em()
    spath = f"./概念板块.xlsx"
    concept_stocks_df.to_excel(spath, index=False)

    # 检查指定概念是否存在
    if name not in concept_stocks_df['板块名称'].values:
        print(f"未找到板块名称'{name}',请检查输入是否正确。")
        return

    # 筛选出指定概念的成分股
    df = ak.stock_board_concept_cons_em(name)

    # 保存至Excel文件
    spath = f"./{name}.xlsx"
    df.to_excel(spath, index=False)

    print(f"成功将股票概念'{name}'的成分股保存至'{spath}'。")


# 示例:获取并保存“低空经济”概念的成分股
fetch_and_save_concept_stocks("低空经济")

         为了获取所有概念板块的成分股,我们可以遍历概念板块类目表,并对每个板块调用上述函数。

import pandas as pd
import akshare as ak

# 读取概念板块文件
input_file = "概念板块.xlsx"  # 输入文件名
output_file = "概念板块成分股.xlsx"  # 输出文件名

# 读取 Excel 文件中的“板块名称”列
try:
    concept_df = pd.read_excel(input_file)
    if "板块名称" not in concept_df.columns:
        raise ValueError("Excel 文件中没有找到 '板块名称' 列!")
except Exception as e:
    print(f"读取 Excel 文件时出错:{e}")
    exit()

# 初始化一个空的 DataFrame 用于存储所有概念的成分股
all_concept_stocks = pd.DataFrame()

# 遍历每个板块名称,获取成分股
for index, row in concept_df.iterrows():
    concept_name = row["板块名称"]
    print(f"正在获取 {concept_name} 的成分股...")

    try:
        # 调用 AKShare 获取成分股
        concept_stocks = ak.stock_board_concept_cons_em(symbol=concept_name)
        if concept_stocks is not None and not concept_stocks.empty:
            concept_stocks["板块名称"] = concept_name  # 添加板块名称列
            all_concept_stocks = pd.concat([all_concept_stocks, concept_stocks], ignore_index=True)
        else:
            print(f"未找到 {concept_name} 的成分股数据。")
    except Exception as e:
        print(f"获取 {concept_name} 的成分股时出错:{e}")

# 保存到 Excel 文件
try:
    all_concept_stocks.to_excel(output_file, index=False)
    print(f"所有概念的成分股已成功保存到 {output_file}")
except Exception as e:
    print(f"保存到 Excel 文件时出错:{e}")

六、总结

        通过上述代码,我们成功地获取了同花顺和东方财富平台的金融数据,包括行业板块、成分股、热门关键词等信息,并将这些数据保存到Excel文件中,为后续的金融数据分析和策略制定提供了丰富的数据基础。在实际应用中,这些数据可以进一步用于构建投资组合、进行风险评估、挖掘投资机会等,帮助投资者做出更加明智的投资决策。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值