Plotly Dash Kullanımı

Python ana akım görselleştirme kütüphanelerini 2 sınıfa ayırabiliriz.

Statik : Seaborn, Matplotlib

Dinamik: Bokeh, Plotly

Plotly , interaktif görseller oluşturmamıza yarayan açık kaynak kodlu d3.js üzerine inşa edilmiş bir kütüphanedir ve Matlab, R ve Python API’ leri bulunmaktadır.

Bu çalışmada Plotly-Dash ile veri görselleştirme yapılmıştır. Çalışmada Kaggle’dan alınan Telecom veri seti kullanılmıştır. Veri seti hakkında detaylı bilgi için burayı ziyaret edebilirsiniz.

Bir dash uygulaması genellikle iki bölümden oluşur. İlk bölüm uygulamanın nasıl görüneceğini, ikinci bölüm uygulamanın etkileşimini açıklar. Uygulamaya başlamadan önce dash, dash-renderer, dash-html-components, dash-corecomponents,and plotly paketlerinin kurulması gerekir. Uygulama terminalden çalışacaktır.

Algoritmanın kullanılması Çalışmada öncelikle Dashboard 3 tabloya ayrılmıştır. Birinci kısımda veri setinin incelenmesi, ikinci kısımda algoritmaların analizlerinin yapılması ve üçüncü kısımda ise Veri setindeki niteliklerin daha anlaşılır bir şekilde incelenmesi amaçlanmıştır.

Yukarıdaki çıktıda dosya_parse fonksiyonu oluşturulmuş olup, daha sonra dosyanın csv ve xls uzantılı olup olmadığı kontrol edilmiştir. Okunan dosyanın geri çağılması (@callbaacks) ile de diğer işlemlerin bloke edilmesi engellenmiştir.

#Hakkında kısmı dosya cagırma fonk.

def parse_contents(contents, filename, date):

content_type, content_string = contents.split(‘,’)

decoded = base64.b64decode(content_string)

try:

if ‘csv’ in filename: #Kullanıcının bir csv dosyasını yüklediğini varsayalım.

df = pd.read_csv( io.StringIO(decoded.decode(‘utf-8’)))

elif ‘xls’ in filename:

# Kullanıcının bir excel dosyası yüklediğini varsayalım.

df = pd.read_excel(io.BytesIO(decoded))

except Exception as e:

print(e)

return html.Div(

[ html.H5(filename),

html.H6(datetime.datetime.fromtimestamp(date)),

dash_table.DataTable(

data=df.to_dict(‘records’), columns=[{‘name’: i, ‘id’: i} for i in df.columns]

),

html.Hr(),

# Yatay çizgi

# Hata ayıklama..

html.Div(‘Raw Content’),

html.Pre(contents[0:200] + ‘…’, style={

‘whiteSpace’: ‘pre-wrap’, ‘wordBreak’: ‘break-all’

})

])

@app.callback(Output(‘output-data-upload’, ‘children’),

[Input(‘upload-data’, ‘contents’)],

[State(‘upload-data’, ‘filename’),

State(‘upload-data’, ‘last_modified’)])

def update_output(list_of_contents, list_of_names, list_of_dates):

if list_of_contents is not None:

children = [

parse_contents(c, n, d) for c, n, d in

zip(list_of_contents, list_of_names, list_of_dates)]

return children

Yukarıdaki dashboard’ta ise Veri setindeki Churn müşterilerinin durumu ve nümerik özelliklerin istatiksel durumu verilmiştir.

Represing Figures (Figürler)

Plotly.py paketinin amacı, plotly.js JavaScript grafik kitaplığı tarafından görüntülenen şekil özellikleri oluşturmak için hoş bir python arabirimi sağlamaktır.Plotly.js kütüphanesi bağlamında, şekil JSON veri yapısı tarafından belirtilir. Bu nedenle, asıl amacının plotly.js grafik kütüphanesinin anladığı JSON veri yapısına otomatik olarak serileştirilebilen Python sözcükleri üretmesine yardımcı olmaktır.

Indicators(Göstergeler)

Göstergenin amacı “value” özelliği tarafından belirtilen tek bir değeri görselleştirmektir.Bu değeri görselleştirmek için üç farklı görsel öge mevcuttur: number,delta and gauge. Bunların herhangi bir kombinasyonu “mode” özelliği ile belirtilebilir. Üst düzey özellikler:

1) value : görselleştirilecek değer

