Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

243
Views
Use .corr para obtener la correlación entre dos columnas

Tengo el siguiente marco de datos de pandas Top15 :ingrese la descripción de la imagen aquí

Creo una columna que estima la cantidad de documentos citables por persona:

 Top15['PopEst'] = Top15['Energy Supply'] / Top15['Energy Supply per Capita'] Top15['Citable docs per Capita'] = Top15['Citable documents'] / Top15['PopEst']

Quiero saber la correlación entre el número de documentos citables per cápita y el suministro de energía per cápita. Así que uso el método .corr() (correlación de Pearson):

 data = Top15[['Citable docs per Capita','Energy Supply per Capita']] correlation = data.corr(method='pearson')

Quiero devolver un solo número, pero el resultado es:ingrese la descripción de la imagen aquí

over 4 years ago · Santiago Trujillo
3 answers
Answer question

0

Sin datos reales, es difícil responder a la pregunta, pero supongo que está buscando algo como esto:

 Top15['Citable docs per Capita'].corr(Top15['Energy Supply per Capita'])

Eso calcula la correlación entre sus dos columnas 'Citable docs per Capita' y 'Energy Supply per Capita' .

Para dar un ejemplo:

 import pandas as pd df = pd.DataFrame({'A': range(4), 'B': [2*i for i in range(4)]}) AB 0 0 0 1 1 2 2 2 4 3 3 6

Entonces

 df['A'].corr(df['B'])

da 1 como se esperaba.

Ahora, si cambia un valor, por ejemplo

 df.loc[2, 'B'] = 4.5 AB 0 0 0.0 1 1 2.0 2 2 4.5 3 3 6.0

El comando

 df['A'].corr(df['B'])

devoluciones

 0.99586

que todavía está cerca de 1, como se esperaba.

Si aplica .corr directamente a su marco de datos, devolverá todas las correlaciones por pares entre sus columnas ; es por eso que luego observas 1s en la diagonal de tu matriz (cada columna está perfectamente correlacionada consigo misma).

 df.corr()

por lo tanto regresará

 AB A 1.000000 0.995862 B 0.995862 1.000000

En el gráfico que muestra, solo se representa la esquina superior izquierda de la matriz de correlación (supongo).

Puede haber casos en los que obtenga NaN s en su solución: consulte esta publicación para ver un ejemplo.

Si desea filtrar las entradas por encima o por debajo de un determinado umbral, puede consultar esta pregunta . Si desea trazar un mapa de calor de los coeficientes de correlación, puede verificar esta respuesta y, si luego se encuentra con el problema con las etiquetas de eje superpuestas, consulte la siguiente publicación .

over 4 years ago · Santiago Trujillo Report

0

Me encontré con el mismo problema. Citable Documents per Person era flotante, y python lo omite de alguna manera por defecto. Todas las demás columnas de mi marco de datos estaban en formatos numpy, así que lo resolví convirtiendo la columna a np.float64

 Top15['Citable Documents per Person']=np.float64(Top15['Citable Documents per Person'])

Recuerde que es exactamente la columna que usted mismo calculó

over 4 years ago · Santiago Trujillo Report

0

Mi solución sería después de convertir datos a tipo numérico:

 Top15[['Citable docs per Capita','Energy Supply per Capita']].corr()
over 4 years ago · Santiago Trujillo Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!