簡體   English   中英

如何遍歷 dataframe 並將列傳遞給 Python 中的 glm function?

[英]How to iterate through dataframe and pass columns to glm function in Python?

我有一個帶有 7 個變量的 dataframe:

   RACA   pca   pp  pcx  psc     lp     csc
0     BARBUDA  1915  470  150  140  87.65   91.41
1     BARBUDA  1345  305  100  110  79.32   98.28
2     BARBUDA  1185  295   80   85  62.19   83.12
3     BARBUDA  1755  385  120  130  80.65   90.01
4     BARBUDA  1570  325  120  120  77.96   87.99
5    CANELUDA  1640  365  110  115  81.38   87.26
6    CANELUDA  1960  525  135  145  89.21   99.37
7    CANELUDA  1715  410  100  120  79.35   99.84
8    CANELUDA  1615  380  100  110  76.32   99.27
9    CANELUDA  2230  500  165  160  90.22   99.56
10   CANELUDA  1570  400  105   95  85.24   83.95
11  COMERCIAL  1815  380  145   90  73.32   92.81
12  COMERCIAL  2475  345  180  140  71.77  105.64
13  COMERCIAL  1870  295  125  125  72.36   97.89
14  COMERCIAL  2435  565  185  160  73.24  107.39
15  COMERCIAL  1705  315  115  125  72.03   96.11
16  COMERCIAL  2220  495  165  150  87.63   96.89
17     PELOCO  1145  250   75   85  50.57   77.90
18     PELOCO   705   85   55   50  38.26   78.09
19     PELOCO  1140  195   80   75  66.15   96.35
20     PELOCO  1355  250   90   95  50.60   91.39
21     PELOCO  1095  220   80   80  53.03   84.57
22     PELOCO  1580  255  125  120  59.30   95.57

我想在 R 中為每個因變量 pca:csc 安裝一個 glm,這很簡單,但我不知道如何在 Python 上使用它。 我嘗試編寫一個 for 循環並將列名傳遞給公式,但到目前為止還沒有成功:

for column in df:
    col = str(column)
    model = sm.formula.glm(paste(col,"~ RACA"), data=df).fit()
    print(model.summary())

我正在使用 Pandas 和 statsmodel

import pandas as pd
import statsmodels.api as sm

我想它一定很簡單,但我真的想不通。

我能夠找到一個解決方案,不知道它是否是最有效或最優雅的解決方案,但給出我想要的結果:

for column in df.loc[:,'pca':'csc']:
    col = str(column)
    formula = col + "~RACA"
    model = sm.formula.glm(formula = formula, data=df).fit()
    print(model.summary())

我願意接受有關如何改進這一點的建議。 謝謝!

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM