Visualisasi Data Lanjutan untuk Ilmu Data di Python

Cara membuat bagan yang keren, sepenuhnya interaktif dengan string Python tunggal,



gambar



distorsi kognitif tentang biaya hangus (sunk cost fallacy) adalah salah satu dari banyak bias kognitif berbahaya , yang menjadi korban. Ini merujuk pada kecenderungan kita untuk terus mencurahkan waktudan sumber daya untuk tujuan yang hilang, karena kita sudah menghabiskan - tenggelam - begitu banyak waktu dalam pengejaran. Kekeliruan di bawah biaya berlaku untuk tetap berada di pekerjaan yang buruk lebih lama dari yang seharusnya, bekerja dengan kasar pada sebuah proyek bahkan ketika itu jelas itu tidak akan berhasil, dan ya, terus menggunakan perpustakaan yang membosankan, yang sudah ketinggalan zaman - matplotlib - ketika ada alternatif yang lebih efisien, interaktif dan lebih menarik.



Selama beberapa bulan terakhir, saya menyadari bahwa satu-satunya alasan saya menggunakan matplotlib adalah karena ratusan jam saya habiskan untuk mempelajari sintaksis kompleks . Kompleksitas ini menyebabkan frustrasi selama berjam-jam mencari tahu di StackOverflow cara memformat tanggal atau menambahkan sumbu Y kedua... Untungnya, ini adalah waktu yang tepat untuk memplot grafik dengan Python, dan setelah menjelajahi opsi , pemenang yang jelas - dalam hal kemudahan penggunaan, dokumentasi, dan fungsionalitas - adalah plotly . Pada artikel ini, kita akan terjun langsung ke alur cerita, mempelajari cara membuat bagan yang lebih baik dalam waktu yang lebih singkat - seringkali dengan satu baris kode.



Semua kode untuk artikel ini tersedia di GitHub . Semua grafik bersifat interaktif dan dapat dilihat di NBViewer .



gambar



Gambaran Umum Plotly



Paket plotly untuk Python - perpustakaan perangkat lunak open source, yang dibangun di atas plotly.js , yang, pada gilirannya, dibangun di atas d3.js . Kami akan menggunakan pembungkus di atas manset plotly yang dirancang untuk bekerja dengan Pandas DataFrame. Jadi, tumpukan manset kami> plotly> plotly.js> d3.js - ini berarti kami mendapatkan efisiensi dalam pemrograman Python dengan kemampuan grafis luar biasa interaktif d3 .



( Plotly sendiri adalah perusahaan grafisdengan beberapa produk dan alat sumber terbuka. Pustaka Python gratis untuk digunakan dan kami dapat membuat grafik tanpa batas offline ditambah hingga 25 grafik online untuk dibagikan kepada dunia .)



Semua pekerjaan dalam artikel ini dilakukan di Jupyter Notebook dengan plotly + manset bekerja offline. Setelah menginstal plotly dan manset, pip install cufflinks plotly impor yang berikut ini untuk berjalan di Jupiter:



# Standard plotly imports
import plotly.plotly as py
import plotly.graph_objs as go
from plotly.offline import iplot, init_notebook_mode
# Using plotly + cufflinks in offline mode
import cufflinks
cufflinks.go_offline(connected=True)
init_notebook_mode(connected=True)




Distribusi Variabel Tunggal: Histogram dan Petak Kotak



Plot variabel tunggal - satu dimensi adalah cara standar untuk memulai analisis, sedangkan histogram adalah plot transisi ( walaupun dengan beberapa masalah ) untuk merencanakan distribusi. Di sini, dengan menggunakan statistik artikel rata-rata (Anda dapat melihat cara mendapatkan statistik Anda sendiri di sini, atau menggunakan statistik saya ), mari buat histogram interaktif jumlah tepukan pada artikel ( dfini adalah kerangka data Pandas standar):



df['claps'].iplot(kind='hist', xTitle='claps',
                  yTitle='count', title='Claps Distribution')




gambar



Bagi mereka yang terbiasa matplotlib, yang harus kita lakukan adalah menambahkan satu huruf lagi ( iplotbukan plot) dan kita akan memiliki grafik yang jauh lebih indah dan interaktif! Kita dapat mengklik data untuk mendapatkan informasi yang lebih terperinci, memperbesar bagian-bagian dari grafik dan, seperti yang akan kita lihat nanti, pilih kategori yang berbeda.



Jika kita ingin memplot histogram yang overlay, sama mudahnya:



df[['time_started', 'time_published']].iplot(
    kind='hist',
    histnorm='percent',
    barmode='overlay',
    xTitle='Time of Day',
    yTitle='(%) of Articles',
    title='Time Started and Time Published')




gambar



Dengan sedikit manipulasi Pandas, kita dapat membuat barplot:



# Resample to monthly frequency and plot 
df2 = df[['view','reads','published_date']].\
         set_index('published_date').\
         resample('M').mean()
df2.iplot(kind='bar', xTitle='Date', yTitle='Average',
    title='Monthly Average Views and Reads')




gambar



seperti yang telah kita lihat, kita dapat menggabungkan kekuatan Panda dengan manset plotly +. Untuk boxplot distribusi penggemar berdasarkan publikasi, kami menggunakan pivot, dan kemudian merencanakan:



df.pivot(columns='publication', values='fans').iplot(
        kind='box',
        yTitle='fans',
        title='Fans Distribution by Publication')




gambar



Manfaat dari interaktivitas adalah kita dapat menjelajahi dan menyimpan data sesuai keinginan kita. Ada banyak informasi di dalam kotak rakit, dan tanpa kemampuan untuk melihat angka-angka, kita akan kehilangan sebagian besar dari itu!



Plot pencar



Plot sebar adalah jantung dari sebagian besar analisis. Ini memungkinkan kita untuk melihat evolusi suatu variabel dari waktu ke waktu, atau hubungan antara dua (atau lebih) variabel.



Seri waktu



Banyak data nyata memiliki elemen waktu. Untungnya plotly + manset dirancang dengan visualisasi deret waktu. Mari kita membingkai data dari artikel TDS saya dan melihat bagaimana tren telah berubah.



 Create a dataframe of Towards Data Science Articles
tds = df[df['publication'] == 'Towards Data Science'].\
         set_index('published_date')
# Plot read time as a time series
tds[['claps', 'fans', 'title']].iplot(
    y='claps', mode='lines+markers', secondary_y = 'fans',
    secondary_y_title='Fans', xTitle='Date', yTitle='Claps',
    text='title', title='Fans and Claps over Time')




gambar



Kami melihat beberapa hal berbeda di sini:



  • Secara otomatis mendapatkan deret waktu yang diformat dengan baik pada sumbu x
  • Menambahkan sumbu y sekunder karena variabel kami memiliki rentang yang berbeda
  • Menampilkan judul artikel pada hover




Untuk informasi lebih lanjut, kami juga dapat menambahkan anotasi teks dengan mudah:



tds_monthly_totals.iplot(
    mode='lines+markers+text',
    text=text,
    y='word_count',
    opacity=0.8,
    xTitle='Date',
    yTitle='Word Count',
    title='Total Word Count by Month')




gambar



Untuk plot sebaran dua variabel yang diwarnai dengan variabel kategori ketiga, kami menggunakan:



df.iplot(
    x='read_time',
    y='read_ratio',
    # Specify the category
    categories='publication',
    xTitle='Read Time',
    yTitle='Reading Percent',
    title='Reading Percent vs Read Ratio by Publication')




gambar



Mari kita sedikit rumit dengan menggunakan sumbu log, yang ditentukan sebagai tata letak plotly - (lihat dokumentasi Plotly untuk spesifikasi tata letak), dan menentukan ukuran gelembung variabel numerik:



tds.iplot(
    x='word_count',
    y='reads',
    size='read_ratio',
    text=text,
    mode='markers',
    # Log xaxis
    layout=dict(
        xaxis=dict(type='log', title='Word Count'),
        yaxis=dict(title='Reads'),
        title='Reads vs Log Word Count Sized by Read Ratio'))




gambar



Dengan sedikit kerja ( lihat NoteBook untuk detail ), kami bahkan dapat menempatkan empat variabel ( tidak disarankan ) pada satu grafik!



gambar



Seperti sebelumnya, kita dapat menggabungkan Pandas dengan kancing manset + plotly untuk grafik yang berguna



df.pivot_table(
    values='views', index='published_date',
    columns='publication').cumsum().iplot(
        mode='markers+lines',
        size=8,
        symbol=[1, 2, 3, 4, 5],
        layout=dict(
            xaxis=dict(title='Date'),
            yaxis=dict(type='log', title='Total Views'),
            title='Total Views over Time by Publication'))




gambar



Untuk lebih banyak contoh fungsi, lihat buku catatan atau dokumentasi . Kita dapat menambahkan anotasi teks, garis referensi, dan garis paling cocok ke diagram kita dengan satu baris kode dan masih dengan semua interaksi.



Grafik tingkat lanjut



Kami sekarang beralih ke beberapa gambar yang mungkin tidak akan sering Anda gunakan, tetapi ini bisa sangat mengesankan. Kami akan menggunakan plotly figure_factory untuk melakukan haffics yang luar biasa ini dalam satu baris.



Matriks Hamburan



Ketika kami ingin mengeksplorasi hubungan antara banyak variabel, matriks pencar (juga disebut splom) adalah pilihan yang bagus:



import plotly.figure_factory as ff
figure = ff.create_scatterplotmatrix(
    df[['claps', 'publication', 'views',      
        'read_ratio','word_count']],
    diag='histogram',
    index='publication')




gambar



Bahkan grafik ini sepenuhnya interaktif, memungkinkan kita untuk mengeksplorasi data.



Peta Panas Korelasi



Untuk memvisualisasikan korelasi antara variabel numerik, kami menghitung korelasi dan kemudian membuat peta panas beranotasi:



corrs = df.corr()
figure = ff.create_annotated_heatmap(
    z=corrs.values,
    x=list(corrs.columns),
    y=list(corrs.index),
    annotation_text=corrs.round(2).values,
    showscale=True)




gambar



Daftar grafik berjalan terus dan terus. kancing manset juga memiliki beberapa tema yang dapat kita gunakan untuk mendapatkan tampilan dan rasa yang sama sekali berbeda tanpa usaha. Misalnya, di bawah ini kami memiliki plot rasio dalam tema "spasi" dan plot sebaran di "ggplot":



gambar



gambar



Kami juga mendapatkan plot 3D (permukaan dan plot gelembung):



gambar



gambar



Untuk mereka yang ingin , Anda bahkan dapat membuat diagram lingkaran:



gambar



Editing di Plotly Chart Studio



Saat Anda membuat grafik ini di NoteBook Jupiter, Anda akan melihat tautan kecil di sudut kanan bawah grafik "Ekspor ke plot.ly", jika Anda mengklik tautan ini, Anda akan dibawa ke Chart Studio di mana Anda dapat mengubah grafik Anda untuk presentasi akhir. Anda dapat menambahkan anotasi, menentukan warna, dan umumnya menghapus semuanya untuk grafik yang hebat. Kemudian Anda dapat mempublikasikan jadwal Anda di Internet sehingga siapa pun dapat menemukannya dengan referensi.



Berikut adalah dua grafik yang saya atur di Chart Studio:



gambar



gambar



Terlepas dari apa yang telah dikatakan di sini, kami masih belum menjelajahi semua fitur perpustakaan! Saya akan menyarankan Anda untuk melihat dokumentasi plotly dan dokumentasi manset untuk plot yang lebih luar biasa.



gambar



kesimpulan



Bagian terburuk dari kesalahpahaman undervalued adalah bahwa Anda hanya menyadari betapa banyak waktu yang Anda buang setelah Anda berhenti. Untungnya, sekarang saya telah membuat kesalahan dengan tinggal di matploblib terlalu lama, Anda tidak perlu melakukannya!



Ketika kita berpikir tentang pustaka petak, ada beberapa hal yang kita inginkan:



  1. Grafik satu garis untuk eksplorasi cepat
  2. Substitusi / Eksplorasi Data Interaktif
  3. Kemampuan menggali detail sesuai kebutuhan
  4. Pengaturan mudah untuk presentasi akhir




Untuk saat ini, opsi terbaik untuk melakukan semua ini dengan Python adalah plotly. Plotly memungkinkan kami membuat visualisasi dengan cepat dan membantu kami lebih memahami data kami melalui interaktivitas. Plus, mari kita hadapi itu, bagan harus menjadi salah satu bagian terbaik dari ilmu data! Dengan perpustakaan lain, merencanakan telah berubah menjadi tugas yang membosankan, tetapi dengan alur cerita, ada kegembiraan membuat sosok yang hebat lagi!



gambar






gambar


Cari tahu detail cara mendapatkan profesi profil tinggi dari awal atau Tingkatkan keterampilan dan gaji dengan mengikuti kursus online berbayar SkillFactory:











All Articles