2015-11-04 19 views
5

Pandalarda bir kutu çizimi çizmek için oluşturulan istatistiksel verileri elde etmem gerekiyor (boxplots oluşturmak için dataframe kullanarak). yani Quartile1, Quartile2, Quartile3, alt whisker değeri, üst whisker değeri ve aykırı değerleri. Kutu çizimini çizmek için aşağıdaki sorguyu denedim.Bir boxplot Verisi Alma - Pandalar

import pandas as pd 
df = pd.DataFrame(np.random.rand(100, 5), columns=['A', 'B', 'C', 'D', 'E']) 
pd.DataFrame.boxplot(df,return_type = 'both') 

Değerleri manuel olarak hesaplamak yerine bunu yapmak için bir yol var mı?

+1

'df.describe önerilen() ' – WoodChopper

+0

Bunu zaten denedim ve aykırı değerleri ve IQR aralığını alamayacağım. Bunu hesaplamak zorundasın. –

cevap

6

Seçeneklerden biri çizimlerinden y verilerini kullanmak için - muhtemelen (el ilanları)

_, bp = pd.DataFrame.boxplot(df, return_type='both') 

outliers = [flier.get_ydata() for flier in bp["fliers"]] 
boxes = [box.get_ydata() for box in bp["boxes"]] 
medians = [median.get_ydata() for median in bp["medians"]] 
whiskers = [whiskers.get_ydata() for whiskers in bp["whiskers"]] 

aykırı için en yararlı Ama ya

kullanarak (DAG'den dahil) diğer değerleri elde etmek için muhtemelen daha basittir
quantiles = df.quantile([0.01, 0.25, 0.5, 0.75, 0.99]) 

veya WoodChopper ile

stats = df.describe() 
+0

Çözümümüzü denedim ve aşağıdaki hatayı aldım. boxes = [box.get_ydata() kutucuğu içinde bp ["boxes"]] TypeError: tuple indisleri tamsayı olmalı, str değil –

+0

Kullandığınızdan emin misiniz? _, Bp = pd.DataFrame.boxplot (df , ilk satırda return_type = 'both')? ve bp = pd.DataFrame.boxplot (df, return_type = 'both'), hangi sözlük yerine bir tuple verir? – philngo

+0

Haklısınız '_,' olmadan çalıştırdım. Senden bir açıklama daha lazım. Aşağıda medyan değerler vardır, ancak tekrarlanmıştır. Neden? [dizi ([0.41748658, 0.41748658]), dizi ([0.48501871, 0.48501871]), dizi ([0.53952278, 0.51677519]), dizi ([0.53952278, 0.53952278]), dizi ([0.37759803, 0.37759803])] Lütfen açıklayın. kutuların çıktısı. –