Hướng dẫn iqr in python without numpy - iqr trong python không có numpy

Hướng dẫn iqr in python without numpy - iqr trong python không có numpy

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.

Hướng dẫn iqr in python without numpy - iqr trong python không có numpy

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

Hướng dẫn iqr in python without numpy - iqr trong python không có numpy

Đố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.

Làm thế nào để bạn tìm thấy IQR trong Python?

Tính phạm vi liên vùng của mảng trong Python. Chức năng phần trăm () chấp nhận bộ dữ liệu và phần trăm của các nhóm tứ phân như các tham số đầu vào và trả về các bộ tứ được tính toán. Sau khi trừ tứ phân vị đầu tiên từ Bộ tứ thứ ba, chúng tôi nhận được phạm vi liên vùng cho bộ dữ liệu.After subtracting the first quartile from the third quartile we get the interquartile range for the dataset.

Làm thế nào để bạn tìm thấy IQR theo cách thủ công?

Để tìm phạm vi liên vùng (IQR), trước tiên hãy tìm trung bình (giá trị trung bình) của nửa dưới và nửa trên của dữ liệu. Các giá trị này là phần tư 1 (q1) và tứ phân 3 (q3). IQR là sự khác biệt giữa Q3 và Q1.first find the median (middle value) of the lower and upper half of the data. These values are quartile 1 (Q1) and quartile 3 (Q3). The IQR is the difference between Q3 and Q1.

Làm thế nào để bạn tìm thấy Q1 và Q3 trong Python?

Chạy NP.Percentile (mẫu, [25, 50, 75]) trả về các giá trị thực từ danh sách: ra [1]: mảng ([12., 14., 22.]) Tuy nhiên, các bộ tứ là Q1 = 10.0,Median = 14, q3 = 24.5 (bạn cũng có thể sử dụng liên kết này để tìm các bộ tứ và trung bình trực tuyến).np. percentile(samples, [25, 50, 75]) returns the actual values from the list: Out[1]: array([12., 14., 22.]) However, the quartiles are Q1=10.0, Median=14, Q3=24.5 (you can also use this link to find the quartiles and median online).

Cách dễ nhất để tìm IQR là gì?

Chúng ta có thể tìm thấy phạm vi liên vùng hoặc IQR trong bốn bước đơn giản:..
Đặt hàng dữ liệu từ ít nhất đến lớn nhất ..
Tìm trung vị ..
Tính trung bình của cả nửa dưới và nửa trên của dữ liệu ..
IQR là sự khác biệt giữa trung vị trên và dưới ..