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 @   秋刀鱼CCC  Views(9)  Comments(0Edit  收藏  举报
相关博文:
阅读排行:
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 单元测试从入门到精通
· 上周热点回顾(3.3-3.9)
· Vue3状态管理终极指南:Pinia保姆级教程
点击右上角即可分享
微信分享提示