如何迭代pandas数据帧的列以运行回归

13 浏览
0 Comments

如何迭代pandas数据帧的列以运行回归

我有这段使用Python中的Pandas库的代码:\n

all_data = {}
for ticker in ['FIUIX', 'FSAIX', 'FSAVX', 'FSTMX']:
    all_data[ticker] = web.get_data_yahoo(ticker, '1/1/2010', '1/1/2015')
prices = DataFrame({tic: data['Adj Close'] for tic, data in all_data.iteritems()})  
returns = prices.pct_change()

\n我知道我可以这样运行回归:\n

regs = sm.OLS(returns.FIUIX,returns.FSTMX).fit()

\n但是如何对数据框的每一列运行回归呢?具体来说,我要迭代每一列,以便对每一列运行回归。\n具体来说,我想对每个其他的股票代码(FIUIX、FSAIX和FSAVX)对FSTMX进行回归,并存储每个回归的残差。\n我尝试了以下几个版本的代码,但是我尝试过的所有方法都没有得到期望的结果:\n

resids = {}
for k in returns.keys():
    reg = sm.OLS(returns[k],returns.FSTMX).fit()
    resids[k] = reg.resid

\n代码中的returns[k]部分有什么问题吗?我如何使用k值来访问列?或者是否有更简单的方法?

0
0 Comments

在使用 pandas dataframe 进行回归分析时,需要遍历列来运行回归,但是如果不知道如何遍历列,会给操作带来困扰。下面将介绍如何遍历 pandas dataframe 的列来运行回归分析。

首先,可以使用df.columns来获取 dataframe 中所有列的名称。然后可以使用 Python 的列表切片技术来根据需要遍历列。例如,要遍历除第一列之外的所有列,可以使用以下代码:

for column in df.columns[1:]:
    print(df[column])

类似地,要逆序遍历所有列,可以使用以下代码:

for column in df.columns[::-1]:
    print(df[column])

使用这种技术,可以以多种方式遍历所有列。另外,还可以使用enumerate函数轻松获取所有列的索引:

for ind, column in enumerate(df.columns):
    print(ind, column)

通过以上方法,可以轻松遍历 pandas dataframe 的列来运行回归分析。

0
0 Comments

问题出现的原因:

这个问题的出现是因为pandas在不同的版本中对于迭代DataFrame的列有不同的方法名。在pandas 2.0及以上的版本中,没有.iteritems()方法,而是使用.items()方法来迭代DataFrame的列。

解决方法:

要迭代DataFrame的列来运行回归分析,可以使用.items()方法。该方法返回一个包含列名和列值的元组,可以通过for循环来遍历每一列。

下面是一个示例代码:

for name, values in df.items():
    print('{name}: {value}'.format(name=name, value=values[0]))

上面的代码会打印出每一列的名称和第一个值。

另外,需要注意的是,.items()方法在之前的版本中可能被称为.iteritems()。所以,如果你使用的是旧版本的pandas,可以将代码中的.items()替换为.iteritems()来实现同样的功能。

本文介绍了如何迭代DataFrame的列来运行回归分析。在pandas 2.0及以上的版本中,可以使用.items()方法来遍历每一列,而在旧版本中可以使用.iteritems()方法。以上是一个简单的示例代码,可以根据实际需求进行修改和扩展。

0
0 Comments

问题的原因是作者在使用for column in df:循环遍历DataFrame的列时,只打印出了列名而不是列数据。作者解决这个问题的方法是使用print(df[column])而不是print(column)来打印列数据。

这个问题引发了其他人的讨论和疑问。某些情况下要注意具有相同名称的列,因为df[column]可能是一个DataFrame或Series。还有人提出是否有df.itercols()用于遍历列的方法,另一位回答者指出可以使用df.iteritems()来实现这个功能。

另外,有人提醒注意df[column]只遍历列名而不是列数据。这个问题可能回答了作者的具体问题,但并没有解决问题的标题中提到的遍历列数据的需求。

要遍历DataFrame的列来运行回归分析,可以使用以下代码:

for column in df:
    print(df[column])

需要注意的是,如果有相同名称的列,df[column]可能是一个DataFrame或Series。此外,df[column]只遍历列名而不是列数据。

希望以上内容对你有帮助!

0