Lompat ke konten

Authemic

System of Trust

  • WordPress Theme
  • AI
  • Tentang Kami
  • Hubungi Kami
  • Komunitas
  • Tanya Authemic
  1. Authemic
  2. Python
  3. Tutorial Lengkap Menggunakan Library Statistics di Python

Tutorial Lengkap Menggunakan Library Statistics di Python

15/03/2026 oleh Mas Hedi

Halo Autehemrs dan Insan Coding, jumpa lagi dalam seri Tutorial Python untuk Pemula. Bagi kamu yang mau belajar python, kamu sedang berada di website yang tepat.

Sebelumnya kita sudah membahas library math, kini saya akan bahas bagaimana cara menggunakan library statistics di python dan contoh aplikasi sedernana statistik dengan python.

šŸ“‹ Daftar Isi

  • Mengimpor Library Statistics
  • Membuat Data untuk Analisis Statistik
  • Menghitung Nilai Rata-rata (Mean)
  • Menghitung Median
  • Menghitung Modus
  • Menghitung Variansi
  • Menghitung Standar Deviasi
  • Menentukan Nilai Minimum dan Maksimum
  • Mengurutkan Data
  • Contoh Aplikasi Statistik Sederhana dengan Python
  • Pengembangan Aplikasi Statistik
  • Kesimpulan
  • FAQ: Library Statistics di Python

Dalam dunia pemrograman modern, pengolahan data menjadi salah satu kemampuan yang sangat penting. Banyak aplikasi komputer saat ini membutuhkan kemampuan untuk menganalisis data, menghitung rata-rata, mengetahui nilai maksimum dan minimum, hingga memahami penyebaran data secara statistik.

šŸ“š Baca Juga

  • Tutorial Membuat Kalkulator Saintifik dengan Python (Lengkap untuk Pemula)
  • Mengenal Library Math di Python dan Contoh Aplikasi Matematika Lengkap
  • 20 Library Python Paling Penting untuk Pemula

Python sebagai bahasa pemrograman yang sangat populer dalam bidang data science menyediakan berbagai alat untuk melakukan analisis data. Salah satu modul bawaan Python yang sangat berguna untuk keperluan ini adalah library statistics.

Library statistics merupakan modul standar Python yang dirancang khusus untuk melakukan berbagai perhitungan statistik dasar. Dengan modul ini, programmer dapat dengan mudah menghitung berbagai nilai statistik tanpa harus menuliskan rumus matematika secara manual.

Beberapa perhitungan statistik yang dapat dilakukan menggunakan library ini antara lain:

  • menghitung rata-rata data
  • mencari nilai median
  • menentukan modus
  • menghitung standar deviasi
  • menghitung variansi
  • menentukan nilai minimum dan maksimum

Modul ini sangat cocok digunakan untuk analisis data sederhana, aplikasi pendidikan, serta berbagai proyek pemrograman yang berkaitan dengan pengolahan angka.

Pada tutorial ini kita akan mempelajari berbagai fungsi penting dalam library statistics serta membuat contoh aplikasi sederhana yang memanfaatkan fungsi-fungsi tersebut.

Mengimpor Library Statistics

Sebelum menggunakan modul statistik di Python, kita harus mengimpornya terlebih dahulu.

Contoh kode:

import statistics

Setelah modul ini diimpor, kita dapat menggunakan berbagai fungsi yang tersedia di dalamnya.

Membuat Data untuk Analisis Statistik

Sebelum melakukan perhitungan statistik, kita perlu menyiapkan data terlebih dahulu. Biasanya data disimpan dalam bentuk list.

Contoh data:

data = [10, 15, 20, 25, 30, 35, 40]

List tersebut berisi beberapa angka yang akan kita analisis menggunakan fungsi statistik.

Menghitung Nilai Rata-rata (Mean)

Rata-rata merupakan salah satu ukuran statistik yang paling sering digunakan. Nilai ini diperoleh dengan menjumlahkan seluruh data kemudian membaginya dengan jumlah data.

Library statistics menyediakan fungsi mean() untuk menghitung rata-rata.

Contoh kode:

import statistics

data = [10, 15, 20, 25, 30]

hasil = statistics.mean(data)

print("Rata-rata:", hasil)

Output: Rata-rata: 20.

Fungsi ini sangat berguna dalam berbagai aplikasi seperti analisis nilai siswa, perhitungan rata-rata penjualan, atau pengolahan data penelitian.

Menghitung Median

Median adalah nilai tengah dari sebuah kumpulan data yang telah diurutkan.

Python menyediakan fungsi median() untuk menghitung nilai median.

Contoh kode:

import statistics

data = [10, 20, 30, 40, 50]

hasil = statistics.median(data)

print("Median:", hasil)

Output:

Median: 30

Median sering digunakan ketika data memiliki nilai ekstrem yang dapat mempengaruhi rata-rata.

Menghitung Modus

Modus adalah nilai yang paling sering muncul dalam sebuah kumpulan data.

Python menyediakan fungsi mode() untuk menentukan nilai modus.

Contoh kode:

import statistics

data = [10, 20, 20, 30, 40]

hasil = statistics.mode(data)

print("Modus:", hasil)

Output:

Modus: 20

Modus sering digunakan dalam analisis data kategori atau data frekuensi.

Menghitung Variansi

Variansi adalah ukuran yang menunjukkan seberapa jauh data tersebar dari nilai rata-rata.

Python menyediakan fungsi variance() untuk menghitung variansi.

Contoh kode:

import statistics

data = [10, 20, 30, 40, 50]

hasil = statistics.variance(data)

print("Variansi:", hasil)

Variansi sering digunakan dalam statistik dan analisis data untuk memahami tingkat penyebaran data.

Menghitung Standar Deviasi

