Bagaimana Anda menemukan persentil data dengan python?

Persentil adalah salah satu alat paling umum untuk analisis statistik. Mereka digunakan untuk menentukan angka (skor) di mana persentase sampel tertentu termasuk. Misalnya, persentil 50% pada dasarnya adalah median, nilai di bawah separuh sampel

Saya akan menelusuri tiga pustaka Python paling penting dan paling populer dalam statistik dan pemrosesan numerik dan melihat bagaimana mereka dapat digunakan untuk menghitung persentil Python.

import matplotlib.pyplot as plt

plt.hist(data, bins=100)
0,
import matplotlib.pyplot as plt

plt.hist(data, bins=100)
1 &
import matplotlib.pyplot as plt

plt.hist(data, bins=100)
2. Juga, saya akan menunjukkan cara menghitung persentil Python tanpa library eksternal Python

Persentil. definisi

Pertama-tama, tidak ada definisi standar untuk persentil. Ada 9-10 yang umum digunakan. Namun, semuanya dirancang untuk menunjukkan perilaku serupa. Nama lain yang banyak digunakan untuk persentil adalah persentil-k, yang menyoroti bahwa kami sedang mencari skor di mana persentase-k dari sampel jatuh ke dalam.  

Bagaimana Anda menemukan persentil data dengan python?
M. W. Toews (Wikipedia) - https. // en. wikipedia. org/wiki/Persentil

Mungkin definisi yang paling sederhana adalah apa yang disebut metode "peringkat terdekat". Di mana kami mengurutkan data kami dengan panjang \(N\) ke dalam urutan menaik. Kemudian, kita mengambil peringkat ordinal \[n = \left\lceil  {k \over 100} \times N \right\rceil, \] ini memberi kita indeks \(n\) dari nilai batas untuk persentil kita

Bagaimana Anda menemukan persentil data dengan python?
Metode peringkat terdekat untuk persentil

Karena pembulatan, nilai cut-off belum tentu mulus. Ini mungkin bermasalah untuk aplikasi tertentu

Pendekatan populer lainnya adalah dengan menggunakan interpolasi. Dengan pendekatan ini, Anda menginterpolasi antara nilai yang berdekatan. Ada berbagai variasi bagaimana interpolasi dilakukan. Umumnya, interpolasi linier digunakan. Menelaah detail berbagai varian berada di luar cakupan posting ini. Paket komputasi numerik esensial, yang juga kami bahas, cenderung mendukung metode interpolasi

Data uji

Seperti biasa, kami memerlukan beberapa data uji untuk memulai eksperimen kami dengan persentil. Untuk mempermudah, kami menggunakan data yang terdistribusi normal dengan rata-rata nol dan deviasi unit. Ini membuatnya mudah untuk menafsirkan dan membandingkan hasilnya

Berikut ini, kami membuat kumpulan data uji. Kami menggunakan

import matplotlib.pyplot as plt

plt.hist(data, bins=100)
0 untuk mengambil sampel dari distribusi normal.  

import numpy as np

mean = 0 # zero mean
deviation = 1 # unit standard deviation
samples = 10000 # number of samples in the test data set

data = np.random.normal(mean, deviation, samples)
_

Untuk memverifikasi kebenaran data, kita cukup memplot histogram dan melihat tampilannya

import matplotlib.pyplot as plt

plt.hist(data, bins=100)
Bagaimana Anda menemukan persentil data dengan python?

Tampak kurang lebih seperti variabel acak yang terdistribusi normal. Jadi kita baik untuk melanjutkan.

Selanjutnya, kita harus menentukan, apa yang diharapkan dari data pengujian kita. Melihat gambar persentil pertama, 68. 2% persen sampel harus berada dalam rentang \([-\sigma, \sigma] = [-1, 1]\). Mengikuti simetri distribusi, 68. 2% dari nilai absolut sampel harus kurang dari \(\sigma = 1\)

Demikian pula, \(68. 2\% + 2 \kali 13. 6\% = 95. 4\%\) dari nilai absolut sampel harus kurang dari \(2\sigma = 2\)

Sekarang kita tahu apa yang diharapkan, kita bisa mulai menguji paket yang berbeda untuk menghitung persentil

NumPy

NumPy tentu saja adalah paket masuk kami untuk perhitungan numerik apa pun. Ini juga termasuk metode persentil, yang sangat nyaman digunakan. Anda dapat menemukannya dari

import matplotlib.pyplot as plt

