温度数据特征值处理

import pandas as pd
import os

# 设置文件夹路径
folder_path = r'D:\气象数据\气象数据\1951-2018\气温\新疆'

# 获取文件夹下所有.xlsx文件的路径
file_paths = [os.path.join(folder_path, file) for file in os.listdir(folder_path) if file.endswith('.xlsx')]

# 循环处理每个文件
for file_path in file_paths:
    # 读取Excel文件
    df = pd.read_excel(file_path)
    
    # 处理异常值32766
    for column in ['平均气温', '日最高气温', '日最低气温']:
        df[column] = df[column].replace(32766, pd.NA)
        # 使用前一行和后一行的平均值替换32766
        df[column] = df[column].fillna((df[column].shift(1) + df[column].shift(-1)) / 2)
    
    # 提取文件名(不带路径)
    file_name = os.path.basename(file_path)
    
    # 保存处理后的数据,路径为原路径加上'_processed'后缀
    output_file_path = os.path.join(folder_path, file_name.replace('.xlsx', '_processed.xlsx'))
    df.to_excel(output_file_path, index=False)
    
    print(f"文件 {file_name} 处理完成,已保存为 {output_file_path}")

这段代码是用来处理一个文件夹中的多个 Excel 文件,主要完成以下任务:

1. 设置文件夹路径。
2. 获取文件夹下所有以 `.xlsx` 结尾的文件的路径。
3. 对每个文件进行处理:
   a. 读取 Excel 文件为 Pandas DataFrame。
   b. 处理异常值,将所有值为 32766 的数据替换为 Pandas 中的缺失值(`pd.NA`)。
   c. 使用每个异常值的前一行和后一行的平均值来替换这些异常值。
   d. 提取文件名(不带路径)。
   e. 保存处理后的数据为新的 Excel 文件,文件名在原文件名基础上加上 `_processed` 后缀。

现在我们逐行解释这段代码并进行示例说明:

```python
import pandas as pd
import os
```

这段代码导入了 Pandas 库和 Python 的 os 模块,分别用于数据处理和文件操作。

```python
# 设置文件夹路径
folder_path = r'D:\气象数据\气象数据\1951-2018\气温\新疆'
```

这里设置了文件夹路径,你需要将路径修改为你存储文件的文件夹路径。

```python
# 获取文件夹下所有.xlsx文件的路径
file_paths = [os.path.join(folder_path, file) for file in os.listdir(folder_path) if file.endswith('.xlsx')]
```

这行代码使用列表推导式获取了文件夹下所有以 `.xlsx` 结尾的文件的完整路径。

```python
# 循环处理每个文件
for file_path in file_paths:
    # 读取Excel文件
    df = pd.read_excel(file_path)
    
    # 处理异常值32766
    for column in ['平均气温', '日最高气温', '日最低气温']:
        df[column] = df[column].replace(32766, pd.NA)
        # 使用前一行和后一行的平均值替换32766
        df[column] = df[column].fillna((df[column].shift(1) + df[column].shift(-1)) / 2)
    
    # 提取文件名(不带路径)
    file_name = os.path.basename(file_path)
    
    # 保存处理后的数据,路径为原路径加上'_processed'后缀
    output_file_path = os.path.join(folder_path, file_name.replace('.xlsx', '_processed.xlsx'))
    df.to_excel(output_file_path, index=False)
    
    print(f"文件 {file_name} 处理完成,已保存为 {output_file_path}")
```

这部分是主要的处理循环。首先,它循环遍历了所有的文件路径。对于每个文件,它执行以下步骤:

- 通过 `pd.read_excel()` 函数读取 Excel 文件并将其转换为 Pandas DataFrame。
- 对于指定的列('平均气温'、'日最高气温'、'日最低气温'),将所有值为 32766 的数据替换为 Pandas 中的缺失值(`pd.NA`),然后使用每个异常值的前一行和后一行的平均值来替换这些异常值。
- 提取文件名(不带路径)。
- 构建处理后文件的保存路径,将文件名后缀替换为 `_processed.xlsx`。
- 使用 `df.to_excel()` 函数将处理后的 DataFrame 保存为 Excel 文件。
- 打印处理完成的信息,包括原文件名和处理后文件的路径。

示例说明:假设你的文件夹中有两个 Excel 文件,分别是 `file1.xlsx` 和 `file2.xlsx`。这两个文件中包含三列数据:'平均气温'、'日最高气温'、'日最低气温'。如果在这些数据中发现了值为 32766 的异常值,那么这些异常值将被替换为相邻两行对应列的平均值,并将处理后的数据保存为新的 Excel 文件。

import pandas as pd
import os

# 设置文件夹路径
folder_path = r'D:\气象数据\气象数据\1951-2018\气温\新疆'

# 获取文件夹下所有.xlsx文件的路径
file_paths = [os.path.join(folder_path, file) for file in os.listdir(folder_path) if file.endswith('.xlsx')]

# 循环处理每个文件
for file_path in file_paths:
    # 读取Excel文件
    df = pd.read_excel(file_path)
    
    # 处理异常值32766
    for column in ['平均气温', '日最高气温', '日最低气温']:
        df[column] = df[column].replace(32766, pd.NA)
        # 使用前一行和后一行的平均值替换32766
        df[column] = df[column].fillna((df[column].shift(1) + df[column].shift(-1)) / 2)
    
    # 提取文件名(不带路径)
    file_name = os.path.basename(file_path)
    
    # 保存处理后的数据,路径为原路径加上'_processed'后缀
    output_file_path = os.path.join(folder_path, file_name.replace('.xlsx', '_processed.xlsx'))
    df.to_excel(output_file_path, index=False)
    
    print(f"文件 {file_name} 处理完成,已保存为 {output_file_path}")
 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

___Y1

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

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

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

打赏作者

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

抵扣说明:

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

余额充值