Standar deviasi adalah ukuran statistik yang menunjukkan seberapa jauh nilai data menyimpang dari rata-rata.

Python menyediakan fungsi stdev() untuk menghitung standar deviasi.

Contoh kode:

import statistics

data = [10, 20, 30, 40, 50]

hasil = statistics.stdev(data)

print("Standar deviasi:", hasil)

Standar deviasi sangat penting dalam berbagai analisis statistik, termasuk penelitian ilmiah dan analisis keuangan.

Menentukan Nilai Minimum dan Maksimum

Selain fungsi statistik khusus, kita juga dapat menggunakan fungsi bawaan Python untuk menentukan nilai minimum dan maksimum dari suatu data.

Contoh kode:

data = [10, 25, 30, 45, 60]

print("Nilai minimum:", min(data))
print("Nilai maksimum:", max(data))

Output:

Nilai minimum: 10
Nilai maksimum: 60

Mengurutkan Data

Sering kali kita perlu mengurutkan data sebelum melakukan analisis statistik.

Python menyediakan fungsi sorted() untuk mengurutkan data.

Contoh kode:

data = [30, 10, 50, 20, 40]

hasil = sorted(data)

print(hasil)

Output:

[10, 20, 30, 40, 50]

Contoh Aplikasi Statistik Sederhana dengan Python

Setelah memahami berbagai fungsi statistik, sekarang kita akan membuat aplikasi sederhana yang dapat menghitung berbagai nilai statistik dari data yang dimasukkan pengguna.

Program ini akan meminta pengguna memasukkan beberapa angka, kemudian menghitung berbagai nilai statistik.

Contoh kode program:

import statistics

print("===================================")
print("      APLIKASI STATISTIK PYTHON    ")
print("===================================")

data = []

jumlah = int(input("Berapa banyak data yang ingin dimasukkan? "))

for i in range(jumlah):
    angka = float(input("Masukkan angka: "))
    data.append(angka)

print("\nData:", data)

print("\nHASIL ANALISIS STATISTIK")
print("------------------------")

print("Rata-rata:", statistics.mean(data))
print("Median:", statistics.median(data))
print("Modus:", statistics.mode(data))
print("Variansi:", statistics.variance(data))
print("Standar deviasi:", statistics.stdev(data))
print("Nilai minimum:", min(data))
print("Nilai maksimum:", max(data))

Program ini akan membaca beberapa angka dari pengguna, kemudian menampilkan berbagai hasil analisis statistik.

Contoh output program:

APLIKASI STATISTIK PYTHON

Berapa banyak data yang ingin dimasukkan? 5
Masukkan angka: 10
Masukkan angka: 20
Masukkan angka: 30
Masukkan angka: 40
Masukkan angka: 50

HASIL ANALISIS STATISTIK

Rata-rata: 30
Median: 30
Modus: 10
Variansi: 250
Standar deviasi: 15.81
Nilai minimum: 10
Nilai maksimum: 50

Pengembangan Aplikasi Statistik

Aplikasi statistik yang telah dibuat masih sangat sederhana. Namun program ini dapat dikembangkan lebih jauh dengan berbagai fitur tambahan.

Beberapa pengembangan yang dapat dilakukan antara lain:

  • membuat grafik data menggunakan matplotlib
  • membaca data dari file CSV
  • membuat laporan analisis statistik
  • menambahkan perhitungan statistik lanjutan
  • membuat aplikasi statistik berbasis GUI

Dengan menambahkan library seperti NumPy, Pandas, dan Matplotlib, Python dapat menjadi alat analisis data yang sangat kuat.

Sekarang, tugas Authemers adalah melengkapi dan menjalankan kode dibawah:

"""
APLIKASI STATISTIK LENGKAP - PYTHON
Menggabungkan statistics, numpy, scipy, pandas, dan visualisasi matplotlib
"""

import statistics as stats
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
import seaborn as sns
from scipy import stats as scipy_stats
import warnings
warnings.filterwarnings('ignore')

# Setting untuk tampilan yang lebih baik
pd.set_option('display.max_columns', None)
pd.set_option('display.width', None)
pd.set_option('display.float_format', '{:.4f}'.format)

class AplikasiStatistik:
    """
    Kelas utama untuk aplikasi statistik komprehensif
    """
    
    def __init__(self):
        self.data = []
        self.dataframe = None
        self.nama_data = "Data Pengguna"
        self.menu_utama()
    
    def menu_utama(self):
        """Menu utama aplikasi"""
        while True:
            print("\n" + "="*60)
            print("            šŸ“Š APLIKASI STATISTIK LENGKAP PYTHON")
            print("="*60)
            print("1ļøāƒ£  Input Data Manual")
            print("2ļøāƒ£  Generate Data Random")
            print("3ļøāƒ£  Import dari CSV/Excel")
            print("4ļøāƒ£  Lihat Data")
            print("5ļøāƒ£  Statistik Dasar (Modul statistics)")
            print("6ļøāƒ£  Statistik Lanjutan (NumPy)")
            print("7ļøāƒ£  Analisis Distribusi (SciPy)")
            print("8ļøāƒ£  Uji Hipotesis")
            print("9ļøāƒ£  Visualisasi Data")
            print("šŸ”Ÿ  Analisis DataFrame (Pandas)")
            print("1ļøāƒ£1ļøāƒ£ Ekspor Hasil ke File")
            print("0ļøāƒ£  Keluar")
            print("="*60)
            
            pilihan = input("Pilih menu (0-11): ")
            
            if pilihan == '1':
                self.input_data_manual()
            elif pilihan == '2':
                self.generate_data_random()
            elif pilihan == '3':
                self.import_file()
            elif pilihan == '4':
                self.lihat_data()
            elif pilihan == '5':
                self.statistik_dasar()
            elif pilihan == '6':
                self.statistik_numpy()
            elif pilihan == '7':
                self.analisis_distribusi()
            elif pilihan == '8':
                self.uji_hipotesis()
            elif pilihan == '9':
                self.visualisasi()
            elif pilihan == '10':
                self.analisis_pandas()
            elif pilihan == '11':
                self.ekspor_hasil()
            elif pilihan == '0':
                print("šŸ‘‹ Terima kasih telah menggunakan aplikasi ini!")
                break
            else:
                print("āŒ Pilihan tidak valid. Silakan coba lagi.")
    
    def input_data_manual(self):
        """Input data secara manual"""
        print("\n" + "-"*40)
        print("šŸ“ INPUT DATA MANUAL")
        print("-"*40)
        
        try:
            n = int(input("Berapa jumlah data? "))
            self.data = []
            print("Masukkan data satu per satu:")
            for i in range(n):
                nilai = float(input(f"Data ke-{i+1}: "))
                self.data.append(nilai)
            
            self.dataframe = pd.DataFrame({self.nama_data: self.data})
            print("āœ… Data berhasil diinput!")
            
        except ValueError:
            print("āŒ Input tidak valid. Gunakan angka.")
    
    def generate_data_random(self):
        """Generate data random dengan berbagai distribusi"""
        print("\n" + "-"*40)
        print("šŸŽ² GENERATE DATA RANDOM")
        print("-"*40)
        
        print("Pilih distribusi:")
        print("1. Normal (Gaussian)")
        print("2. Uniform (Seragam)")
        print("3. Eksponensial")
        print("4. Binomial")
        print("5. Poisson")
        
        try:
            pilihan = input("Pilih distribusi (1-5): ")
            n = int(input("Jumlah data yang diinginkan: "))
            
            if pilihan == '1':
                mean = float(input("Rata-rata (mean): "))
                std = float(input("Standar deviasi: "))
                self.data = np.random.normal(mean, std, n).tolist()
                self.nama_data = f"Distribusi Normal (μ={mean}, σ={std})"
                
            elif pilihan == '2':
                low = float(input("Batas bawah: "))
                high = float(input("Batas atas: "))
                self.data = np.random.uniform(low, high, n).tolist()
                self.nama_data = f"Distribusi Uniform [{low}, {high}]"
                
            elif pilihan == '3':
                scale = float(input("Scale (1/Ī»): "))
                self.data = np.random.exponential(scale, n).tolist()
                self.nama_data = f"Distribusi Eksponensial (scale={scale})"
                
            elif pilihan == '4':
                n_trials = int(input("Jumlah percobaan (n): "))
                p = float(input("Probabilitas sukses (p): "))
                self.data = np.random.binomial(n_trials, p, n).tolist()
                self.nama_data = f"Distribusi Binomial (n={n_trials}, p={p})"
                
            elif pilihan == '5':
                lam = float(input("Lambda (Ī»): "))
                self.data = np.random.poisson(lam, n).tolist()
                self.nama_data = f"Distribusi Poisson (Ī»={lam})"
            
            self.dataframe = pd.DataFrame({self.nama_data: self.data})
            print(f"āœ… Berhasil generate {n} data!")
            
        except Exception as e:
            print(f"āŒ Error: {e}")
    
    def import_file(self):
        """Import data dari file CSV/Excel"""
        print("\n" + "-"*40)
        print("šŸ“‚ IMPORT DATA DARI FILE")
        print("-"*40)
        
        try:
            file_path = input("Masukkan path file (CSV/Excel): ")
            if file_path.endswith('.csv'):
                self.dataframe = pd.read_csv(file_path)
            elif file_path.endswith(('.xlsx', '.xls')):
                self.dataframe = pd.read_excel(file_path)
            else:
                print("āŒ Format file tidak didukung. Gunakan CSV atau Excel.")
                return
            
            print("āœ… Data berhasil diimport!")
            print(f"Dimensi data: {self.dataframe.shape}")
            print(f"Kolom: {list(self.dataframe.columns)}")
            
            # Ambil kolom numerik pertama sebagai data default
            numeric_cols = self.dataframe.select_dtypes(include=[np.number]).columns
            if len(numeric_cols) > 0:
                kolom = input(f"Pilih kolom untuk analisis ({numeric_cols[0]}): ")
                if kolom == "":
                    kolom = numeric_cols[0]
                if kolom in numeric_cols:
                    self.data = self.dataframe[kolom].dropna().tolist()
                    self.nama_data = kolom
                else:
                    print("āŒ Kolom tidak valid.")
            else:
                print("āŒ Tidak ada kolom numerik.")
                
        except FileNotFoundError:
            print("āŒ File tidak ditemukan.")
        except Exception as e:
            print(f"āŒ Error: {e}")
    
    def lihat_data(self):
        """Menampilkan data yang sedang aktif"""
        print("\n" + "-"*40)
        print("šŸ‘ļø  LIHAT DATA")
        print("-"*40)
        
        if len(self.data) == 0:
            print("āŒ Belum ada data. Silakan input data terlebih dahulu.")
            return
        
        print(f"Nama Data: {self.nama_data}")
        print(f"Jumlah Data: {len(self.data)}")
        print("\n10 Data Pertama:")
        for i, val in enumerate(self.data[:10]):
            print(f"  {i+1:2d}. {val:.4f}")
        
        if len(self.data) > 10:
            print(f"  ... dan {len(self.data)-10} data lainnya")
        
        # Tampilkan ringkasan cepat
        print("\nšŸ“Š Ringkasan Cepat:")
        print(f"  Min: {min(self.data):.4f}")
        print(f"  Max: {max(self.data):.4f}")
        print(f"  Range: {max(self.data)-min(self.data):.4f}")
    
    def statistik_dasar(self):
        """Menampilkan semua fungsi dari modul statistics"""
        print("\n" + "-"*40)
        print("šŸ“Š STATISTIK DASAR (Modul statistics)")
        print("-"*40)
        
        if len(self.data) < 2:
            print("āŒ Minimal membutuhkan 2 data.")
            return
        
        data = self.data
        print(f"Data: {self.nama_data} ({len(data)} observasi)")
        print("\n" + "="*40)
        
        # 1. FUNGSI PEMUSATAN DATA
        print("\nšŸ“ˆ FUNGSI PEMUSATAN DATA:")
        print("-"*30)
        
        try:
            print(f"1. mean() - Rata-rata aritmetika          : {stats.mean(data):.6f}")
        except Exception as e: print(f"1. mean() - Error: {e}")
        
        try:
            print(f"2. fmean() - Rata-rata float cepat        : {stats.fmean(data):.6f}")
        except Exception as e: print(f"2. fmean() - Error: {e}")
        
        try:
            if all(x > 0 for x in data):
                print(f"3. geometric_mean() - Rata-rata geometrik  : {stats.geometric_mean(data):.6f}")
            else:
                print("3. geometric_mean() - Tidak bisa (data negatif/nol)")
        except Exception as e: print(f"3. geometric_mean() - Error: {e}")
        
        try:
            if all(x > 0 for x in data):
                print(f"4. harmonic_mean() - Rata-rata harmonik    : {stats.harmonic_mean(data):.6f}")
            else:
                print("4. harmonic_mean() - Tidak bisa (data negatif/nol)")
        except Exception as e: print(f"4. harmonic_mean() - Error: {e}")
        
        try:
            print(f"5. median() - Median                       : {stats.median(data):.6f}")
        except Exception as e: print(f"5. median() - Error: {e}")
        
        try:
            print(f"6. median_low() - Median rendah            : {stats.median_low(data):.6f}")
        except Exception as e: print(f"6. median_low() - Error: {e}")
        
        try:
            print(f"7. median_high() - Median tinggi           : {stats.median_high(data):.6f}")
        except Exception as e: print(f"7. median_high() - Error: {e}")
        
        try:
            print(f"8. median_grouped() - Median berkelompok   : {stats.median_grouped(data):.6f}")
        except Exception as e: print(f"8. median_grouped() - Error: {e}")
        
        try:
            print(f"9. mode() - Modus (nilai pertama)          : {stats.mode(data)}")
        except Exception as e: print(f"9. mode() - Error: {e}")
        
        try:
            print(f"10. multimode() - Semua modus               : {stats.multimode(data)}")
        except Exception as e: print(f"10. multimode() - Error: {e}")
        
        try:
            print(f"11. quantiles() - Kuartil (4 interval)      : {stats.quantiles(data, n=4)}")
            q = stats.quantiles(data, n=4)
            print(f"    Q1 (25%): {q[0]:.4f}, Q2 (50%): {q[1]:.4f}, Q3 (75%): {q[2]:.4f}")
        except Exception as e: print(f"11. quantiles() - Error: {e}")
        
        # 2. FUNGSI SEBARAN DATA
        print("\nšŸ“‰ FUNGSI SEBARAN DATA:")
        print("-"*30)
        
        try:
            print(f"12. pstdev() - Std dev populasi             : {stats.pstdev(data):.6f}")
        except Exception as e: print(f"12. pstdev() - Error: {e}")
        
        try:
            print(f"13. pvariance() - Varian populasi           : {stats.pvariance(data):.6f}")
        except Exception as e: print(f"13. pvariance() - Error: {e}")
        
        try:
            print(f"14. stdev() - Std dev sampel                : {stats.stdev(data):.6f}")
        except Exception as e: print(f"14. stdev() - Error: {e}")
        
        try:
            print(f"15. variance() - Varian sampel              : {stats.variance(data):.6f}")
        except Exception as e: print(f"15. variance() - Error: {e}")
    
    def statistik_numpy(self):
        """Fungsi statistik lanjutan dengan NumPy"""
        print("\n" + "-"*40)
        print("šŸ”¢ STATISTIK LANJUTAN (NumPy)")
        print("-"*40)
        
        if len(self.data) == 0:
            print("āŒ Belum ada data.")
            return
        
        data_array = np.array(self.data)
        
        print("\nšŸ“Š STATISTIK DESKRIPTIF:")
        print("-"*30)
        print(f"1. np.mean()     : {np.mean(data_array):.6f}")
        print(f"2. np.median()   : {np.median(data_array):.6f}")
        print(f"3. np.std()      : {np.std(data_array):.6f}")
        print(f"4. np.var()      : {np.var(data_array):.6f}")
        print(f"5. np.min()      : {np.min(data_array):.6f}")
        print(f"6. np.max()      : {np.max(data_array):.6f}")
        print(f"7. np.ptp()      : {np.ptp(data_array):.6f} (range)")
        print(f"8. np.percentile 25%: {np.percentile(data_array, 25):.6f}")
        print(f"9. np.percentile 50%: {np.percentile(data_array, 50):.6f}")
        print(f"10. np.percentile 75%: {np.percentile(data_array, 75):.6f}")
        
        print("\nšŸ“ˆ MOMEN STATISTIK:")
        print("-"*30)
        print(f"11. Skewness (kemencengan): {scipy_stats.skew(data_array):.6f}")
        print(f"12. Kurtosis (keruncingan): {scipy_stats.kurtosis(data_array):.6f}")
        
        # Jika ada 2 kolom atau lebih, hitung korelasi
        if self.dataframe is not None and len(self.dataframe.columns) >= 2:
            numeric_df = self.dataframe.select_dtypes(include=[np.number])
            if len(numeric_df.columns) >= 2:
                print("\nšŸ”— MATRIKS KORELASI:")
                print("-"*30)
                corr_matrix = numeric_df.corr()
                print(corr_matrix)
    
    def analisis_distribusi(self):
        """Analisis distribusi data dengan SciPy"""
        print("\n" + "-"*40)
        print("šŸ“Š ANALISIS DISTRIBUSI (SciPy)")
        print("-"*40)
        
        if len(self.data) < 3:
            print("āŒ Minimal membutuhkan 3 data.")
            return
        
        data_array = np.array(self.data)
        
        print("\nšŸ“ˆ UJI NORMALITAS:")
        print("-"*30)
        
        # Shapiro-Wilk Test
        statistic, p_value = scipy_stats.shapiro(data_array[:5000])  # Batasi untuk performa
        print(f"1. Shapiro-Wilk Test:")
        print(f"   Statistik: {statistic:.6f}")
        print(f"   P-value  : {p_value:.6f}")
        if p_value > 0.05:
            print(f"   āœ… Data berdistribusi normal (p > 0.05)")
        else:
            print(f"   āŒ Data TIDAK berdistribusi normal (p < 0.05)")
        
        # Kolmogorov-Smirnov Test
        statistic, p_value = scipy_stats.kstest(data_array, 'norm', 
                                                args=(np.mean(data_array), np.std(data_array)))
        print(f"\n2. Kolmogorov-Smirnov Test:")
        print(f"   Statistik: {statistic:.6f}")
        print(f"   P-value  : {p_value:.6f}")
        
        # D'Agostino's K-squared Test
        statistic, p_value = scipy_stats.normaltest(data_array)
        print(f"\n3. D'Agostino Test:")
        print(f"   Statistik: {statistic:.6f}")
        print(f"   P-value  : {p_value:.6f}")
        
        print("\nšŸ“Š PARAMETER DISTRIBUSI:")
        print("-"*30)
        
        # Fit distribusi normal
        params = scipy_stats.norm.fit(data_array)
        print(f"Normal Distribution Fit:")
        print(f"  Mean (loc): {params[0]:.6f}")
        print(f"  Std (scale): {params[1]:.6f}")
        
        # Hitung AIC untuk beberapa distribusi
        print("\nšŸ“ˆ PERBANDINGAN DISTRIBUSI (AIC):")
        print("-"*30)
        print("Semakin kecil AIC, semakin baik fit distribusi")
        
        distributions = [
            ('norm', scipy_stats.norm),
            ('expon', scipy_stats.expon),
            ('gamma', scipy_stats.gamma),
            ('lognorm', scipy_stats.lognorm),
            ('uniform', scipy_stats.uniform)
        ]
        
        for name, dist in distributions:
            try:
                params = dist.fit(data_array)
                log_likelihood = np.sum(dist.logpdf(data_array, *params))
                aic = 2 * len(params) - 2 * log_likelihood
                print(f"{name:10s}: AIC = {aic:.2f}")
            except:
                print(f"{name:10s}: Gagal dihitung")
    
    def uji_hipotesis(self):
        """Uji hipotesis statistik"""
        print("\n" + "-"*40)
        print("šŸ”¬ UJI HIPOTESIS STATISTIK")
        print("-"*40)
        
        print("\nPilih jenis uji:")
        print("1. One-sample t-test (uji satu sampel)")
        print("2. Independent t-test (uji dua sampel independen)")
        print("3. Paired t-test (uji berpasangan)")
        print("4. ANOVA satu arah")
        print("5. Chi-square test")
        print("6. Mann-Whitney U test (non-parametrik)")
        
        pilihan = input("Pilih (1-6): ")
        
        if pilihan == '1':
            # One-sample t-test
            if len(self.data) < 2:
                print("āŒ Data tidak cukup.")
                return
            
            popmean = float(input("Masukkan nilai populasi yang dihipotesiskan: "))
            t_stat, p_value = scipy_stats.ttest_1samp(self.data, popmean)
            
            print(f"\nHasil One-Sample T-Test:")
            print(f"t-statistic: {t_stat:.6f}")
            print(f"p-value    : {p_value:.6f}")
            
            alpha = 0.05
            if p_value < alpha:
                print(f"āœ… Tolak H0 (p < {alpha}) - Rata-rata sampel berbeda signifikan")
            else:
                print(f"āŒ Gagal tolak H0 (p > {alpha}) - Tidak ada perbedaan signifikan")
        
        elif pilihan == '2':
            # Independent t-test
            print("\nMasukkan data kelompok 1:")
            data1 = []
            n1 = int(input("Jumlah data kelompok 1: "))
            for i in range(n1):
                data1.append(float(input(f"Data ke-{i+1}: ")))
            
            print("\nMasukkan data kelompok 2:")
            data2 = []
            n2 = int(input("Jumlah data kelompok 2: "))
            for i in range(n2):
                data2.append(float(input(f"Data ke-{i+1}: ")))
            
            t_stat, p_value = scipy_stats.ttest_ind(data1, data2)
            
            print(f"\nHasil Independent T-Test:")
            print(f"t-statistic: {t_stat:.6f}")
            print(f"p-value    : {p_value:.6f}")
            
            if p_value < 0.05:
                print("āœ… Kedua kelompok berbeda signifikan")
            else:
                print("āŒ Kedua kelompok tidak berbeda signifikan")
        
        elif pilihan == '3':
            # Paired t-test
            print("\nMasukkan data sebelum:")
            before = []
            n = int(input("Jumlah data: "))
            for i in range(n):
                before.append(float(input(f"Data sebelum ke-{i+1}: ")))
            
            print("\nMasukkan data sesudah:")
            after = []
            for i in range(n):
                after.append(float(input(f"Data sesudah ke-{i+1}: ")))
            
            t_stat, p_value = scipy_stats.ttest_rel(before, after)
            
            print(f"\nHasil Paired T-Test:")
            print(f"t-statistic: {t_stat:.6f}")
            print(f"p-value    : {p_value:.6f}")
            
            if p_value < 0.05:
                print("āœ… Ada perubahan signifikan")
            else:
                print("āŒ Tidak ada perubahan signifikan")
    
    def visualisasi(self):
        """Visualisasi data dengan matplotlib dan seaborn"""
        print("\n" + "-"*40)
        print("šŸ“Š VISUALISASI DATA")
        print("-"*40)
        
        if len(self.data) == 0:
            print("āŒ Belum ada data.")
            return
        
        print("\nPilih jenis visualisasi:")
        print("1. Histogram")
        print("2. Box Plot")
        print("3. Violin Plot")
        print("4. Q-Q Plot (uji normalitas)")
        print("5. Semua visualisasi")
        
        pilihan = input("Pilih (1-5): ")
        
        # Setup figure
        if pilihan == '5':
            fig, axes = plt.subplots(2, 2, figsize=(14, 10))
            axes = axes.flatten()
        else:
            fig, axes = plt.subplots(1, 1, figsize=(10, 6))
            axes = [axes]
        
        plot_index = 0
        
        if pilihan == '1' or pilihan == '5':
            # Histogram
            ax = axes[plot_index]
            ax.hist(self.data, bins='auto', edgecolor='black', alpha=0.7, color='skyblue')
            ax.axvline(np.mean(self.data), color='red', linestyle='--', linewidth=2, label=f'Mean: {np.mean(self.data):.2f}')
            ax.axvline(np.median(self.data), color='green', linestyle='--', linewidth=2, label=f'Median: {np.median(self.data):.2f}')
            ax.set_xlabel('Nilai')
            ax.set_ylabel('Frekuensi')
            ax.set_title(f'Histogram - {self.nama_data}')
            ax.legend()
            plot_index += 1
        
        if pilihan == '2' or pilihan == '5':
            # Box Plot
            ax = axes[plot_index]
            ax.boxplot(self.data, vert=True, patch_artist=True)
            ax.set_ylabel('Nilai')
            ax.set_title(f'Box Plot - {self.nama_data}')
            ax.grid(True, alpha=0.3)
            plot_index += 1
        
        if pilihan == '3' or pilihan == '5':
            # Violin Plot
            ax = axes[plot_index]
            parts = ax.violinplot(self.data, showmeans=True, showmedians=True)
            ax.set_ylabel('Nilai')
            ax.set_title(f'Violin Plot - {self.nama_data}')
            ax.grid(True, alpha=0.3)
            plot_index += 1
        
        if pilihan == '4' or pilihan == '5':
            # Q-Q Plot
            ax = axes[plot_index]
            scipy_stats.probplot(self.data, dist="norm", plot=ax)
            ax.set_title(f'Q-Q Plot - {self.nama_data}')
            plot_index += 1
        
        plt.tight_layout()
        plt.show()
        
        # Statistik tambahan untuk visualisasi
        print("\nšŸ“Š Statistik untuk Visualisasi:")
        print(f"Mean   : {np.mean(self.data):.4f}")
        print(f"Median : {np.median(self.data):.4f}")
        print(f"Std    : {np.std(self.data):.4f}")
        print(f"Skewness: {scipy_stats.skew(self.data):.4f}")
        print(f"Kurtosis: {scipy_stats.kurtosis(self.data):.4f}")
    
    def analisis_pandas(self):
        """Analisis menggunakan pandas"""
        print("\n" + "-"*40)
        print("🐼 ANALISIS DATAFRAME (Pandas)")
        print("-"*40)
        
        if self.dataframe is None:
            print("āŒ Belum ada DataFrame. Buat data terlebih dahulu.")
            return
        
        print("\nšŸ“‹ INFORMASI DATAFRAME:")
        print("-"*30)
        print(self.dataframe.info())
        
        print("\nšŸ“Š STATISTIK DESKRIPTIF:")
        print("-"*30)
        print(self.dataframe.describe(include='all'))
        
        print("\nšŸ” CEK DATA KOSONG:")
        print("-"*30)
        print(self.dataframe.isnull().sum())
        
        if len(self.dataframe.select_dtypes(include=[np.number]).columns) >= 2:
            print("\nšŸ”— MATRIKS KORELASI:")
            print("-"*30)
            print(self.dataframe.corr())
    
    def ekspor_hasil(self):
        """Ekspor hasil analisis ke file"""
        print("\n" + "-"*40)
        print("šŸ’¾ EKSPOR HASIL ANALISIS")
        print("-"*40)
        
        if self.dataframe is None:
            print("āŒ Tidak ada data untuk diekspor.")
            return
        
        print("\nPilih format:")
        print("1. CSV")
        print("2. Excel")
        print("3. Text (statistik ringkasan)")
        
        pilihan = input("Pilih (1-3): ")
        
        try:
            if pilihan == '1':
                filename = input("Nama file CSV (contoh: hasil.csv): ")
                self.dataframe.to_csv(filename, index=False)
                print(f"āœ… Data berhasil diekspor ke {filename}")
            
            elif pilihan == '2':
                filename = input("Nama file Excel (contoh: hasil.xlsx): ")
                self.dataframe.to_excel(filename, index=False)
                print(f"āœ… Data berhasil diekspor ke {filename}")
            
            elif pilihan == '3':
                filename = input("Nama file teks (contoh: ringkasan.txt): ")
                with open(filename, 'w') as f:
                    f.write(f"RINGKASAN STATISTIK\n")
                    f.write("="*50 + "\n")
                    f.write(f"Data: {self.nama_data}\n")
                    f.write(f"Jumlah Data: {len(self.data)}\n")
                    f.write(f"Mean: {np.mean(self.data):.6f}\n")
                    f.write(f"Median: {np.median(self.data):.6f}\n")
                    f.write(f"Std Dev: {np.std(self.data):.6f}\n")
                    f.write(f"Min: {min(self.data):.6f}\n")
                    f.write(f"Max: {max(self.data):.6f}\n")
                    f.write(f"Range: {max(self.data)-min(self.data):.6f}\n")
                print(f"āœ… Ringkasan berhasil diekspor ke {filename}")
            
        except Exception as e:
            print(f"āŒ Error saat mengekspor: {e}")


# ============================================
# FUNGSI UTAMA UNTUK MENJALANKAN APLIKASI
# ============================================

def main():
    """Fungsi utama untuk menjalankan aplikasi"""
    print("\n" + "="*60)
    print("  šŸš€ SELAMAT DATANG DI APLIKASI STATISTIK PYTHON šŸš€")
    print("="*60)
    print("Aplikasi ini menyediakan:")
    print("āœ“ Semua fungsi modul statistics bawaan")
    print("āœ“ Fungsi statistik NumPy dan SciPy")
    print("āœ“ Visualisasi dengan Matplotlib")
    print("āœ“ Analisis dengan Pandas")
    print("āœ“ Uji hipotesis statistik")
    print("="*60)
    
    # Jalankan aplikasi
    app = AplikasiStatistik()


# ============================================
# CONTOH PENGGUNAAN LANGSUNG (TANPA INTERAKSI)
# ============================================

def contoh_cepat():
    """Contoh penggunaan cepat tanpa interaksi"""
    print("\n" + "="*60)
    print("šŸ“Š CONTOH CEPAT ANALISIS STATISTIK")
    print("="*60)
    
    # Buat data contoh
    data = [12, 15, 14, 10, 8, 9, 15, 16, 14, 13, 
            11, 12, 15, 14, 13, 12, 11, 10, 9, 8]
    
    print(f"\nData: {data}")
    print(f"Jumlah data: {len(data)}")
    
    # Statistik dasar
    print("\nšŸ“ˆ STATISTIK DASAR:")
    print(f"Mean     : {stats.mean(data):.2f}")
    print(f"Median   : {stats.median(data):.2f}")
    print(f"Mode     : {stats.mode(data)}")
    print(f"Variance : {stats.variance(data):.2f}")
    print(f"Std Dev  : {stats.stdev(data):.2f}")
    
    # Visualisasi sederhana
    plt.figure(figsize=(12, 4))
    
    plt.subplot(1, 3, 1)
    plt.hist(data, bins=8, edgecolor='black', alpha=0.7)
    plt.title('Histogram')
    plt.xlabel('Nilai')
    plt.ylabel('Frekuensi')
    
    plt.subplot(1, 3, 2)
    plt.boxplot(data)
    plt.title('Box Plot')
    plt.ylabel('Nilai')
    
    plt.subplot(1, 3, 3)
    scipy_stats.probplot(data, dist="norm", plot=plt)
    plt.title('Q-Q Plot')
    
    plt.tight_layout()
    plt.show()
    
    print("\nāœ… Contoh selesai!")


# ============================================
# MENJALANKAN APLIKASI
# ============================================

if __name__ == "__main__":
    print("\nPilih mode:")
    print("1. Aplikasi Interaktif (menu)")
    print("2. Contoh Cepat")
    
    mode = input("Pilih mode (1/2): ")
    
    if mode == '2':
        contoh_cepat()
    else:
        main()

Sebelum menjalankan aplikasi, pastikan Anda menginstal library yang diperlukan:

# Install semua library yang dibutuhkan
pip install numpy pandas matplotlib seaborn scipy openpyxl

Selamat menyelesaikan misi.

Kesimpulan

Library statistics merupakan salah satu modul bawaan Python yang sangat berguna untuk melakukan analisis data secara sederhana. Modul ini menyediakan berbagai fungsi penting seperti menghitung rata-rata, median, modus, variansi, dan standar deviasi.

Dengan memahami cara menggunakan library ini, programmer dapat membuat berbagai aplikasi yang berkaitan dengan analisis data dan statistik. Walaupun modul ini dirancang untuk analisis sederhana, konsep yang dipelajari dapat menjadi dasar untuk mempelajari analisis data yang lebih kompleks menggunakan library Python lainnya.

Bagi pemula yang ingin belajar data science atau analisis data, memahami library statistics merupakan langkah awal yang sangat baik sebelum mempelajari alat analisis data yang lebih canggih.

FAQ: Library Statistics di Python

1. Apa itu library statistics di Python?
Library statistics adalah modul bawaan Python yang digunakan untuk melakukan berbagai perhitungan statistik dasar seperti rata-rata, median, modus, variansi, dan standar deviasi. Modul ini sangat berguna untuk analisis data sederhana tanpa harus menggunakan library tambahan.

2. Apakah library statistics perlu diinstal terlebih dahulu?
Tidak. Library statistics sudah termasuk dalam standar Python sejak versi 3.4. Artinya, Anda tidak perlu menginstalnya secara terpisah. Anda hanya perlu mengimpornya menggunakan perintah import statistics.

3. Apa fungsi mean() dalam library statistics?
Fungsi mean() digunakan untuk menghitung nilai rata-rata dari sekumpulan data numerik. Fungsi ini menjumlahkan seluruh data kemudian membaginya dengan jumlah elemen yang ada dalam data tersebut.

4. Apa perbedaan median dan mean dalam statistik?
Mean adalah nilai rata-rata dari seluruh data, sedangkan median adalah nilai tengah dari data yang telah diurutkan. Median sering digunakan ketika data memiliki nilai ekstrem yang dapat mempengaruhi hasil rata-rata.

5. Apa yang dimaksud dengan modus dalam Python statistics?
Modus adalah nilai yang paling sering muncul dalam sebuah kumpulan data. Dalam Python, nilai modus dapat dihitung menggunakan fungsi statistics.mode().

6. Kapan sebaiknya menggunakan library statistics dibandingkan NumPy atau Pandas?
Library statistics cocok digunakan untuk analisis data sederhana dan program kecil. Namun jika Anda bekerja dengan data dalam jumlah besar atau analisis yang lebih kompleks, biasanya programmer menggunakan library seperti NumPy atau Pandas.

7. Apa fungsi variance() dalam library statistics?
Fungsi variance() digunakan untuk menghitung variansi dari sebuah dataset. Variansi menunjukkan seberapa jauh penyebaran data dari nilai rata-rata.

8. Apa fungsi stdev() dalam library statistics?
Fungsi stdev() digunakan untuk menghitung standar deviasi dari data. Standar deviasi menunjukkan seberapa besar penyimpangan data dari nilai rata-rata.

9. Apakah library statistics hanya bisa digunakan untuk angka?
Ya. Fungsi dalam library statistics dirancang untuk bekerja dengan data numerik seperti integer dan float. Jika data berupa teks atau kategori, maka perlu diolah terlebih dahulu sebelum digunakan.

10. Apakah library statistics bisa digunakan untuk membuat aplikasi analisis data?
Tentu saja. Library ini sering digunakan untuk membuat aplikasi analisis data sederhana seperti program pengolahan nilai siswa, analisis penjualan, atau aplikasi statistik dasar. Untuk aplikasi yang lebih kompleks biasanya digabungkan dengan library lain seperti NumPy, Pandas, atau Matplotlib.