2) mode : hangi görsel elemanların çizileceği

3) align : sayı ve deltanın nasıl hizalanacağı

4) domain : şeklin kapsamı

Çalışmada churn durumunu belirtmek için kullanılmıştır.

fig = go.Figure(go.Indicator(

mode = “gauge+number+delta”,

value = 5163,

title = {‘text’: “Churn”},

delta = {‘reference’: 7032},

domain = {‘x’: [0, 1], ‘y’: [0, 1]} ))

Yukarıdaki tasarımda ise Müşterinin şirkette kaldığı süre (tenure) ile aylık fatura ücretinin(Monthly charges) ayrılma eğilimini nasıl etkilediği gösterilmiştir. Aynı şekilde Müşterilerinin cinsiyet dağılımı ve Servis sağlayıcısı-Cinsiyet /Faturalı olup olmama durumu, Cinsiyet özelliklerinin Churn dağılımına etkisi gösterilmiştir. Görselleştirmede kullanılan plotlar şu şekildedir:

Bar Chart ( Çubuk Grafik)

Bir çubuk grafik, temsil ettikleri değerlerle orantılı yükseklik veya uzunluklara sahip dikdörtgen çubuklar içeren kategorik verileri sunar. Çubuklar dikey veya yatay olarak görüntülenebilir. Go.Bar () fonksiyonu, konuların listesi olarak x koordinatının ve y koordinatının bulunduğu bir çubuk iz döndürür.

Parallel Catagories Diagram

Paralel kategoriler diyagramı (paralel kümeler veya alüvyal diyagram olarak da bilinir) çok boyutlu kategorik veri kümelerinin görselleştirilmesidir. Veri kümesindeki her değişken, bir dikdörtgen sütunu ile temsil edilir; burada her dikdörtgen, bu değişken tarafından alınan ayrı bir değere karşılık gelir. Dikdörtgenlerin göreli yükseklikleri, karşılık gelen değerin göreli sıklığını yansıtır.Boyutlar arasındaki kategori dikdörtgenlerinin kombinasyonları, şeridin yüksekliğinin veri kümesindeki kategori kombinasyonunun göreli sıklığına karşılık geldiği şeritler ile bağlanır.

#cinsiyet oranı

gender=[‘Male’, ‘Female’, ]

fig2 = go.Figure(data=[

go.Bar(name=’Yes’, x=gender, y=[930,939]),

go.Bar(name=’No’, x=gender, y=[2625,2549]),

])

#Servis sağlayıcısı — Cinsiyet Churn dağılım diagramı

class_dim = go.parcats.Dimension(

values=df1.InternetService, label=”InternetService”,categoryarray=[0, 1, 2],ticktext=[‘DSL’,’Fiber optic’, ‘No’]

)

gender_dim = go.parcats.Dimension(values=df1.gender, label=”Gender”,categoryarray=[0, 1],ticktext=[‘Male’, ‘Female’])

survival_dim = go.parcats.Dimension(

values=df1.Churn, label=”Churn”, categoryarray=[0, 1],

ticktext=[‘Yes’, ‘No’]

)

# Create parcats trace

color = df1.Churn;

colorscale = [[0, ‘skyblue’], [1, ‘mediumseagreen’]];

fig3= go.Figure(data = [go.Parcats(dimensions=[class_dim, gender_dim, survival_dim],

line={‘color’: color, ‘colorscale’: colorscale},

hoveron=’color’, hoverinfo=’count+probability’,

labelfont={‘size’: 20, ‘family’: ‘Times’},

tickfont={‘size’: 18, ‘family’: ‘Times’},

arrangement=’freeform’)])

Plotly Express

Plotly Express, “düzenli” veriler üzerinde çalışan ve stili kolay şekiller üreten, kullanımı kolay, üst düzey bir arayüzdür. Her Plotly Express işlevi, verileri ve düzeni sağlanan bağımsız değişkenlere göre önceden doldurulmuş bir graph_objects. Figure nesnesi döndürür.

Yukarıdaki görsel ile de müşterilerin ödedikleri aylık fatura ücreti görüntülenir.

Çalışmanın ileriki kısımlarında da Plotly Dash kütüphanesini kullanarak dinamik görseller üzerinde çalışılacaktır. Plotly ile ilgili temel bilgilere kendi sitesinden ulaşabilirsiniz.

Sevgiler

Bir cevap yazın

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir