我有一个由State和RegionName组成的数据框架作为索引,列按顺序描述了一年的季度周期和年份。例如,2000q3表示2000年的第三季度。单元格中的值是该地区在特定时期的GDP值。
State RegionName 2000q1 2000q2 2000q3 2000q4 2001q1 ..........
NewYork NewYork
California Los Angeles 207066.67 214466.67 220966.67 226166.67 233000.00 ......
运行以下代码时出现错误。
s1 = pd.Series(dfs.index)
s2 = []
for x in df.index:
for i in s1:
if x > i & df['test'].loc[x] == True:
s2.append(df['shiftdt'])
dfs =是衰退开始的年份和季度
16 1949q1
34 1953q3
51 1957q4
255 2008q4
Name: shiftdt, dtype: object
df如下所示:
作为一项任务,我正在确定2008年美国经济衰退的第一季度。我使用的Excel数据可以在这里下载:gdplev.xls。我怎样才能改进这个熊猫代码,使它更加地道或优化呢?
def get_recession_start():
'''Returns the year and quarter of the recession start time as a
string value in a format such as 2005q3'''
GDP_df = pd.read_excel("gdplev.xls"
我想复制下面的情节。
在x轴上,我有时间,y轴,我有GDP。GDP线只是每日的时间历史(不论其数值如何),而衰退数据有以下结构(从1/1/59到今天,这两个变量CGD和recession的每日频率相同):
Date Regime
1 1/1/59 Normal
2 2/1/59 Normal
3 3/1/59 Normal
4 4/1/59 Normal
5 5/1/59 Normal
6 6/1/59 Normal
...
14 2/1/60 Normal
15 3/1/60 Normal
16 4/1/60 Re
我正在尝试循环一个数据帧,以检查3个连续的索引是否满足以下条件: df.loc[idx, "GDP"] > df.loc[idx+1, "GDP"] > df.loc[idx+2, "GDP"] 一旦得到满足,就意味着我们陷入了衰退。 使用以下命令对其进行迭代: for idx, gdp in df.iterrows():
if (df.loc[idx, "GDP"]>df.loc[idx+1, "GDP"]>df.loc[idx+2, "GDP"]) an
假设我跟踪了包含美国GDP数据的熊猫数据。列Change从一个季度到一个季度拥有绝对变化值,而列Trend只是一个使趋势变化更加明显的噱头。
GDP Change Trend
Quarter
2007q4 14991.8 53.3 up
2008q1 14889.5 -102.3 down
2008q2 14963.4 73.9 up
2008q3 14891.6 -71.8 down
2008q4 14577.0 -314.6 down
2009q1 14
我正在edX上看一个关于数据分析的课程。我最感兴趣的是CUSUM背后执行“变更检测”的想法。我被告知的公式是:s sub t= max {0,S sub (t-1) + (x sub t-u- C),如果:s sub t >=阈值T,我们检测到了增加(类似于减少)。瞧,我看到熊猫有一个求和功能。然而,我似乎不明白这是如何工作的。我的数据头是:
Year GDP Growth Rate
1 1930 -0.085
2 1931 -0.064
3 1932 -0.129
4 1933
我试图迭代熊猫数据帧中的特定列,以便比较行值是否连续下降,但我一直收到索引错误:"single positional is out-bound“,以及TypeError:分别为&:'numpy.float64‘和'numpy.float64’不支持的操作数类型。下面是我的实际数据的摘录,以及给出错误的代码。 给出示例数据: gdp = pd.DataFrame({"quater":['q1','q2','q3','q4','q1','q2','
假设我有一个如下所示的数据框架:
Date <- seq(as.Date("1990-03-01"), by = 'quarters', length.out=100)
Date<- as.yearqtr(Date, format="%Y-%m-%d")
GDP <- runif(100, 500, 2000)
df <- data.frame(Date,GDP)
通常,为了应用hpfilter函数,我会这样做:
GDP <- xts(GDP[,-1], order.by=GDP[,1]) #Convert to x