Kategori: Python Tag: belajar python, python, tutorial python

Navigasi artikel

Artikel sebelumnyaTutorial Membuat Kalkulator Saintifik dengan Python (Lengkap untuk Pemula)
Artikel berikutnya10 Tools AI Gambar Terbaik Tahun 2026 untuk Desain, Konten, dan Kreativitas Digital

Artikel terkait

Tutorial Membuat Kalkulator Saintifik dengan Python (Lengkap untuk Pemula) 15/03/2026
Mengenal Library Math di Python dan Contoh Aplikasi Matematika Lengkap 15/03/2026
20 Library Python Paling Penting untuk Pemula 12/03/2026
Belajar Fungsi dan Library Python 12/03/2026

Artikel Terbaru

  • 10 Tools AI Gambar Terbaik Tahun 2026 untuk Desain, Konten, dan Kreativitas Digital
  • Tutorial Lengkap Menggunakan Library Statistics di Python
  • Tutorial Membuat Kalkulator Saintifik dengan Python (Lengkap untuk Pemula)
  • Mengenal Library Math di Python dan Contoh Aplikasi Matematika Lengkap
  • BRIN Kembangkan Teknologi AI untuk Pertanian Presisi

Arsip

  • Maret 2026
  • Februari 2026
  • Januari 2026

Kategori

  • AI
  • AI for School
  • AI Marketing
  • Article
  • Artificial General Intelligence
  • Bahasa Program
  • CSS
  • HTML
  • JavaScript
  • PHP
  • Product
  • Python
  • React JS
  • Story
  • True Story
  • Wordpress Theme

Artikel Populer

  • Sinergi AI & Blockchain: Solusi Krisis Kepercayaan Digital di Tahun 2026
  • 10 Tools AI Gambar Terbaik Tahun 2026 untuk Desain, Konten, dan Kreativitas Digital
  • Tren Otomatisasi AI yang Wajib Diketahui Profesional Muda
  • Filosofi PHP Native: Mengapa Menulis Kode dari Nol Masih Menjadi Skill Elit di 2026?
  • Dampak AI terhadap Ekosistem Web Development

Artikel Terkait

  • Tutorial Membuat Kalkulator Saintifik dengan Python (Lengkap untuk Pemula)
  • Mengenal Library Math di Python dan Contoh Aplikasi Matematika Lengkap
  • 20 Library Python Paling Penting untuk Pemula
  • Belajar Fungsi dan Library Python
  • Fase 3: Memberi Otak Pada Kode

Rekomendasi

  • 10 Tools AI Gambar Terbaik Tahun 2026 untuk Desain, Konten, dan Kreativitas Digital
  • Tutorial Lengkap Menggunakan Library Statistics di Python
  • Tutorial Membuat Kalkulator Saintifik dengan Python (Lengkap untuk Pemula)
  • Mengenal Library Math di Python dan Contoh Aplikasi Matematika Lengkap
  • BRIN Kembangkan Teknologi AI untuk Pertanian Presisi
  • Disclaimer
  • Hubungi Kami
  • Komunitas
  • Lisensi dan Hak Cipta
  • Privacy Policy
  • Register
  • Syarat & Ketentuan
  • Tanya Authemic
  • Tentang Kami
  • WordPress Theme
  • AI
  • Tentang Kami
  • Hubungi Kami
  • Komunitas
  • Tanya Authemic

agi ai ai driven search ai marketing algoritma apa itu agi apa itu css apa itu html artificial general intelligence artificial intelligence authemic belajar css belajar html belajar html pemula belajar python belajar react js computational thinking css digital desa etika algoritma html html untuk pemula industri 4.0 industri 5.0 jasa pembuatan website jasa website murah opendesa php php native python python untuk pemula react js revolusi industri sejarah industri sid tema wordpress tema wordpress gratis tutorial css tutorial html tutorial html pemula tutorial python tutorial python untuk pemula tutorial react js website desa wordpress

© 2026 Authemic · System of Trust · Autemic AI by Mas Hedi