Graph Theory - Python ile Kullanımı
Veri setleri ile kullanımı
Yazar:
Enes ASAN
Yayın tarihi :26-Oca-22
Bölüm kodlarını ve/veya veri setlerini indir.
Graph Theroy (Grafik teorisi), pandas ile üretilmiş olan veri setleri ile de birlikte kullanılabilmektedir.
Pandas DataFrame'den bir kenar listesi içeren bir grafik döndürmek için "from_pandas_edgelist" komutu kullanılabilir.
Söz dizimi: from_pandas_edgelist(df, source='source', target='target', edge_attr=None, create_using=None, edge_key=None)
- df, veri setini temsil eder.
- source, veri seti içerisinde kullanmak istenilen sütun adını temsil eder.(kaynak sütun)
- target, veri seti içersinde kullanılmak istenilen sütun adını temsil eder.(hedef sütun)
- edge_attr, sütun adlarını alarak bunları grafiğe kenar nitelikleri olarak eklemek için kullanılır.
- create_using, oluşturulacak grafiğin türünü belirlemek için kullanılır. Varsayılan olarak nx.Graph'dır.
Örnek-1: Hava yolu şirketlerinin uçaklarının kalkış noktası, varış noktası ve arasındaki uzaklıklarının bulunduğu "graphdata.csv" adlı veri setini kullanarak bir grafik tablosu çıkartalım.
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
%matplotlib inline
import networkx as nx
#Veri seti okunur
df=pd.read_csv("graphdata.csv")
#Ilk 5 satır
df.head()
Çıktı:
#Son 5 satır
df.tail()
Çıktı:
#boş değerler listesi
df.isnull().sum()
Çıktı:
Year 0 Month 0 DayofMonth 0 DayOfWeek 0 DepTime 635 CRSDepTime 0 ArrTime 707 CRSArrTime 0 AirTime 707 Origin 0 Dest 0 Distance 0 dtype: int64
#Boş değerli satırlar kaldırıldı(707 satır kaldırıldı)
df=df.dropna().reset_index()
#Grafik tanımlaması
G=nx.from_pandas_edgelist(df,source="Origin",target="Dest",edge_attr=True)
#Düğümler listesi(ilk 20 satır)
list(G.nodes)[0:20]
Çıktı:
['IAD', 'TPA', 'IND', 'BWI', 'JAX', 'LAS', 'MCI', 'MCO', 'MDW', 'PHX', 'ISP', 'FLL', 'PBI', 'RSW', 'JAN', 'HOU', 'BHM', 'BNA', 'ORF', 'PHL']
#Kenarlar listesi (ilk 20 satır)
list(G.edges)[0:20]
Çıktı:
[('IAD', 'TPA'), ('IAD', 'LAS'), ('IAD', 'MCO'), ('IAD', 'MDW'), ('TPA', 'IND'), ('TPA', 'ISP'), ('TPA', 'JAX'), ('TPA', 'LAS'), ('TPA', 'MCI'), ('TPA', 'MDW'), ('TPA', 'MHT'), ('TPA', 'MSY'), ('TPA', 'ORF'), ('TPA', 'PBI'), ('TPA', 'PHL'), ('TPA', 'PHX'), ('TPA', 'PIT'), ('TPA', 'PVD'), ('TPA', 'RDU'), ('TPA', 'SAT')]
#Grafik çizimi
plt.figure(figsize=(10,10))
nx.draw_circular(G,with_labels=True)
Çıktı:
Yukardaki çizim haricinde kullanılabilecek farklı çizim yöntemleri de bulunmaktadır. Bunlar;
#Diğer çizim yöntemleri
plt.figure(figsize=(10,10))
nx.draw_kamada_kawai(G,with_labels=True)
Çıktı:
#Diğer çizim yöntemleri
plt.figure(figsize=(10,10))
nx.draw_networkx(G,with_labels=True)
Çıktı:
#Diğer çizim yöntemleri
plt.figure(figsize=(10,10))
nx.draw_random(G,with_labels=True)
Çıktı:
#Diğer çizim yöntemleri
plt.figure(figsize=(10,10))
nx.draw_shell(G,with_labels=True)
Çıktı:
#Diğer çizim yöntemleri
plt.figure(figsize=(10,10))
nx.draw_spectral(G,with_labels=True)
Çıktı:
#Diğer çizim yöntemleri
plt.figure(figsize=(10,10))
nx.draw_spring(G,with_labels=True)
Çıktı: