首页 > 其他分享 >用numpy将nc批量转的降雨表格按市县整理成逐年逐月降雨

用numpy将nc批量转的降雨表格按市县整理成逐年逐月降雨

时间:2024-11-07 22:15:19浏览次数:3  
标签:表格 nc excel 降雨 列表 ex 逐年逐月 1901

之前用arcmap的模型工具将nc文件转tif后,提取降雨数据到excel中,距离最终需要的数据还是有一定的差距。需要用到Python进行处理。                                               

1、降雨需要的格式

做高标准农田,水资源平衡分析,用到的历年降雨资料表格。是一个地区的水文站约近40年的数据。如下图:

arcmap处理获得的数据,是每个月不同地区降雨量的情况,一年有十二个月,年份从1901-2023年总共123年。数据结构如下:

2、代码思路

原始数据:目前数据是有1901-2023年共123个文件夹,每个文件夹里有1-12月共12个Excel表,每张表里有101个市县的月降雨数据。

目标数据:生成101个表格,每个表格能将该市县1901-2023年每个年份12个月的数据体现出来。

如上图:分三步即可完成任务。第一步循环读取123个文件中的12个表格,用到pandas。第二步:前一步获取的是列表,列表镶套列表,总共4层,将其转化为四维数组,转化后,再转换轴,用到numpy模块。第三步:将上一步的四维数组再转回列表,再循环写入到excel当中。

3、具体代码

步骤一:循环读取表

'''
将excel表格整理成,每个区县的降雨量1901-2023;
'''
import pandas as pd
import numpy as np
# 外面1901到2023的数组
ex_z=[] # 读取的最终列表
for j in range(1901,2024):
    # 先读取一个文件里的Excel
    wjj='G:\\rain\\hunan\\pre_'+str(j) # 你的文件夹路径
    ex=[]
    for i in range(1,13):
        # 文件路径
        file_path =wjj+"\\"+str(i)+".xls"
        # 使用pandas读取xls文件
        df = pd.read_excel(file_path)

        ex1=[]
        #读取每行成列表
        for index,row in enumerate (df.values.tolist()):
            # print(index)
            ex1.append([row[1],round(float(row[5])/10,2)]) #之前获取的是0.1mm降雨,转化为1mm
        ex.append(ex1)
    ex_z.append(ex)

步骤二:四维数组转换轴

# 将列表转数组
a=np.array(ex_z)
# 转换轴
b=np.transpose(a,(2,0,1,3))

步骤三:将四维数组写入excel。

# 将四维数组按市县写入Excel
c=b.tolist()
for i in range(len(c)):
    liem=['年份','一月','二月','三月','四月','五月','六月','七月','八月','九月','十月','十一月','十二月']
    x=c[i]
    # 获取市县名称
    nameqx=x[0][0][0]
    data=[]
    for j in range(1901, 2024):
        k=j-1901
        data.append([str(j),x[k][0][1],x[k][1][1],x[k][2][1],x[k][3][1],x[k][4][1],x[k][5][1],x[k][6][1],x[k][7][1]
                     ,x[k][8][1],x[k][9][1],x[k][10][1],x[k][11][1]])
    df=pd.DataFrame(data,columns=liem)
    df.to_excel(nameqx+'.xlsx', index=False)

4、成果

最终形成了101张表格,表格的效果如下:

标签:表格,nc,excel,降雨,列表,ex,逐年逐月,1901
From: https://blog.csdn.net/weixin_47364423/article/details/143607825

相关文章

  • 【C++】C++11之函数对象,Lambda表达式和functional函数对象类型
    知识的学习在于点滴记录,坚持不懈函数对象        重载了函数调用运算符()的类的对象,即为函数对象。        std::function由上文可以看出:由于可调用对象的定义方式比较多,但是函数的调用方式较为类似,因此需要使用一个统一的方式保存可调用对象或者传递可......
  • 3分钟Opencv人脸识别教程-超级简单(30行代码左右)
    一、下载Opencv源码并使用CMake构建工具编译源码?Opencv源码地址:https://opencv.org/releases/ Github的Opencv地址:GitHub-opencv/opencv:OpenSourceComputerVisionLibrary1、本文用到的所有文件包括opencv编译好的源码https://pan.baidu.com/s/1ZINU8pbva1vur5G......
  • 深度学习新能源车牌识别系统+opencv+毕设
    基于深度学习的车牌检测与识别系统引言随着城市化进程的加快,智能交通系统(ITS)已成为现代城市管理不可或缺的一部分。车牌检测与识别是智能交通系统中的关键技术之一,广泛应用于交通监控、停车管理、车辆追踪等多个领域。本项目利用深度学习技术,特别是卷积神经网络(CNN),设计了......
  • 使用 Let’s Encrypt 获取免费SSL证书
    文章目录前言申请需求详细步骤:安装Certbot使用DNS验证生成证书找到生成的证书文件将证书文件复制到目标服务器在目标服务器上配置Nginx使用证书注意更新证书本地操作实例总结前言之前不太了解SSL免费证书,只研究过一点自签名SSL证书的知识,前几年的12306就是用的......
  • 图解析网络【Published as a conference paper at ICLR 2024】
    【文章来源:https://arxiv.org/pdf/2402.14393】摘要motivation:图池是建立在GNN之上的。它旨在通过将一组节点及其底层结构压缩为更简洁的表示来捕获图级信息。早期的图池化方法,如mean,add或pool对图中的所有节点执行排列不变操作。这些平面池化方法忽略了节点之间的区别,无......
  • Windows Server 中的 NLB(Network Load Balancing,网络负载均衡)功能是一个用于将客户端
    WindowsServer中的NLB(NetworkLoadBalancing,网络负载均衡)功能是一个用于将客户端请求分配到多个服务器的技术,目的是提供高可用性和扩展性。NLB通过在多个服务器之间分配网络流量,确保应用程序或服务的高可用性,避免单点故障,并提高系统的处理能力。NLB通常用于需要高可用性和......
  • Springboot 配置yml文件 ENC 加密及failed to bind properties under '********' to j
    1.添加依赖<dependency><groupId>com.github.ulisesbocchio</groupId><artifactId>jasypt-spring-boot-starter</artifactId><version>3.0.3</version></dependency>2.设置加密盐......
  • 93_api_intro_finance_optionsrealtime
    期权实时行情数据最新价格、交易量、交易额等信息,期权行情实时数据,市场交易数据。1.产品功能实时更新期权市场数据;覆盖主要期权合约;支持多种数据参数,包括价格、交易量、持仓量等;提供详细的市场分析和数据解读;高效、稳定的数据获取体验;秒级查询性能;数据持续更新与维护;......
  • 92_api_intro_stock_stockcncashflow
    A股个股资金流API数据接口全量股票资金流数据,全量A股数据,最长30日历史数据1.产品功能支持所有A股资金流数据查询;每日定时更新数据;支持多达30日历史数据查询;超高的查询效率,数据秒级返回;数据持续更新与维护;全接口支持HTTPS(TLSv1.0/v1.1/v1.2/v1.3);全面兼容......
  • 91_api_intro_stock_stockcncashflowrank
    A股个股资金流排行API数据接口全量股票资金流排名,多时间区间,全量A股数据。1.产品功能支持所有A股资金流数据查询;每日定时更新数据;支持多时间段查询;超高的查询效率,数据秒级返回;数据持续更新与维护;全接口支持HTTPS(TLSv1.0/v1.1/v1.2/v1.3);全面兼容AppleATS;......