降水数据的特征值处理

这段代码是用Python中的pandas库对指定文件夹中的Excel文件进行处理,主要是针对Excel文件中的指定列进行数值替换和处理,然后将处理后的数据保存到同一文件夹下。

让我们逐步解析这段代码:

1. `import os`: 导入Python标准库中的os模块,用于操作文件和文件夹路径。
   
2. `import pandas as pd`: 导入pandas库,并使用别名pd来引用。

3. `folder_path = r'D:\气象数据\气象数据\1951-2018\降水\新疆1951-1987'`: 指定了一个文件夹路径,其中存储了待处理的Excel文件。

4. `for file_name in os.listdir(folder_path):`: 使用`os.listdir()`函数列出文件夹中的所有文件,并对每个文件进行迭代。

5. `if file_name.endswith('.xlsx'):`: 使用`.endswith()`方法检查文件是否以'.xlsx'结尾,以确定它是否是Excel文件。

6. `file_path = os.path.join(folder_path, file_name)`: 使用`os.path.join()`函数构建完整的文件路径。

7. `df = pd.read_excel(file_path)`: 使用`pd.read_excel()`函数读取Excel文件,并将其存储在DataFrame对象`df`中。

8. `columns_to_process = ['20-8时降水量', '8-20时降水量', '20-20时累计降水量']`: 定义了一个列表,包含了需要处理的列名。

9. 下面的`for`循环针对每个列名进行处理:
   - `df[column].apply(lambda x: 0 if x >= 32700 else x)`: 将大于等于32700的数字替换为0。
   - `df[column].apply(lambda x: x - 32000 if 32000 < x < 32700 else x)`: 将大于32000小于32700的数字减去32000。
   - `df[column].apply(lambda x: x - 31000 if 31000 <= x < 32000 else x)`: 将大于等于31000小于32000的数字减去31000。
   - `df[column].apply(lambda x: x - 30000 if 30000 <= x < 31000 else x)`: 将大于等于30000小于31000的数字减去30000。

10. `output_file_path = os.path.join(folder_path, file_name.replace('.xlsx', '_processed.xlsx'))`: 构建处理后的文件路径,使用`os.path.join()`函数和`str.replace()`方法。

11. `df.to_excel(output_file_path, index=False)`: 使用DataFrame对象的`to_excel()`方法将处理后的数据保存为Excel文件,参数`index=False`表示不保存行索引。

示例用法:

假设我们有一个Excel文件名为`data.xlsx`,其中包含了名为`20-8时降水量`、`8-20时降水量`和`20-20时累计降水量`的三列数据。这些数据可能有一些异常值,例如超出特定范围的数字。

通过运行以上代码,我们可以对这个Excel文件进行处理,将大于等于32700的数字替换为0,将大于32000小于32700的数字减去32000,将大于等于31000小于32000的数字减去31000,将大于等于30000小于31000的数字减去30000。处理后的数据将保存在同一文件夹下,文件名为`data_processed.xlsx`。

import os
import pandas as pd

# 指定文件夹路径
folder_path = r'D:\气象数据\气象数据\1951-2018\降水\新疆1951-1987'

# 遍历文件夹中的Excel文件
for file_name in os.listdir(folder_path):
    if file_name.endswith('.xlsx'):
        file_path = os.path.join(folder_path, file_name)
        
        # 读取Excel文件
        df = pd.read_excel(file_path)
        
        # 对指定列进行处理
        columns_to_process = ['20-8时降水量', '8-20时降水量', '20-20时累计降水量']
        
        for column in columns_to_process:
            # 替换大于等于32700的数字为0
            df[column] = df[column].apply(lambda x: 0 if x >= 32700 else x)
            # 处理大于32000小于32700的数字
            df[column] = df[column].apply(lambda x: x - 32000 if 32000 < x < 32700 else x)
            # 处理大于等于31000小于32000的数字
            df[column] = df[column].apply(lambda x: x - 31000 if 31000 <= x < 32000 else x)
            # 处理大于等于30000小于31000的数字
            df[column] = df[column].apply(lambda x: x - 30000 if 30000 <= x < 31000 else x)
        
        # 保存处理后的数据到同一文件夹下,文件名加上'_processed'
        output_file_path = os.path.join(folder_path, file_name.replace('.xlsx', '_processed.xlsx'))
        df.to_excel(output_file_path, index=False)

import os
import pandas as pd

# 指定文件夹路径
folder_path = r'D:\气象数据\气象数据\1951-2018\降水\新疆1951-1987'

# 遍历文件夹中的Excel文件
for file_name in os.listdir(folder_path):
    if file_name.endswith('.xlsx'):
        file_path = os.path.join(folder_path, file_name)
        
        # 读取Excel文件
        df = pd.read_excel(file_path)
        
        # 对指定列进行处理
        columns_to_process = ['20-8时降水量', '8-20时降水量', '20-20时累计降水量']
        
        for column in columns_to_process:
            # 替换大于等于32700的数字为0
            df[column] = df[column].apply(lambda x: 0 if x >= 32700 else x)
            # 处理大于32000小于32700的数字
            df[column] = df[column].apply(lambda x: x - 32000 if 32000 < x < 32700 else x)
            # 处理大于等于31000小于32000的数字
            df[column] = df[column].apply(lambda x: x - 31000 if 31000 <= x < 32000 else x)
            # 处理大于等于30000小于31000的数字
            df[column] = df[column].apply(lambda x: x - 30000 if 30000 <= x < 31000 else x)
        
        # 保存处理后的数据到同一文件夹下,文件名加上'_processed'
        output_file_path = os.path.join(folder_path, file_name.replace('.xlsx', '_processed.xlsx'))
        df.to_excel(output_file_path, index=False)
 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

___Y1

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

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

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

打赏作者

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

抵扣说明:

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

余额充值