plt.hist(data, bins=100)
_4 atau
import matplotlib.pyplot as plt

plt.hist(data, bins=100)
5 saat menggunakan alias konvensional

NumPy memiliki dukungan untuk 9 metode berbeda untuk menghitung persentil. Ini diatur dengan menggunakan atribut

import matplotlib.pyplot as plt

plt.hist(data, bins=100)
6. Linear adalah metode default. Ini referensi interpolasi linier, seperti yang dibahas di atas. Perkiraan linier cepat dan memberikan hasil yang masuk akal untuk sebagian besar skenario. Selain itu, kategori metode interpolasi yang luas. Ada juga yang mengambil nilai terdekat. Metode ini akan lebih dekat dengan metode rank terdekat sederhana seperti yang dibahas pada bagian sebelumnya.  

Tanpa masuk terlalu jauh ke dalam NumPy internal. Mari kita lihat bagaimana menghitung persentil bekerja dengannya. Pertama mari kita hitung 68. Persentil 2% dari data pengujian kami. Dari data, kami berharap ini mendekati 1

import numpy as np

p = np.percentile(np.abs(data), 68.2)

print("Percentile score", p)
_

Hasil uji coba saya adalah

import matplotlib.pyplot as plt

plt.hist(data, bins=100)
7

Kami juga dapat memverifikasi ini dengan arah sebaliknya dengan menghitung berapa banyak sampel di bawah

import matplotlib.pyplot as plt

plt.hist(data, bins=100)
7

np.sum(np.abs(data) < 1.004291475264509) / len(data) * 100

Ini memberi kita persis

import matplotlib.pyplot as plt

plt.hist(data, bins=100)
_9. Sejauh ini
import matplotlib.pyplot as plt

plt.hist(data, bins=100)
5 berfungsi persis seperti yang diharapkan. Selanjutnya, kita bisa menguji dengan 95. Persentil 2%, yang seharusnya mendekati 2

import numpy as np

p = np.percentile(np.abs(data), 95.2)

print("Percentile score", p)

Ini memberi kita

import numpy as np

p = np.percentile(np.abs(data), 68.2)

print("Percentile score", p)
_1. Cukup dekat, dengan jumlah sampel yang kami miliki relatif sedikit

SciPy

Jika Anda perlu melampaui kemampuan NumPy dan Anda menggunakan SciPy, Anda mungkin ingin melihat paket

import numpy as np

p = np.percentile(np.abs(data), 68.2)

print("Percentile score", p)
2 untuk perhitungan persentil. SciPy mengimplementasikan persentil dengan metode
import numpy as np

p = np.percentile(np.abs(data), 68.2)

print("Percentile score", p)
3

Penggunaan dasarnya sangat mirip dengan

import matplotlib.pyplot as plt

plt.hist(data, bins=100)
5. Anda memberikan input dalam format array dan persentil yang diinginkan. Metode mengembalikan skor persentil yang sesuai

import scipy.stats

p = scipy.stats.scoreatpercentile(np.abs(data), 68.2)

print("Percentile score", p)

Ini mengembalikan

import matplotlib.pyplot as plt

plt.hist(data, bins=100)
_7, yang cocok dengan hasil kami dari NumPy. Jika Anda ingin pergi ke arah sebaliknya. Ada fungsi praktis di SciPy
import numpy as np

p = np.percentile(np.abs(data), 68.2)

print("Percentile score", p)
6.  

import scipy.stats

p = scipy.stats.percentileofscore(np.abs(data), 1.004291475264509)

print("Percentile", p)

Ini memberi kita kembali

import matplotlib.pyplot as plt

plt.hist(data, bins=100)
9, seperti yang diharapkan

Panda

Perpustakaan terakhir yang kita lihat adalah Pandas. Jika Anda berurusan dengan data statistik dalam format tabel, perubahannya adalah Anda sudah menggunakan Pandas. Panda mendukung persentil komputasi melalui metode

import numpy as np

p = np.percentile(np.abs(data), 68.2)

print("Percentile score", p)
_8, yang sudah tersedia untuk panda
import numpy as np

p = np.percentile(np.abs(data), 68.2)

print("Percentile score", p)
9

Di Pandas, kita perlu memastikan bahwa kita bekerja dengan format data asli Pandas. Kita perlu mengubah kumpulan data kita menjadi

np.sum(np.abs(data) < 1.004291475264509) / len(data) * 100
0 dan menggunakan metode
import numpy as np

p = np.percentile(np.abs(data), 68.2)

