Panda sendiri tidak dapat memplot data jaringan. Sebaliknya, kita harus bergantung pada dua pustaka lain, NetworkX dan Matplotlib. NetworkX adalah pustaka Python standar untuk bekerja dengan jaringan. Saya memiliki buku teks yang akan datang, seperti ini, yang memandu pengguna melalui NetworkX. Matplotlib adalah salah satu pustaka plotting standar. Tujuan dari buku catatan singkat ini adalah untuk menyediakan kode yang diperlukan untuk membuat Panda bekerja dengan NetworkX dan Matplotlib untuk mengambil jaringan yang disimpan dalam Pandas DataFrame dan mengubah hubungan menjadi grafik
import pandas as pd import networkx as nx import matplotlib.pyplot as plt
Mari sekarang muat data kita dan lihat seperti apa tampilannya
df = pd.read_csv("data/network.csv") _
sourcetarget0TomRose1RoseRosita2JerryJeff3JeffLarry4CarmenCarmen5RositaRosita6LarryCarmen7LarryJerry
Ini adalah format standar yang cantik untuk jaringan. Kami memiliki dua kolom data, sumber, dan target. Bayangkan menggambar garis untuk mendemonstrasikan jaringan, sumbernya adalah tempat Anda mulai menggambar garis dan targetnya adalah tempat garis itu berakhir. Ini dikenal sebagai gaya dalam teori jaringan dan penting untuk memahami hubungan antara node, atau titik individu, dalam grafik jaringan
Kita dapat menggunakan fungsi bawaan NetworkX from_pandas_edgelist() dan memasukkan data tersebut langsung ke edgelist
Dash adalah kerangka kerja sumber terbuka untuk membangun aplikasi analitik, tanpa Javascript diperlukan, dan terintegrasi erat dengan pustaka grafik Plotly
Pelajari tentang cara memasang Dash di https. //berlari. merencanakan. ly/instalasi
Di mana pun di halaman ini Anda melihat fig.show(), Anda dapat menampilkan gambar yang sama di aplikasi Dash dengan meneruskannya ke argumen figure dari komponen Graph dari paket dash_core_components bawaan seperti ini
Pandas DataFrame harus berisi setidaknya dua kolom nama node dan nol atau lebih kolom atribut edge. Setiap baris akan diproses sebagai satu edge instance
Catatan. Fungsi ini berulang pada DataFrame. nilai, yang tidak dijamin untuk mempertahankan tipe data di seluruh kolom dalam baris. Ini hanya masalah jika baris Anda sepenuhnya numerik dan campuran int dan float. Dalam hal ini, semua nilai akan dikembalikan sebagai pelampung. Lihat DataFrame. dokumentasi iterrows sebagai contoh
Parameter . df Bingkai Data PandaRepresentasi daftar tepi dari grafik
sumber str atau intNama kolom yang valid (string atau integer) untuk node sumber (untuk kasus yang diarahkan)
target str atau intNama kolom yang valid (string atau integer) untuk node target (untuk case yang diarahkan)
edge_attr str atau int, iterable, True, atau NoneNama kolom yang valid (str atau int) atau iterable dari nama kolom yang digunakan untuk mengambil item dan menambahkannya ke grafik sebagai atribut tepi. Jika , semua kolom yang tersisa akan ditambahkan. Jika , tidak ada atribut tepi yang ditambahkan ke grafik
create_using Pembuat grafik NetworkX, opsional (default=nx. Grafik)Jenis grafik yang akan dibuat. Jika grafik instance, maka dibersihkan sebelum diisi
edge_key str atau Tidak Ada, opsional (default=Tidak ada)Nama kolom yang valid untuk tombol tepi (untuk MultiGraph). Nilai dalam kolom ini digunakan untuk kunci tepi saat menambahkan tepi jika create_using adalah multigraf
namaklub0Adams JohnNorth Caucus1Adams JohnLong Room Club2Adams SamuelNorth Caucus3Adams SamuelLong Room Club4Adams SamuelBoston Committee
Konversikan ke grafik
Setiap baris adalah tepi dengan sumber dan target. Jaringan akan secara otomatis membuat node untuk Anda berdasarkan namanya
Bagan jaringan didasari oleh node. Node-node ini saling terhubung oleh edge. Jadi format dasarnya adalah bingkai data di mana setiap baris menggambarkan koneksi
Di sini kami membuat bingkai data dengan 4 baris, menjelaskan 4 koneksi plot ini. Jadi jika Anda memiliki file csv dengan koneksi Anda, muat dan Anda siap memvisualisasikannya
Dalam tutorial ini, kami akan mencoba membuat grafik jaringan yang luar biasa dan interaktif dari bingkai data panda untuk menyempurnakannya
Baca juga. Paket NetworkX – Pustaka Grafik Python
Tanpa penundaan, Mari kita mulai
Memuat dan Pra-pemrosesan Data
Bagian ini difokuskan pada pemuatan dan pra-pemrosesan dataset. Kumpulan data yang dipilih untuk tutorial ini adalah kumpulan data OpenFlights Airport yang tersedia di Kaggle. Sejak Januari 2017, OpenFlights Airports Database berisi data untuk lebih dari 10.000 bandara di seluruh dunia
Baca selengkapnya. Bekerja dengan Baris dan Kolom DataFrame dengan Python
Pada kode di bawah ini, kita akan mengimpor modul pandas dan memuat file routes.csv ke dalam program. Sekarang dari semua kolom dalam kumpulan data, kami hanya memerlukan bandara source dan destination dari kumpulan data
import pandas as pd df = pd.read_csv('routes.csv') df = df[['Source airport','Destination airport']] df = df[:500] df.head()
Untuk membuat pemrosesan lebih mudah dan perhitungannya tidak terlalu rumit, kami hanya akan mengambil 500 baris teratas dari kumpulan data. Dan kami akan menampilkan lima baris pertama dari kumpulan data menggunakan fungsi head
Kami akan memisahkan node sumber dan tujuan menjadi dua daftar terpisah menggunakan kode Python di bawah ini
sources = list(df['Source airport']) destinations = list(df['Destination airport'])
Sekarang kita akan beralih ke pembuatan grafik Jaringan menggunakan pustaka networkx dan pyviz di bagian selanjutnya
Pembuatan Graf Jaringan
Kami akan memulai dengan membuat grafik kosong menggunakan fungsi net.Network dan meneruskan sejumlah atribut dari grafik jaringan kosong. Langkah selanjutnya adalah mengulangi daftar sources = list(df['Source airport']) destinations = list(df['Destination airport']) 0 dan menambahkan node beserta label dan judulnya
Setelah ini, kita akan menambahkan tepi menggunakan fungsi add_edge. Kami akan menggunakan penanganan pengecualian untuk memastikan semua kesalahan dipertimbangkan (jika ada)
Baca juga. Penanganan Pengecualian Python – Coba, Kecuali, Akhirnya
Lihatlah kode yang disebutkan di bawah ini
g_from_data =net.Network(height='600px',width='50%', bgcolor='white',font_color="black", heading="A Networkx Graph from DataFrame",directed=True) for i in range(len(sources)): try: g_from_data.add_node(sources[i],label=sources[i],title=sources[i]) except: pass for (i,j) in zip(sources,destinations): try: g_from_data.add_edge(i,j) except: pass g_from_data.show_buttons(['physics']) g_from_data.show('A_Complete_Networkx_Graph_From_DataFrame.html') display(HTML('A_Complete_Networkx_Graph_From_DataFrame.html'))
Lihat grafik jaringan yang dihasilkan di bawah ini. Sungguh menakjubkan bagaimana grafik terlihat menarik dan menyenangkan untuk dilihat
Kesimpulan
Saya harap Anda dapat memahami cara membuat grafik jaringan menggunakan bingkai data panda menggunakan pustaka pyviz dalam bahasa pemrograman Python. Terima kasih telah membaca