How to find correlated columns in a dataframe#

In addition to TableReport’s Associations tab, you can compute associations using the column_associations() function, which returns a dataframe containing the associations.

Reported metrics include Cramer’s V statistic and Pearson’s Correlation Coefficient. The result is returned as a dataframe that contains the column name and idx for the left and the right table, and both associations; results are sorted in descending order by Cramer’s V association.

This can be useful to have access to the information used in the TableReport for later use (e.g., to select which columns to drop). These associations are also used by the DropSimilar transformer to select which columns should be dropped.

from skrub import column_associations
from skrub.datasets import fetch_employee_salaries
import pandas as pd
path = fetch_employee_salaries().path
df = pd.read_csv(path)
column_associations(df).head()

      left_column_name  left_column_idx        right_column_name  right_column_idx  cramer_v  pearson_corr
0           department                1          department_name                 2  1.000000           NaN
1  assignment_category                4    current_annual_salary                 8  0.635525           NaN
2             division                3      assignment_category                 4  0.601097           NaN
3  assignment_category                4  employee_position_title                 5  0.496814           NaN
4             division                3  employee_position_title                 5  0.416034           NaN