在经济衰退开始和衰退结束的季度以及最小gdp的四分之一

时间:2017-01-26 14:29:44

标签: python pandas

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

以下是已处理的数据框架现在,我需要单独列出经济衰退开始,经济衰退结束和经济衰退的所有季度

上述例子中经济衰退的开始是'2000q1',因为GDP开始下降

衰退结束是''2001q2'

衰退底部是'2000q4',因为它具有开始和结束之间的最小GDP

2 个答案:

答案 0 :(得分: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是衰退结束。

基本上经济衰退的开始是连续两年下降gdp,衰退结束是两年来GDP连续增长的存在

答案 1 :(得分: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。