0

我已经对这个主题进行了很多搜索,并且到目前为止已经学到了很多。我还是 python 新手,我知道有一种简单的方法可以使用 csv 模块解析数据。所以,我有如下数据:

Date        MaxT  MinT  Pcpn  Snow  Snwg  
01/01/1948    34    13  0.00   0.0     T  
01/02/1948    46    29  0.01   0.0     T  
01/03/1948    38    16     T     T     T  
01/04/1948    38    15  0.00   0.0     T  
01/05/1948    44    15  0.00   0.0     T  
01/06/1948    42    23  0.00   0.0     T 

这是一年中每一天的每日天气数据,直到记录结束。大多数时候,记录的结尾是现在。我可以解析它并从中提取数据,但我的主要问题和问题原因是如何根据特定日期提取和保存数据?

例如,如果我想要记录中所有年份中 4 月 25 日发生的最高温度,以及它发生的年份,我如何准确地隔离特定日期并仅在该日期使用 max() 或 min(),不是一年中的所有日子?我希望我的程序搜索一年中的每个日期,并找到每个日期的最大值和最小值以及它发生的年份,并将它们保存以备后用。

最终,我想获得每个位置的最高和最低 maxT 和 minT(最高 maxT、最低 minT、最高 minT、最低 minT)、每个值出现的年份,并将特定日期组合在一起。这样我就有一个包含一年中所有 365 天的文件,其中包含位置和每个发生年份的 4 个极值。我可以处理将位置放在一起并制作新文件,但现在,我需要弄清楚如何获得一年中每一天的极端情况。

当一切都说完了,我的输出标题应该是这样的,并且一年中的每一天都有一个文件:

Location HighMax year LowMax year HighMin year LowMin year
4

1 回答 1

0

试试熊猫

测试.csv:

Date,MaxT,MinT,Pcpn,Snow,Snwg
01/01/1948,34,13,0.00,0.0,T
01/02/1948,46,29,0.01,0.0,T
01/03/1948,38,16,T,T,T
01/04/1948,38,15,0.00,0.0,T
01/05/1948,44,15,0.00,0.0,T
01/06/1948,42,23,0.00,0.0,T

读取csv,设置Date为索引

In [1]: import pandas as pd
In [4]: df = pd.read_csv('test.csv').set_index('Date')

In [5]: df
Out[5]: 
            MaxT  MinT  Pcpn Snow Snwg
Date                                  
01/01/1948    34    13  0.00  0.0    T   
01/02/1948    46    29  0.01  0.0    T   
01/03/1948    38    16     T    T    T   
01/04/1948    38    15  0.00  0.0    T   
01/05/1948    44    15  0.00  0.0    T   
01/06/1948    42    23  0.00  0.0    T   

Pandas提供一个很好的结构DataFrame来操作您的数据。例如,要获得最大值MaxT

In [9]: index = df['MaxT'].idxmax() 
In [11]: index, df['MaxT'][index]
Out[11]: ('01/02/1948', 46) 

你应该花一些时间来学习pandas。如果你的工作在这类数据上非常可靠,那么值得学习。

于 2013-04-23T12:38:50.587 回答