Often in statistics we’re interested in determining the p-value associated with a certain z-score that results from a hypothesis test. If this p-value is below some significance level, we can reject the null hypothesis of our hypothesis test.

To find the p-value associated with a z-score in Python, we can use the scipy.stats.norm.sf() function, which uses the following syntax:

**scipy.stats.norm.sf(abs(x))**

where:

**x:**The z-score

The following examples illustrate how to find the p-value associated with a z-score for a left-tailed test, right-tailed test, and a two-tailed test.

**Left-tailed test**

Suppose we want to find the p-value associated with a z-score of **-0.77** in a left-tailed hypothesis test.

import scipy.stats #find p-value scipy.stats.norm.sf(abs(-0.77)) 0.22064994634264962

The p-value is **0.2206**. If we use a significance level of α = 0.05, we would fail to reject the null hypothesis of our hypothesis test because this p-value is not less than 0.05.

**Right-tailed test**

Suppose we want to find the p-value associated with a z-score of **1.87** in a right-tailed hypothesis test.

import scipy.stats #find p-value scipy.stats.norm.sf(abs(1.87)) 0.030741908929465954

The p-value is **0.0307**. If we use a significance level of α = 0.05, we would reject the null hypothesis of our hypothesis test because this p-value is less than 0.05.

**Two-tailed test**

Suppose we want to find the p-value associated with a z-score of **1.24** in a two-tailed hypothesis test.

import scipy.stats #find p-value for two-tailed test scipy.stats.norm.sf(abs(1.24))*2 0.21497539414917388

*To find this two-tailed p-value we simply multiplied the one-tailed p-value by two.*

The p-value is **0.2149**. If we use a significance level of α = 0.05, we would fail to reject the null hypothesis of our hypothesis test because this p-value is not less than 0.05.

**Related: **You can also use this online Z Score to P Value Calculator to find p-values.

Hi,

What does it mean when you say P-value associated with z-score? In other words, what is the relationship between P-value and Z-score?

Thank you!

Regards,

Meriem

It seems like you lose whether the sign of the z-score matches the alternative hypothesis here? E.g. in a left sided test, a positive z-score should yield a p-value of 1, correct?

Would the following make sense to account for that?

Left sided: scipy.stats.norm.sf(abs(min(z-score, 0)))

Right sided: scipy.stats.norm.sf(max(z-score, 0))