2017-01-26 45 views
0
Quarter: GDP: GDP change: change 
1999q3  9   --   ------ 
1999q4 10   1   increase 
2000q1  9   -1   decline 
2000q2  8   -1   decline 
2000q3  7   -1   decline 
2000q4  6   -1   decline 
2001q1  8   1   increase 
2001q2  11   3   increase 
2001q3  12   1   increase 

這裏的季度結束沿季度的加工數據框現在我需要所有在經濟衰退開始的宿舍單獨的列表,經濟衰退結束和經濟衰退的底部獲取其中的經濟衰退開始和衰退,最小的GDP

在上述示例衰退的開始是「2000q1'because的GDP下降開始然後

衰退端‘’2001q2」

衰退底部是「2000q4」,因爲它具有開始和結束之間的最小GDP

+0

可能的重複在經濟衰退結束[發現連續兩個季度的GDP下降,並且以連續兩個季度的GDP增長結束](http://stackoverflow.com/questions/41361537/find-two-consecutive-quarters-of-gdp-decline-and-ending- with-two-consecutive-qu) – JohnE

+0

這是一個很受歡迎的問題(作業問題?)。這是另一個:http://stackoverflow.com/questions/41537655/pandas-determine-the-start-end-and-bottom-of-recession-based-on-gdp?rq=1 – JohnE

回答

0

在設置數據幀索引的四分之一後,可以使用.loc屬性。

Df.loc[start:end] 

您可以使用下面的語句

Df = Df.set_index('quarter') 

希望幫助使季度數據幀的指數。

正如你所問,你怎麼能找到經濟衰退開始和其他參數。下面是代碼,你可以使用:

for index in df.index: 
     first_q = df.loc[index, 'gdp'] 
     second_q = df.loc[index+1, 'gdp'] 
     third_q = df.loc[index +2, 'gdp'] 

現在的邏輯是:(如果second_q < first_q)和(third_q < second_q),那麼first_q是經濟衰退的開始。

並且類似地,如果second_q> first_q和third_q> second_q,那麼third_q是衰退結束。

基本上衰退開始是2 GDP連續多年下滑的存在和經濟衰退結束是兩個連續的GDP增長年

+0

其實問題是我如何可以找到哪個季度是衰退開始季度,哪些是相應的衰退季度 –

0
recession_start = False 
recession_gdp = 0 
quarter = {'start': None, 'end': None, 'min': None} 
min_gdp = 10000 


final_list = [] 


for i, row in frame.iterrows(): 

    if row['change'] < 0 and not recession_start: 
     recession_start = True 
     recession_gdp = frame[i - 1]['gdp'] 
     quarter['start'] = row['quarter'] 

    if row['gdp'] < min_gdp and recession_start: 
     min_gdp = row['gdp'] 
     quarter['min'] = row['quarter'] 

    if recession_start and row['gdp'] >= recession_gdp: 
     quarter['end'] = row['quarter'] 
     final_list.append(quarter) 
     # reset all values 
     recession_start = False 
     recession_gdp = 0 
     quarter = {'start': None, 'end': None, 'min': None} 

     min_quarter = None 
     min_gdp = 10000 

final_list有最終答案的存在。對不起,我不知道熊貓,可能有一些錯誤。這更像是一個簡單的算法..但只需稍微重構就可以做到。希望它可以幫助你!..

我還有我假設當GDP比GDP等於或大於「之前」在經濟衰退開始這在你的例子是10