• 智能AI问答!更聪明、更完整、原创作!
  • 一款基于GPT的超级AI机器人,可以回答问题、聊天、创作、写文案!

其命名规则并不是上述代码的那样而且不在python目录下

发布于 2024-05-07 23:00:19

如果Excel文件的命名规则不同,并且它们不在Python脚本的当前工作目录下,你需要相应地调整代码来适应这些变化。以下是一个更通用的方法,用于读取不同命名规则的Excel文件,并在不同的目录中查找这些文件。

首先,我们需要一个函数来读取一个省份的所有年份的GDP数据,然后将其合并到一个DataFrame中,最后使用FuncAnimation来创建动画。

import pandas as pd
import matplotlib.pyplot as plt
from matplotlib.animation import FuncAnimation
import numpy as np
import os

def read_gdp_data(province, directory):
    """
    读取一个省份在指定目录下的所有年份的GDP数据。

    参数:
    - province: 省份名称
    - directory: Excel文件所在的目录

    返回:
    - pandas DataFrame 包含该省份所有年份的GDP数据
    """
    files = [os.path.join(directory, f) for f in os.listdir(directory) if f.startswith(province)]
    gdp_data = pd.DataFrame()
    for file in files:
        data = pd.read_excel(file)
        gdp_data = pd.concat([gdp_data, data], ignore_index=True)
    return gdp_data

def update(frame):
    # 根据年份选择数据
    year = frame
    data = all_data[all_data['省份'] == year]

    # 对GDP数据进行排序
    sorted_data = data.sort_values(by='GDP', ascending=False)

    # 更新条形图中的数据
    for i, (index, row) in enumerate(sorted_data.iterrows()):
        bars[index, year - 2012] = row['GDP']

    # 设置y轴的上限为当前年份的GDP的最大值
    ax.set_ylim(0, sorted_data['GDP'].max() * 1.1)

# 假设我们有10个省份的数据
provinces = ['province1', 'province2', ..., 'province10']  # 替换为实际省份名
directory = 'path_to_your_excel_files'  # 替换为实际的目录路径

# 初始化一个足够大的数组来存储GDP数据
all_data = np.zeros((len(provinces), 10))  # 10年的数据

# 读取每个省份的数据并填充到数组中
for i, province in enumerate(provinces):
    province_data = read_gdp_data(province, directory)
    all_data[i, :] = province_data['GDP'].values

# 创建条形图和动画
fig, ax = plt.subplots()
bars = ax.bar(np.arange(len(provinces)), all_data[:, 0], color='skyblue')

# 初始状态设置
ax.set_ylim(0, all_data[:, 0].max() * 1.1)
ax.set_xlabel('Province')
ax.set_ylabel('GDP')
ax.set_title('GDP Ranking in 2012')
ax.set_xticks(np.arange(len(provinces)))
ax.set_xticklabels(provinces, rotation=45, ha='right')

# 创建动画
ani = FuncAnimation(fig, update, frames=range(2012, 2023), blit=True)

plt.tight_layout()
plt.show()

在这个示例中,你需要将provinces列表替换为你的省份名称,将directory变量替换为你的Excel文件所在的目录路径。

这段代码中的read_gdp_data函数读取指定省份的所有Excel文件,并将它们合并成一个DataFrame。update函数用于更新动画的每一帧。我们使用FuncAnimation来创建动画,并在每一帧中调用update函数。

请确保你的Excel文件包含正确的列,如省份名称、年份和GDP数据,并且这些列的名称在代码中正确反映。此外,你可能需要根据实际的文件结构和数据格式调整代码。

0 条评论

发布
问题

在线
客服