利用Python合并数据求平均值

import pandas as pd
import os

# 定义文件夹路径
folder_path = r'D:\R\month\xinjiang'

# 读取所有.xlsx文件并合并数据
all_data = pd.DataFrame()
for file in os.listdir(folder_path):
    if file.endswith('.xlsx'):
        file_path = os.path.join(folder_path, file)
        df = pd.read_excel(file_path)
        all_data = pd.concat([all_data, df])

# 按年份分组并计算平均值
average_data = all_data.groupby('year')['TMED'].mean().reset_index()

# 获取原文件名(不包含后缀)
def get_file_name_without_extension(file_path):
    return os.path.splitext(os.path.basename(file_path))[0]

# 将结果保存到新的.xlsx文件中,使用原文件名加上前缀"average_"
for file in os.listdir(folder_path):
    if file.endswith('.xlsx'):
        file_name = get_file_name_without_extension(file)
        output_file = os.path.join(folder_path, f"average_{file_name}.xlsx")
        average_data.to_excel(output_file, index=False)

让我们逐个解析代码中每个函数的含义、用法,并附上相应的示例:

1. **`import pandas as pd`:**
   - **含义:** 导入 pandas 库,并使用别名 pd。
   - **用法示例:**
     ```python
     import pandas as pd
     ```

2. **`import os`:**
   - **含义:** 导入 os 模块,用于处理文件路径等操作。
   - **用法示例:**
     ```python
     import os
     ```

3. **`folder_path = r'D:\R\month\xinjiang'`:**
   - **含义:** 定义了文件夹路径,即待处理的文件所在文件夹的路径。
   - **用法示例:**
     ```python
     folder_path = r'D:\R\month\xinjiang'
     ```

4. **`for file in os.listdir(folder_path):`:**
   - **含义:** 使用 os 模块中的 listdir 函数遍历文件夹中的文件。
   - **用法示例:**
     ```python
     for file in os.listdir(folder_path):
     ```

5. **`if file.endswith('.xlsx'):`:**
   - **含义:** 检查文件名是否以 '.xlsx' 结尾,以过滤出 Excel 文件。
   - **用法示例:**
     ```python
     if file.endswith('.xlsx'):
     ```

6. **`file_path = os.path.join(folder_path, file)`:**
   - **含义:** 构建完整的文件路径,包括文件夹路径和文件名。
   - **用法示例:**
     ```python
     file_path = os.path.join(folder_path, file)
     ```

7. **`df = pd.read_excel(file_path)`:**
   - **含义:** 使用 pandas 中的 read_excel 函数读取 Excel 文件,并将其转换为 DataFrame。
   - **用法示例:**
     ```python
     df = pd.read_excel(file_path)
     ```

8. **`all_data = pd.concat([all_data, df])`:**
   - **含义:** 使用 pandas 中的 concat 函数将当前读取的 DataFrame 与之前的 DataFrame 合并。
   - **用法示例:**
     ```python
     all_data = pd.concat([all_data, df])
     ```

9. **`average_data = all_data.groupby('year')['TMED'].mean().reset_index()`:**
   - **含义:** 使用 pandas 的 groupby 函数按照年份对数据进行分组,然后计算每个组中 'TMED' 列的平均值,并将结果重置索引。
   - **用法示例:**
     ```python
     average_data = all_data.groupby('year')['TMED'].mean().reset_index()
     ```

10. **`def get_file_name_without_extension(file_path):`:**
    - **含义:** 定义一个函数,用于从文件路径中获取文件名(不包含后缀)。
    - **用法示例:**
      ```python
      def get_file_name_without_extension(file_path):
      ```

11. **`return os.path.splitext(os.path.basename(file_path))[0]`:**
    - **含义:** 使用 os 模块中的 splitext 函数和 basename 函数获取文件名(不包含后缀)。
    - **用法示例:**
      ```python
      return os.path.splitext(os.path.basename(file_path))[0]
      ```

12. **`average_data.to_excel(output_file, index=False)`:**
    - **含义:** 使用 pandas 中的 to_excel 函数将 DataFrame 写入到 Excel 文件中,不包含行索引。
    - **用法示例:**
      ```python
      average_data.to_excel(output_file, index=False)
      ```

这些是每个函数的含义、用法和示例,它们结合在一起实现了将多个 Excel 文件中的数据合并、计算平均值,并将结果保存到新的 Excel 文件中的功能。

13. **`output_file = os.path.join(folder_path, f"average_{file_name}.xlsx")`:**
    - **含义:** 构建输出文件的完整路径,包括文件夹路径和新的文件名(带有前缀 "average_")。
    - **用法示例:**
      ```python
      output_file = os.path.join(folder_path, f"average_{file_name}.xlsx")
      ```

14. **`shutil.move(source_file, target_folder)`:**
    - **含义:** 使用 shutil 模块中的 move 函数将源文件移动到目标文件夹中。
    - **用法示例:**
      ```python
      shutil.move(source_file, target_folder)
      ```

这两个是在代码末尾的部分,用于将生成的平均值文件保存到目标文件夹中。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

___Y1

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

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

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

打赏作者

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

抵扣说明:

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

余额充值