基于akshare、pandas和matplotlib的全球指数分析实践(附源码)

一、项目背景与目标

在全球金融市场分析中,指数数据是衡量市场表现的核心指标。本文通过Python技术栈(akshare + pandas + matplotlib),实现从数据采集、清洗到可视化的完整流程,最终输出以下分析成果:

  • 全球主要指数2024年涨跌横向对比图
    2024 年全球主要指数归一化价格条形图(以 2024 年 1 月 1 日价格为基准,对比 2024 年 12 月 31 日各指数相对表现)📈 全球指数2024年对比条形图

  • 动态走势分析:头部/尾部指数的2024年价格演化折线图
    2024年整年表现最好的5个指数走势图表现最好的5个指数
    2024年整年表现最差的5个指数走势图
    表现最差的5个指数

  • 数据存储:结构化CSV文件的持久化存储

    • 1个实时行情数据文件(包含所有指数最后一个交易日的数据)
    • 56个指数的历史行情数据文件

请添加图片描述

一、代码功能概述

整个程序主要实现了以下几个核心功能:

  1. 目录操作相关函数: 几个和目录、读写CSV文档相关的基础函数
  2. 数据获取与存储:从akshare库获取全球指数实时行情数据,以及各个指数的历史行情数据,并将数据保存为CSV文件。
  3. 数据处理:通过pandas对读取的历史数据进行清洗和处理,主要目的是日期对齐、数据归一化等操作,以便后续分析。
  4. 数据可视化:通过matplotlib库绘制折线图和条形图,直观展示指数的归一化价格走势以及最后一天各指数的表现情况。

二、代码详细解析

1. 目录及csv读写相关函数

import os
import pandas as pd
import matplotlib.pyplot as plt
import akshare as ak


def ensure_directory_exists(directory):
    """
    确保指定目录存在,如果不存在则创建该目录。
    :param directory: 目录路径
    """
    if not os.path.exists(directory):
        os.makedirs(directory)


def save_funds_to_csv(df, filename, directory='data'):
    """
    将 DataFrame 保存为 CSV 文件。
    :param df: 要保存的 DataFrame
    :param filename: 文件名
    :param directory: 保存目录
    """
    ensure_directory_exists(directory)
    file_path = os.path.join(directory, filename)
    df.to_csv(file_path, index=False)


def read_funds_from_csv(filename, directory='data'):
    """
    从指定目录的 CSV 文件中读取数据。
    :param filename: 文件名
    :param directory: 目录路径
    :return: 包含数据的 DataFrame,如果文件不存在或读取错误则返回空 DataFrame
    """
    file_path = os.path.join(directory, filename)
    try:
        return pd.read_csv(file_path, dtype={
   '代码': str})
    except FileNotFoundError:
        print(f"文件未找到: {
     file_path}")
        return pd.DataFrame()
    except Exception as e:
        print(f"读取文件 {
     file_path} 时出错: {
     e}")
        return pd.DataFrame()

上述代码定义了三个函数,用于处理文件和目录操作:

  • ensure_directory_exists:检查指定目录是否存在,若不存在则创建该目录,保证数据存储路径的有效性。
  • save_funds_to_csv:将pandasDataFrame对象保存为CSV文件,调用ensure_directory_exists确保保存目录存在。
  • read_funds_from_csv:从指定目录读取CSV文件,若文件不存在或读取过程中出现错误,返回空的DataFrame,并打印相应的错误信息。

2. 数据提取与存储函数

def extract_and_store_data():
    """
    提取全球指数现货数据并存储为 CSV 文件,同时提取每个指数的历史数据并存储。
    """
    def index_global_spot():
        """
        获取全球指数现货数据并保存为 CSV 文件。
        """
        index_global_spot_em_df = ak.index_global_spot_em()
        save_funds_to_csv
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

dudly

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值