Kaynak: Büyük Veri DT
Bu makale hakkında 2000 kelime , Okumanız tavsiye edilir 5 dakika
Bu makale size Python'da bir histogram çizmeyi öğretir.Hem histogram hem de histogram çok yaygındır ve veri analizinde yaygın olarak kullanılan çizelgelerdir.İkisi görünüş olarak çok benzer göründüğünden bazı karışıklıklara neden olması kaçınılmazdır. Bugün histogram hakkında konuşacağız.
01 Genel Bakış
Histogram, şekil olarak histograma benzer ancak histogramdan tamamen farklı bir anlama sahiptir. Histogram, istatistiksel kavramları içerir, Önce verileri gruplayın ve ardından her gruptaki veri öğelerinin sayısını sayın. Dikdörtgen bir koordinat sisteminde, yatay eksen her grubun bitiş noktalarını işaretler, dikey eksen frekansı temsil eder ve her dikdörtgenin yüksekliği karşılık gelen frekansı temsil eder Böyle bir istatistiksel grafiğe frekans dağılım histogramı denir.
Frekans dağılımı histogramı, her bir grubun sayısını elde etmek için frekansı grup mesafesiyle çarpma hesaplama işlemini gerektirir. Aynı histogramın grup mesafesi sabit bir değerdir, bu nedenle sayı doğrudan dikey eksenle temsil ediliyorsa, her dikdörtgen Yüksek değeri, yalnızca dağıtım durumunu değişmeden tutmakla kalmayıp, aynı zamanda Şekil 2-58'de gösterildiği gibi her bir grubun sayısını görsel olarak görebilen karşılık gelen veri öğelerinin sayısını temsil eder.
Şekil 2-58 Histogram
Histogram aracılığıyla, hangi verilerin yoğunlaştığını ve anormal veya izole verilerin nerede dağıtıldığını da gözlemleyebilir ve tahmin edebilirsiniz.
İlk önce aşağıdaki temel kavramları anlayın.
02 Örnekler
Histogram kodunun bir örneği aşağıda gösterilmiştir.
Çalışma sonucu Şekil 2-59'da gösterilmektedir.
Şekil 2-59 Kod örneği 2-45 çalışan sonuçlar
Kod örneği 2-45'in ikinci satırı, dikdörtgenin dört kenarını tanımlayarak bir histogram çizmek için quad () yöntemini kullanır Spesifik parametreler aşağıda açıklanmıştır.
p .quad (sol, sağ, üst, alt, ** kwargs) parametre açıklaması.
Diğer parametrelerin açıklaması (** kwargs).
Kod örneği 2-46
Np olarak 1import numpy 2import scipy.special Bokeh.layouts'tan ızgara grafiğini içe aktarın 4 # Çizim fonksiyonu 5def make_plot (başlık, geçmiş, kenarlar, x, pdf, cdf): 6 p = şekil (başlık = başlık, araçlar = '', background_fill_color = "# fafafa") 7 p.quad (üst = geçmiş, alt = 0, sol = kenarlar, sağ = kenarlar, 8 fill_color = "lacivert", line_color = "beyaz", alfa = 0,5) 9 p.line (x, pdf, line_color = "# ff8888", line_width = 4, alpha = 0.7, legend = "PDF") 10 p.line (x, cdf, line_color = "turuncu", line_width = 2, alpha = 0.7, lejand = "CDF") 1112 p.y_range.start = 013 p.legend.location = "center_right" 14 p.legend.background_fill_color = "#fefefe" 15 p.xaxis.axis_label = 'x' 16 p.yaxis.axis_label = 'Pr (x)' 17 p.grid.grid_line_color = "beyaz" 18 dönüş p 19 # Normal dağılım 20mu, sigma = 0, 0.521 ölçülen = np.random.normal (mu, sigma, 1000) 22hist, kenarlar = np.histogram (ölçülen, yoğunluk = Doğru, bölmeler = 50) 23x = np.linspace (-2, 2, 1000) 24 # Uyum eğrisi 25pdf = 1 / (sigma * np.sqrt (2 * np.pi)) * np.exp (- (x-mu) ** 2 / (2 * sigma ** 2)) 26cdf = (1 + scipy.special.erf ((x-mu) /np.sqrt (2 * sigma ** 2))) / 227p1 = make_plot ("Normal Dağılım ( = 0, = 0.5)", geçmiş, kenarlar, x, pdf, cdf) 28 # Lognormal dağılım 29mu, sigma = 0, 0.530 ölçülen = np.random.lognormal (mu, sigma, 1000) 31hist, kenarlar = np.histogram (ölçülen, yoğunluk = Doğru, bölmeler = 50) 32x = np.linspace (0.0001, 8.0, 1000) 33pdf = 1 / (x * sigma * np.sqrt (2 * np.pi)) * np.exp (- (np.log (x) -mu) ** 2 / (2 * sigma ** 2)) 34cdf = (1 + scipy.special.erf ((np.log (x) -mu) / (np.sqrt (2) * sigma))) / 235p2 = make_plot ("Günlük Normal Dağılımı ( = 0, = 0.5)", geçmiş, kenarlar, x, pdf, cdf) 36 # Gama dağılımı 37k, teta = 7,5, 1,038 ölçülen = np.random.gamma (k, theta, 1000) 39hist, kenarlar = np.histogram (ölçülen, yoğunluk = Doğru, bölmeler = 50) 40x = np.linspace (0.0001, 20.0, 1000) 41pdf = x ** (k-1) * np.exp (-x / theta) / (theta ** k * scipy.special.gamma (k)) 42cdf = scipy.special.gammainc (k, x / theta) 43p3 = make_plot ("Gama Dağılımı (k = 7,5, = 1)", geçmiş, kenarlar, x, pdf, cdf) 44 # Weber dağılımı 45lam, k = 1, 1,2546 ölçülen = lam * (- np.log (np.random.uniform (0, 1, 1000))) ** (1 / k) 47hist, edge = np.histogram (ölçülen, yoğunluk = True, bin = 50) 48x = np.linspace (0.0001, 8, 1000) 49pdf = (k / lam) * (x / lam) ** (k-1) * np.exp (- (x / lam) ** k) 50cdf = 1-np.exp (- (x / lam) ** k) 51p4 = make_plot ("Weibull Dağılımı ( = 1, k = 1.25)", geçmiş, kenarlar, x, pdf, cdf) 52 # ekran 53show (gridplot (, ncols = 2, plot_width = 400, plot_height = 400, toolbar_location = Yok))Çalışma sonucu Şekil 2-60'da gösterilmektedir.
Şekil 2-60 Kod örneği 2-46 çalışan sonuçlar
Kod örneği 2-46, satır 5, çizim fonksiyonunu özelleştirin make_plot (başlık, geçmiş, kenarlar, x, pdf, cdf), burada parametreler grafiğin başlığı, histogramın üst sınırı, sol ve sağ sınırlar, takılan eğrinin x koordinatı ve yöntemdir Dikdörtgenin dört kenarını tanımlayarak, PDF olasılık yoğunluk işlevidir ve CDF kümülatif dağılım işlevidir. Satır 53, bir seferde 4 grafiği (normal dağılım, lognormal dağılım, gama dağılımı, Weber dağılımı) görüntülemek için gridplot () yöntemini kullanır.
Yazar hakkında:
Bokeh alanında kıdemli bir Python mühendisi, uygulayıcı ve müjdeci olan Qu Xifeng'in Bokeh üzerine derinlemesine araştırması var. Flask, MongoDB, Sklearn ve diğer teknolojilerde iyi ve zengin pratik deneyim. Birden çok sütunun yazarını (Python Çin topluluğu, Python programcıları, büyük veri analizi ve madencilik) biliyorum ve sütun 100.000'den fazla kullanıcı biriktirdi.
Bu makale, yayıncının yetkisi altında yayınlanan "Python Veri Görselleştirme: Bokeh Tabanlı Görsel Çizim" den bir alıntıdır.
Editör: Yu Tengkai
Redaksiyon: Lin Yilin
-Bitiş-
Tsinghua-Qingdao Veri Bilimi Enstitüsü'nün resmi WeChat kamu platformunu takip edin " THU Veri Pastası "Ve kız kardeş numarası" Veri Pastası THU "Daha fazla ders avantajı ve kaliteli içerik elde edin.