如何使用input或raw_input为OLS程序创建输入

时间:2015-08-16 02:29:12

标签: python pandas input regression raw-input

我想创建一个小程序,允许我在Python中使用raw_input(现在只是输入)函数将一组数字输入到OLS函数中

目前我的代码看起来像这样

import pandas as pd
from pandas import DataFrame
from pandas.stats.api import ols

inp=raw_input("Enter String A")
A=map(int,inp.split())

inp=raw_input("Enter String B")
B=map(int,inp.split())

inp=raw_input("Enter String C")
C=map(int,inp.split())


def firstreg():

   df = pd.DataFrame({'A':[A], 'B':[B], 'C':[C]})
   reg = ols (y=df['A'], x=df[['B','C']])
   print reg

firstreg()

正如您所看到的,我正在尝试使用A=map(int,inp.split())来解决我的问题。它没用。我还使用了A=array(inp)A=float(inp)以及A=str(inp)来尝试解决我的问题而无济于事。主要问题是OLS功能是Pandas需要输入才能成为一个字符串才能工作。

我希望程序运行如下:

  1. 将文件作为regression.py

  2. 运行
  3. 它要求输入字符串A

  4. 用户输入的数字组为“1,2,3 ect ...”或“1 2 3 ect ...”
  5. 然后用户对输入字符串B 输入字符串C 执行相同的操作。
  6. 然后程序根据def firstreg():
  7. 中的OLS模型打印出回归结果

    我希望这个问题有道理。

1 个答案:

答案 0 :(得分:1)

看起来这段代码的问题是你在这一行的另一个列表中嵌入了整数列表:

df = pd.DataFrame({'A':[A], 'B':[B], 'C':[C]})

你在这里做的是使用map函数获取你在上面创建的每个列表,然后将它放在另一个列表中。输入字符串[A]的{​​{1}}将变为"1 2 3",这不是我们想要的。将该行替换为:

[[1, 2, 3]]

它应该有用。

修改

完整写出:

df = pd.DataFrame({'A': A, 'B': B, 'C': C})