# How to Calculate Cramer’s V in Python?

• Last Updated : 28 Feb, 2022

Cramer’s V: It is defined as the measurement of length between two given nominal variables. A nominal variable is a type of data measurement scale that is used to categorize the different types of data. Cramer’s V lies between 0 and 1 (inclusive). 0 indicates that the two variables are not linked by any relation. 1 indicates that there exists a strong association between the two variables. Cramer’s V can be calculated by using the below formula:

√(X2/N) / min(C-1, R-1)

Here,

• X2: It is the Chi-square statistic
• N: It represents the total sample size
• R: It is equal to the number of rows
• C: It is equal to the number of columns

Example 1:

Let us calculate Cramer’s V for a 3 × 3 Table.

## Python3

 # Load necessary packages and functionsimport scipy.stats as statsimport numpy as np  # Make a 3 x 3 tabledataset = np.array([[13, 17, 11], [4, 6, 9],                    [20, 31, 42]])  # Finding Chi-squared test statistic,# sample size, and minimum of rows# and columnsX2 = stats.chi2_contingency(dataset, correction=False)[0]N = np.sum(dataset)minimum_dimension = min(dataset.shape)-1  # Calculate Cramer's Vresult = np.sqrt((X2/N) / minimum_dimension)  # Print the resultprint(result)

Output:

Output

The Cramers V comes out to be equal to 0.121 which clearly depicts the weak association between the two variables in the table.

Example 2:

We will now calculate Cramer’s V for larger tables and having unequal dimensions. The Cramers V comes out to be equal to 0.12 which clearly depicts the weak association between the two variables in the table.

## Python3

 # Load necessary packages and functionsimport scipy.stats as statsimport numpy as np  # Make a 5 x 4 tabledataset = np.array([[4, 13, 17, 11], [4, 6, 9, 12],                    [2, 7, 4, 2], [5, 13, 10, 12],                    [5, 6, 14, 12]])  # Finding Chi-squared test statistic, # sample size, and minimum of rows and# columnsX2 = stats.chi2_contingency(dataset, correction=False)[0]N = np.sum(dataset)minimum_dimension = min(dataset.shape)-1  # Calculate Cramer's Vresult = np.sqrt((X2/N) / minimum_dimension)  # Print the resultprint(result)

Output:

Output

The Cramers V comes out to be equal to 0.146 which clearly depicts the weak association between the two variables in the table.

My Personal Notes arrow_drop_up