Python 获得衰退开始和结束的季度以及最低gdp季度
这是经过处理的数据框,现在我需要一个单独的列表,列出衰退开始、结束和衰退底部的所有季度 在上面的例子中,衰退的开始是“2000年第一季度”,因为GDP从那时开始下降 衰退结束时间为“2001年第二季度”Python 获得衰退开始和结束的季度以及最低gdp季度,python,pandas,Python,Pandas,这是经过处理的数据框,现在我需要一个单独的列表,列出衰退开始、结束和衰退底部的所有季度 在上面的例子中,衰退的开始是“2000年第一季度”,因为GDP从那时开始下降 衰退结束时间为“2001年第二季度” 衰退底部为“2000q4”,因为它在开始和结束之间具有最小GDP您可以在设置数据帧索引的季度后使用.loc属性 Quarter: GDP: GDP change: change 1999q3 9 -- ------ 1999q4 10
衰退底部为“2000q4”,因为它在开始和结束之间具有最小GDP您可以在设置数据帧索引的季度后使用.loc属性
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
您可以使用以下语句使四分之一成为数据帧的索引
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']
衰退与gdp=0
季度={'start':无,'end':无,'min':无}
最低国内生产总值=10000
最终清单=[]
对于i,在frame.iterrows()中的行:
如果行['change']<0且未启动:
衰退开始=真
衰退(国内生产总值)=框架[i-1][“国内生产总值”]
季度['start']=行['quarter']
如果行['gdp']另外,我假设当gdp等于或大于衰退开始前的gdp时,衰退结束,在你的例子中是10。实际上,问题是我如何找到哪个季度是衰退开始季度,哪个季度是相应的衰退结束季度这是最近一个非常流行的问题(作业问题?)“在上面的例子中,衰退的开始是‘2000q1’,因为GDP从那时开始下降”。大多数关于衰退开始的定义都是“GDP连续两个季度下降”。重复的。这几乎是同一个用户一天前提出的同一个问题。
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