从python数据框中选择特定行,以便在PANDAS中进行ols回归

时间:2016-02-26 20:25:53

标签: python pandas regression

如何从python数据框中为PANDAS中的ols回归选择特定行?

我有一个包含1,000行的pandas数据帧。我想在B + C列上对前10行的A列进行回归。当我输入:

["Apple", "Banana"]

// <input id="Apple"... data-makes="Pie,Dumpling,Cider"> 
// <input id="Banana" ... data-makes="Bread,Republic"

var output = [];
var fruits = ["Apple", "Banana"];
for (i=0; i < fruits.length; ++i)
{
  members = document.getElementById(fruits[i]).getAttribute("data-makes");
  tmp = members.split(",");
  for (k=0; k < tmp.length; ++k)
  {
    output[i][k+1] = tmp[k];
  }
}

我得到了行991-1000的回归结果。如何指定我想要FIRST(或第二行等)10行?

提前致谢。

1 个答案:

答案 0 :(得分:0)

我认为您可以使用iloc

mod = pd.ols(y=df['A'].iloc[2:12], x=df[['B','C']].iloc[2:12], window=10)

ix

mod = pd.ols(y=df.ix[2:12, 'A'], x=df.ix[2:12, ['B', 'C']], window=10)

如果您需要所有群组,请使用range

for i in range(10):
    #print i, i+10
    mod = pd.ols(y=df['A'].iloc[i:i + 10], x=df[['B','C']].iloc[i:i + 10], window=10)

如果您需要有关ols的帮助,请在help(pd.ols)中尝试IPython,因为pandas docs中的此功能缺失:

In [79]: help(pd.ols)
Help on function ols in module pandas.stats.interface:

ols(**kwargs)
    Returns the appropriate OLS object depending on whether you need
    simple or panel OLS, and a full-sample or rolling/expanding OLS.

    Will be a normal linear regression or a (pooled) panel regression depending
    on the type of the inputs:

    y : Series, x : DataFrame -> OLS
    y : Series, x : dict of DataFrame -> OLS
    y : DataFrame, x : DataFrame -> PanelOLS
    y : DataFrame, x : dict of DataFrame/Panel -> PanelOLS
    y : Series with MultiIndex, x : Panel/DataFrame + MultiIndex -> PanelOLS

    Parameters
    ----------
    y: Series or DataFrame
        See above for types
    x: Series, DataFrame, dict of Series, dict of DataFrame, Panel
    weights : Series or ndarray
        The weights are presumed to be (proportional to) the inverse of the
        variance of the observations.  That is, if the variables are to be
        transformed by 1/sqrt(W) you must supply weights = 1/W
    intercept: bool
        True if you want an intercept.  Defaults to True.
    nw_lags: None or int
        Number of Newey-West lags.  Defaults to None.
    nw_overlap: bool
        Whether there are overlaps in the NW lags.  Defaults to False.
    window_type: {'full sample', 'rolling', 'expanding'}
        'full sample' by default
    window: int
        size of window (for rolling/expanding OLS). If window passed and no
        explicit window_type, 'rolling" will be used as the window_type

    Panel OLS options:
        pool: bool
            Whether to run pooled panel regression.  Defaults to true.
        entity_effects: bool
            Whether to account for entity fixed effects.  Defaults to false.
        time_effects: bool
            Whether to account for time fixed effects.  Defaults to false.
        x_effects: list
            List of x's to account for fixed effects.  Defaults to none.
        dropped_dummies: dict
            Key is the name of the variable for the fixed effect.
            Value is the value of that variable for which we drop the dummy.

            For entity fixed effects, key equals 'entity'.

            By default, the first dummy is dropped if no dummy is specified.
        cluster: {'time', 'entity'}
            cluster variances

    Examples
    --------
    # Run simple OLS.
    result = ols(y=y, x=x)

    # Run rolling simple OLS with window of size 10.
    result = ols(y=y, x=x, window_type='rolling', window=10)
    print(result.beta)

    result = ols(y=y, x=x, nw_lags=1)

    # Set up LHS and RHS for data across all items
    y = A
    x = {'B' : B, 'C' : C}

    # Run panel OLS.
    result = ols(y=y, x=x)

    # Run expanding panel OLS with window 10 and entity clustering.
    result = ols(y=y, x=x, cluster='entity', window_type='expanding', window=10)

    Returns
    -------
    The appropriate OLS object, which allows you to obtain betas and various
    statistics, such as std err, t-stat, etc.