2013-04-23 94 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