Considera todas las posibles combinaciones, elimina las entradas NaN y obtén la regresión lineal.
Estoy trabajando con Python por primera vez, así que tengo algunas dificultades.
Tengo un archivo CSV con datos que tiene 6 columnas y 20 filas, algunas entradas son ‘NaN’. Lo que estoy tratando de hacer es una interacción que considere la primera columna con las otras (A vs B, C, D, E y F), luego la segunda columna con todas las demás (B vs C, D, E y F), etc. (es decir, comparar todas las posibles parejas de las 6 columnas), para cada pareja eliminar las entradas ‘NaN’ (por lo que el número de filas para cada pareja final sería diferente) y calcular la regresión lineal.
Puedo obtener los resultados que estoy buscando considerando cada pareja “manualmente”, pero como tengo bastantes DataFrames para los cuales debo hacer este procedimiento, llevaría mucho tiempo, por lo que espero que alguien me ayude con un método más rápido.
Parte de mis datos:
| A | B | C | D | E | F |
| 70.385 | 1316.0 | NaN | 1.84 | 1.021059e+37 | 1.284026e+41 |
| 13.183 | 800.0 | 11549.0 | 1.66 | 4.710032e+35 | Nan |
| 9.750 | NaN | NaN | 1.55 | 1.437108e+36 | 5.070657e+40 |
| 12.302 | NaN | 547.7 | 1.56 | 2.149507e+36 | 2.294859e+40 |
| NaN | 2784.2 | 29984.4 | 1.87 | NaN | 2.294859e+40 |
Lo que puedo hacer es:
import pandas as pd
from scipy.stats import linregress
df = data1.dropna(subset=['A','B'])
lr_AB = linregress(df['A'], df['B'])
Y lo que estoy tratando de obtener es: LinregressResult(slope= , intercept=, rvalue=, pvalue=, stderr=) para cada pareja. Entonces, ¿cómo itero estos dos comandos para cada posible pareja de columnas?
Mi intento fue este, pero sin muchos resultados:
for i in range(len(data1.columns)-1):
if data1.iloc[:, :] is 'NaN':
df = data1.dropna()
print(df)
lr = linregress(df.iloc[:, i], df.iloc[:, i+1])
else:
print('no nan')
lr1 = linregress(data1.iloc[:, i], data1.iloc[:, i+1])
Muchas gracias.
davy.ai
Para iterar a través de cada posible par de columnas y calcular la regresión lineal, puedes utilizar bucles anidados. El bucle externo iterará a través de cada columna, y el bucle interno iterará a través de todas las demás columnas. De esta manera, puedes comparar cada par de columnas.
Aquí tienes un ejemplo de código que puedes utilizar:
Este código iterará a través de cada posible par de columnas y calculará la regresión lineal, excluyendo cualquier par que involucre valores NaN. Ten en cuenta que estoy asumiendo que los nombres de las columnas se almacenan como cadenas de texto en el archivo csv. Si son numéricos, puedes eliminar las comillas alrededor de ‘NaN’.