Giới thiệu
Điều kiện tiên quyết: Quartiles, Quantiles và phần trăm Quartiles, Quantiles and Percentiles
Phạm vi & nbsp; phạm vi liên vùng [IQR] là sự khác biệt giữa phần trăm thứ 75 [0,75 lượng tử] và phần trăm thứ 25 [0,25 lượng tử]. IQR có thể được sử dụng để phát hiện các ngoại lệ trong dữ liệu.Interquartile range [IQR] is the difference between the 75th percentile [0.75 quantile] and the 25th percentile [0.25 quantile]. The IQR can be used to detect outliers in the data.
Thực hành Python
import pandas as pd import numpy as np import matplotlib.pyplot as plt %matplotlib inline
1 - Bộ dữ liệu
Đối với hướng dẫn này, chúng tôi sẽ sử dụng nhiệt độ trung bình toàn cầu từ năm 1980 đến 2016. Bộ dữ liệu gốc có thể được tìm thấy trên Datahub.io.
df = pd.read_csv["../data/temperature_CO2.csv"] df = df.dropna[] df = df[['year', 'temperature']] df.head[3]
year temperature
2016 0.991
2015 0.872
2014 0.74
2 - Tính tỷ lệ phần trăm
Để tính toán IQR, chúng ta cần biết nhiệt độ nào tương ứng với:
- Tỷ lệ phần trăm thứ 25 [tức là ấm hơn 25% nhiệt độ trong bộ dữ liệu này]
- Tỷ lệ phần trăm thứ 75 [tức là ấm hơn 75% nhiệt độ trong bộ dữ liệu này]
Để đạt được điều này, trước tiên hãy sắp xếp bộ dữ liệu của bạn bằng nhiệt độ tăng dần và đặt lại các chỉ số.
df = df.sort_values[by='temperature'].reset_index[drop=True] df.head[]
year temperature
1985 0.121
1982 0.132
1984 0.153
1986 0.194
1992 0.23
Sau đó, sử dụng quy tắc ba để tìm chỉ số giá trị tương ứng với thứ hạng phần trăm của bạn. Ví dụ cho phần trăm thứ 25:
$$ \ textbf {length [data]} -1 \ longrightarrow 100^{th} \ text {phần trăm} $$
$$ \ textbf {length [x]} & nbsp; \ longrightarrow 25^{th} \ text {phần trăm} $$
& Nbsp; ________ 12 & nbsp; có tính đến thực tế là các chỉ số bắt đầu ở mức 0. Vì thế
def get_percentile[df, percentile_rank]: # First, sort by ascending temperature, reset the indices df = df.sort_values[by='temperature'].reset_index[] # Rule of three to get the index of the temperature index = [len[df.index]-1] * percentile_rank / 100.0 index = int[index] # Return the temperature corresponding to the percentile rank return df.at[index, 'temperature']
Vì vậy, chúng tôi thấy rằng phần trăm thứ 25 là 0,32 độ C, và phần trăm thứ 75 là 0,63 độ C.
get_percentile[df, 25] >>> 0.32
get_percentile[df, 75] >>> 0.63
2 - Tính IQR
Gần như được thực hiện: Vì phạm vi liên vùng [IQR] là sự khác biệt giữa phần trăm thứ 75 và phần trăm thứ 25, tất cả những gì chúng ta cần làm là trừ cả hai giá trị nhiệt độ.
def interquartile_range[df]: p75 = get_percentile[df, 75] # 75th percentile p25 = get_percentile[df, 25] # 75th percentile iqr = p75 - p25 # Interquartile Range return iqr
interquartile_range[df] >>> 0.31
3 - Xác nhận
Mã hóa IQR từ đầu là một cách tốt để học toán đằng sau nó, nhưng trong cuộc sống thực, bạn sẽ sử dụng một thư viện Python để tiết kiệm thời gian. Chúng tôi có thể sử dụng & nbsp; ________ 13 & nbsp; hàm từ & nbsp; ____ 14 & nbsp; để xác thực kết quả của chúng tôi.
df = pd.read_csv["../data/temperature_CO2.csv"] df = df.dropna[] df = df[['year', 'temperature']] df.head[3]0
4 - Trực quan hóa
Hãy để âm mưu cho phần trăm thứ 25, phần trăm thứ 50 [trung bình] và phần trăm thứ 75 của dữ liệu.
df = pd.read_csv["../data/temperature_CO2.csv"] df = df.dropna[] df = df[['year', 'temperature']] df.head[3]1
Đối với một máy tính xách tay Python hoạt động đầy đủ, hãy kiểm tra GitHub của tôi.