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答案 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。