print("Percentile score", p)
8. Ini mengambil persentil sebagai pecahan, bukan persentase. Artinya, untuk persentil
import matplotlib.pyplot as plt

plt.hist(data, bins=100)
_9, kami melewati
np.sum(np.abs(data) < 1.004291475264509) / len(data) * 100
3.    

import pandas as pd

series = pd.Series(np.abs(data))

p = series.quantile(68.2 / 100)

print("Percentile score", p)
Menghitung persentil di Pandas

Dalam kasus kami, ini mencetak

import matplotlib.pyplot as plt

plt.hist(data, bins=100)
7, yang lagi cocok dengan hasil yang diharapkan dan sebelumnya

Implementasi persentil khusus

Jika Anda berada di lingkungan di mana tidak ada perpustakaan yang disebutkan di atas tersedia, maka Anda mungkin perlu mengimplementasikan perhitungan persentil sendiri. Perubahannya adalah implementasi Anda akan lebih lambat daripada yang disediakan dalam paket komputasi numerik, tetapi terkadang itu satu-satunya pilihan

Salah satu cara termudah untuk melakukannya adalah dengan menggunakan metode peringkat terdekat seperti yang dibahas di awal postingan. Dengan pendekatan ini, kami memiliki langkah-langkah berikut

  1. Urutkan data dalam urutan menaik
  2. Pilih indeks yang sesuai dengan persentil yang diberikan

Ini mungkin bukan cara yang paling efisien karena penyortiran cenderung menjadi proses yang berat secara komputasi, tetapi menyelesaikan pekerjaan

import math

def percentile(input, q):
    data_sorted = sorted(input) # Sort in ascending order
    
    index = math.ceil(q / 100 * len(data_sorted))

    return data_sorted[index]
Implementasi Python kustom untuk menghitung persentil

Demikian pula, untuk contoh sebelumnya, kami akan menggunakan nilai absolut dari data yang terdistribusi normal untuk memverifikasi hasil kami

data_abs = [abs(d) for d in data] # Convert to the absolute values

p = percentile(data_abs, 68.2)

print("Percentile score", p)

Ini memberi kita

np.sum(np.abs(data) < 1.004291475264509) / len(data) * 100
_5, seperti yang diharapkan

Perhatikan betapa sederhananya penerapan metode peringkat terdekat. Anda dapat dengan mudah memasukkan ini ke dalam oneliner

Ringkasan

Menghitung persentil dengan Python relatif mudah. Persentil adalah alat penting dalam statistik, dan semua perpustakaan komputasi numerik & statistik penting memiliki dukungan untuk persentil. Bahkan mengimplementasikannya sendiri tanpa bantuan apa pun dari pustaka Python eksternal itu mudah jika kita rela mengorbankan beberapa kinerja

Mudah-mudahan, Anda bersenang-senang melalui berbagai pendekatan untuk menghitung persentil dengan Python. Untuk menyelami topik ini lebih jauh dan lebih dalam, periksa halaman Wikipedia di bawah ini.  

Bagaimana Anda menemukan persentil data?

Cara menghitung persentil .
Masukkan data Anda dalam urutan menaik
Bagilah jumlah nilai di bawah ini dengan jumlah total nilai
Kalikan hasilnya
Temukan persentil kumpulan data Anda
Temukan jumlah item dalam kumpulan data
Kalikan jumlah item dan satu dengan 100

Bagaimana Anda menemukan persentil di Python tanpa NumPy?

Menulis Fungsi Python untuk Menghitung Persentil .
def my_percentile(data, persentil)
n = len(data)
jika hal. is_integer()
kembali diurutkan(data)[int(p)]
kembali diurutkan(data)[int(math. langit-langit(p)) - 1]

Bagaimana Anda menemukan persentil nilai dalam panda?

Ikhtisar Metode Kuantil Panda .
q=[0. 5]. float atau array yang menyediakan nilai kuantil untuk dihitung
sumbu=[0]. sumbu untuk menghitung persentil pada (0 untuk baris dan 1 untuk kolom)
numeric_only=[Benar]. diatur ke False , hitung juga nilai untuk kolom datetime dan timedelta

Apa itu Python persentil?

NumPy percentile() function di Python digunakan untuk menghitung persentil ke-n dari elemen array sepanjang sumbu yang ditentukan . Kami pada dasarnya menggunakan persentil dalam statistik yang memberi Anda angka yang menggambarkan nilai yang lebih rendah dari persentase nilai tertentu.