python 利用探空数据识别整层云

选用蔡淼的论文:[1]蔡淼,欧建军,周毓荃,等.L波段探空判别云区方法的研究[J].大气科学,2014,38(02):213-222.

里面的阈值法:

 

#!/usr/bin/python3
# -*- coding: utf-8 -*-
"""
@Time : 2025/1/20 23:22
@Author : Suyue
@Email : 1493117872@qq.com
@File : cloud_area.py
@Project : untitled4
"""
import pandas as pd


df = pd.read_csv('D:/探空数据计算/tankong-2020-50527_with_final_times_lat_lon_cleaned_data.csv')
df = pd.DataFrame(df)

# 根据条件筛选数据
mask = (
    ((df['GPH'] >= 0) & (df['GPH'] < 1000) & (df['RHU'] == 91)) |
    ((df['GPH'] >= 1000) & (df['GPH'] < 2000) & (df['RHU'] > 84) & (df['RHU'] <= 90)) |
    ((df['GPH'] >= 2000) & (df['GPH'] < 7562) & (df['RHU'] > 78) & (df['RHU'] <= 84)) |
    ((df['GPH'] >= 7562) & (df['GPH'] <= 10000) & (df['RHU'] >= 68) & (df['RHU'] <= 78)) |
    ((df['GPH'] > 10) & (df['RHU'] == 68))
)

# 保留满足条件的行
filtered_df = df[mask]

# 将结果保存回CSV文件
filtered_df.to_csv('D:/探空数据计算/tankong-2020-50527_with_final_times_lat_lon_cleaned_data_filtered_data.csv', index=False)

# 打印结果以确认(可选)
# print(filtered_df)

 

批量数据处理:

#!usr/bin/env python
# -*- coding:utf-8 -*-
"""
@author: Suyue
@file: batch_process_raindrop_data.py
@time: 2025/02/19
@desc: 批量识别云
"""
import pandas as pd
import os
import glob

# 设置CSV文件所在的目录
input_directory = '/lianxi/'
output_directory = '/cloud/'  # 可选:设置输出目录,如果不设置则覆盖原文件

# 如果输出目录不存在,则创建它
if not os.path.exists(output_directory):
    os.makedirs(output_directory)

# 获取目录中所有CSV文件的路径
csv_files = glob.glob(os.path.join(input_directory, '*.csv'))

# 遍历每个CSV文件
for file_path in csv_files:
    # 读取CSV文件
    df = pd.read_csv(file_path)

    # 根据条件筛选数据
    mask = (
            ((df['GPH'] >= 0) & (df['GPH'] < 1000) & (df['RHU'] == 91)) |
            ((df['GPH'] >= 1000) & (df['GPH'] < 2000) & (df['RHU'] > 84) & (df['RHU'] <= 90)) |
            ((df['GPH'] >= 2000) & (df['GPH'] < 7562) & (df['RHU'] > 78) & (df['RHU'] <= 84)) |
            ((df['GPH'] >= 7562) & (df['GPH'] <= 10000) & (df['RHU'] >= 68) & (df['RHU'] <= 78)) |
            ((df['GPH'] > 10) & (df['RHU'] == 68))
    )

    # 保留满足条件的行
    filtered_df = df[mask]

    # 提取文件名(不带路径和扩展名)
    file_name = os.path.splitext(os.path.basename(file_path))[0]

    # 设置输出文件路径
    if output_directory:  # 如果指定了输出目录
        output_file_path = os.path.join(output_directory, file_name + '_filtered.csv')
    else:  # 如果没有指定输出目录,则覆盖原文件
        output_file_path = file_path.replace('.csv', '_filtered.csv')

    # 将结果保存回CSV文件
    filtered_df.to_csv(output_file_path, index=False)

print("批量处理完成!")

 

posted @ 2025-01-20 23:02  秋刀鱼CCC  Views(32)  Comments(0)    收藏  举报