2013-04-23 33 views
0

我已经在这个主题上搜索了很多,并且已经学到了很多东西。我对Python仍然很陌生,我知道有一种简单的方法可以用csv模块解析数据。所以,我有这样的数据:从python中的文件解析和提取数据

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()在那一天,并非一年中的所有日子?我希望我的程序能够搜索一年中的每一个日期,并查找每个日期的最大值和最小值以及发生的年份,并将其保存以备后用。最终,我希望获得每个位置的最高和最低最高和最低(最高最高,最低最低,最高最低,最低最低),每个数值发生的年份以及将特定日期组合在一起。这样,我有一个包含位置的全年365天的文件以及每个发生年份的4个极端值。我可以将这些位置合并在一起并制作新文件,但现在我需要弄清楚如何在一年中的每一天获得极端情况。

当其所有说过和做过,我的输出头应该是这样的,并有一年的每一天一个文件:

Location HighMax year LowMax year HighMin year LowMin year 
+3

熊猫模块是你想要的 – YXD 2013-04-23 10:07:29

+1

为什么你不能使用数据库?它似乎是您的要求的不错选择。 – thavan 2013-04-23 10:13:42

+0

我同意@thavan。或者,更简单的是,您可以将数据导入电子表格应用程序。 – David 2013-04-23 10:16:50

回答

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。 如果您的工作对这些数据非常可靠,值得学习。

+0

您可以修改您的示例以使用OP的分隔符。 – DSM 2013-04-23 12:43:56