首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >获取衰退开始和衰退结束的季度以及最低gdp的季度

获取衰退开始和衰退结束的季度以及最低gdp的季度
EN

Stack Overflow用户
提问于 2017-01-26 22:29:44
回答 2查看 3K关注 0票数 0
代码语言:javascript
复制
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

这是经过处理的dataFrame,现在我需要单独列出衰退开始、衰退结束和衰退底部的所有季度

在上面的例子中,衰退的开始是‘2000q1’,因为GDP的下降是从那个时候开始的。

衰退结束是‘’2001 q2‘’

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

EN

回答 2

Stack Overflow用户

发布于 2017-01-26 22:47:02

在设置数据帧索引的四分之一后,可以使用.loc属性。

代码语言:javascript
复制
Df.loc[start:end]

您可以使用以下语句将季度设置为数据帧的索引

代码语言:javascript
复制
Df = Df.set_index('quarter')

希望这能有所帮助。

根据你的问题,你如何找到衰退的开始和其他参数。以下是您可以使用的代码:

代码语言:javascript
复制
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) and (third_q < second_q),那么first_q就是衰退的开始。

同样,如果second_q > first_q和third_q > second_q,那么third_q就是衰退的尽头。

基本上,衰退开始是指gdp连续两年下降,衰退结束是指GDP连续两年增长。

票数 0
EN

Stack Overflow用户

发布于 2017-01-26 23:07:32

代码语言:javascript
复制
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。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/41875744

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档