在python中解析和提取文件中的数据

时间:2013-04-23 10:06:43

标签: python parsing csv

我已经对这个话题进行了很多搜索,到目前为止已经学到了很多东西。我还是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

1 个答案:

答案 0 :(得分:0)

尝试pandas

test.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需要一些时间。 如果您的工作在这些数据上非常可靠,那么值得学习。