Bilişim Uygulamalar

Veri analizi ve görselleştirme için en iyi 10 Python kütüphanesi

En popüler programlama dillerinden biri olan Python, farklı işleri görmek üzere tasarlanan binlerce kütüphane içeriyor. Veri analizi ve görselleştirme için kullandığımız 10 Python kütüphanesini açıklıyoruz. Her kütüphanede farklı işlemler yapmaya yarayan en önemli metotları da listeledik.

Veri gazeteciliği; veriyi toplama, analiz etme ve görselleştirme süreçlerini içeriyor. Excel ve Google Tablolar gibi uygulamalar, veri analizi için yeterli olabiliyor. Görselleştirmeler için de programlama bilgisine ihtiyaç duyulmadan kullanılabilen birçok uygulama var. Örneğin biz Journo’nun veri gazeteciliği işlerinde Datawrapper ve Flourish’i sıkça kullanıyoruz.

Ancak veri toplamak gerekiyorsa veya analiz edilip görselleştirecek veri çok büyük veya karmaşıksa üstte anılan “hazır” uygulamalar yetmiyor. Bu iş için programlama dillerini kullanmak gerekiyor. Bu alanda en popüler programlama dillerinden biri ise Python.

Python, sözdizimi açısından oldukça basit ve “okunaklı” bir dil. Üstelik ücretsiz ve açık kaynak kodlu. Bu yüzden veri gazeteciliğine başlamak isteyenler için de ideal bir platform sunuyor. Python resmî sitesindeki son sürümü bilgisayarınıza indirip hemen kurabilirsiniz.

Ardından Python‘un temel kavramlarını (değişkenler, veri tipleri, koşullu ifadeler, döngüler vs.) öğrenip milyonlarca kullanıcının oluşturduğu çevrim içi rehber ve tartışmalarını izleyerek bu programlama diline hızla hakim olabilirsiniz.

TGS Akademi’de düzenlenen ücretsiz eğitimlerde de gerçek dünyaya ait veri setleri üstünden gazeteciler için Python uygulamaları yapılıyor. Yeni ders ve atölyelerin duyurularından haberdar olmak için TGS Akademi’nin sosyal medya hesaplarını takip etmeyi unutmayın.

Neden Python? Bu “kütüphaneler” ne işe yarar?

Python, örneğin R‘ın aksine, veri analizi ve istatistik gibi alanlar için özellikle yaratılmamış. Genel amaçlı bu dille oyun yazmaktan evinizdeki akıllı cihazları yönetmeye kadar sayısız alanda çalışabilirsiniz.

Python’ın belirli bir faaliyet alanındaki özel işlevleri gerçekleştirmesi için yazılmış 100 bini aşkın kütüphane var. Her bir kütüphane, bir görevi yerine getirmek için tasarlanmış kodlardan oluşan bir dizi ilişkili modül içeriyor.

Veri toplama/kazıma, veri temizleme, veri analizi ve veri görselleştirme gibi görevler için de binlerce Python kütüphanesi mevcut. Yazdığınız Python betiğini (script) çalıştırmadan önce, yararlanacağınız kütüphaneleri de kurmanız gerekiyor.

Journo’nun veri gazeteciliği çalışmalarında işimize en çok yarayan 10 Python kütüphanesini derledik:

1. Pandas

Pandas, Python programlama dili için açık kaynaklı, güçlü bir veri analizi ve manipülasyon kütüphanesi. “Panel Data” teriminden türetilmiş ve temel olarak iki ana veri yapısına odaklanıyor: “Series” (dizi) ve “DataFrame” (veri çerçevesi). Series, tek boyutlu bir veri yapısı; DataFrame ise birçok veri türünü içerebilen iki boyutlu (tablo benzeri) bir yapı.

Veri gazeteciliği, bazen büyük veri kümeleriyle (dataset) çalışmayı gerektirir ve bunlar çoğu kez tablo şeklinde verilir. Pandas, bu tür veri kümelerini kolayca okuma, temizleme, dönüştürme ve analiz etme yeteneğine sahip.

CSV, Excel ve SQL veritabanları gibi birçok formatta veriyi Pandas ile kolayca işleyebilir, bu verilere istatistiksel analizler uygulayabilirsiniz. Pandas aynı zamanda eksik veri işleme, zaman dizisi analizi ve kategorik veri işleme gibi birçok özelliği destekliyor.

Python, “nesne yönelimli” bir programlama dili (OOP). Bu tür diller, veri veya kod içeren ve “nesne” diye adlandırılan bir kavramı temel alıyor. Veri, çeşitli özelliklere sahip alanlardan oluşuyor. Kod ise “metot” (yöntem) diye bilinen prosedürler şeklinde…

Her nesneye ilişik metotlar, o nesnenin veri alanlarına erişip onları değiştirebilir. Dolayısıyla Python kütüphanelerinin içerdiği metotlar, onların uygulanmasında kilit bir rol oynar.

Pandas için en önemli metotlar

  • read_csv(), read_excel(): CSV ve Excel dosyalarını okumak için kullanılır.
  • head(), tail(): Veri setinin başından veya sonundan belirli sayıda satırı gösterir.
  • describe(): Veri setindeki sayısal sütunların temel istatistiklerini gösterir.
  • groupby(): Belirli bir sütuna göre gruplama yapar ve bu grupların özet istatistiklerini sunar.
  • merge(), join(): İki DataFrame’i belirli bir anahtara göre birleştirmek için kullanılır.

Pandas’da işinize yarayabilecek onlarca metot var. Örneğin Excel’in açamayacağı kadar büyük bir veri kümesini Python’da okuyup ona yeni bir sütun ekleyeceksiniz, Pandas’ın “df [‘SütunAdı’]” metotunu kullanabilirsiniz.

Mesela “İsim” ve “Yaş” sütunlarını içeren bir veri kümesine “Şehir” sütununu ekleyen basit bir betik yazalım:

import pandas as pd

# Örnek veri kümemiz
veri = {‘İsim’: [‘Ali’, ‘Ayşe’, ‘Fatma’],
‘Yaş’: [25, 30, 22]}

# Bir DataFrame yaratalım
df = pd.DataFrame(veri)

# Buna yeni bir sütun ekleyelim
df[‘Şehir’] = [‘İstanbul’, ‘Ankara’, ‘İzmir’]

# Sütun eklenmiş DataFrame’i görüntüleyelim
print(df)

2. Numpy

“Sayısal Python” (numerical Python) ifadesinin kısaltmasından adını alan Numpy, Python için temel bilimsel hesaplama kütüphanelerinden biri. “Series” (dizi) tipi nesneleri (özellikle çok boyutlu diziler) ve bu diziler üzerinde işlem yapabilecek metotları içeriyor. “ndarray” adlı özel dizi tipiyle, Python’daki liste yapısından çok daha hızlı ve verimli hesaplamalar yapabiliyor.

Numpy sayesinde veriyi temsil etmek, analiz etmek ve işlemek için matris ve vektör gibi matematiksel yapıları kullanabilirsiniz. Bu kütüphanenin temel avantajı, istatistiksel analizler yaparken hesaplamaları çabuklaştırmak. C dilinde yazılan Numpy; lineer cebir, Fourier dönüşümü ve rastgele sayı üretimi gibi birçok matematiksel fonksiyona doğrudan erişim imkânı sunuyor.

Numpy için en önemli metotlar

  • array(): Veriyi ndarray formuna dönüştürür.
  • arange(): Belirli bir aralıkta sayılar üretir.
  • reshape(): Dizinin şeklini değiştirir.
  • dot(): İki dizi arasındaki nokta çarpımını (dizi elemanlarının çarpımlarının toplamı) hesaplar.
  • sum(), mean(), std(): Dizi üzerinde toplama, ortalama alma ve standart sapma belirleme gibi işlemler gerçekleştirir.

3. Matplotlib

Matplotlib, Python programlama dili için kapsamlı bir 2 boyutlu (2D) çizim kütüphanesi. Temel amacı; bilimsel görselleştirmeler, grafikler ve figürler oluşturmak için Python’a yüksek kaliteli çizim yeteneği sağlamak. Birçok platformda çalışabilir ve çok sayıda çıktı formatını destekler.

Veri gazeteciliği, karmaşık veri kümelerini anlaşılır bir şekilde görselleştirmeyi amaçlar. Matplotlib, bu amacı gerçekleştirmek için güçlü bir araç takımı sunuyor. Pasta grafiklerden histogramlara dek farklı görselleştirme yöntemleriyle verilere dayalı hikâyenizi derinleştirebilirsiniz.

Matplotlib, özelleştirilebilir bir kütüphane. Grafiklerin görünümünü, boyutlarını, renklerini vb. dilediğiniz gibi değiştirebilirsiniz. Hatta etkileşimli görselleştirmeler de yaratabilirsiniz.

Matplotlib için en önemli metotlar

  • plot(): Basit çizgi grafikleri oluşturur.
  • scatter(): Nokta dağılım grafikleri için kullanılır.
  • bar(), barh(): Dikey ve yatay sütun grafikleri oluşturur.
  • hist(): Histogramlar oluşturmak için kullanılır.
  • xlabel(), ylabel(), title(): Grafiklere etiket ve başlık eklemek için kullanılır.

4. Seaborn

Seaborn da Python için veri görselleştirme kütüphanesi. Matplotlib üzerine inşa edilmiş ve bu kütüphaneyle birlikte çalışırken daha estetik ve bilgilendirici grafikler oluşturmayı kolaylaştırıyor. Temaları destekliyor, ayrıca renk paletleriyle ve istatistiksel metotlarla zenginleştirilmiş.

Seaborn‘un önceliği, veri görselleştirme sürecini basitleştirirken aynı zamanda daha estetik ve dikkat çekici grafikler oluşturulmasını sağlamak. Bu kütüphanenin sunduğu görselleştirme imkânları, karmaşık veri kümelerinin iç yapısının anlaşılmasında ve anlatılmasında işleri kolaylaştırıyor.

Seaborn için en önemli metotlar

  • sns.distplot(): Histogram ve yoğunluk grafikleri oluşturur.
  • sns.boxplot(): Kutu grafiği oluşturur, verinin dağılımını ve uçdeğerleri gösterir.
  • sns.heatmap(): Matris formatındaki veri için renkli ısı haritaları çizer.
  • sns.pairplot(): Birden çok değişkenin eşleşen ilişkilerini gösteren grafik matrisleri oluşturur.
  • sns.scatterplot(): İki değişken arasındaki ilişkiyi göstermek için dağılım grafiği çizer.
Seaborn kütüphanesinin sunduğu veri görselleştirme biçimlerinden bazıları

5. Beautiful Soup

Beautiful Soup, Python için en popüler web kazıma (web scraping) kütüphanelerinden biri. HTML ve XML sayfalarında gezinmeyi, arama yapmayı ve veri çekmeyi kolaylaştırır. Web’den veri çekmek isteyenler için tasarlanmış bu kütüphane, ilgili belgeyi ağaç yapısına dönüştürerek etkili bir şekilde işlem yapmayı sağlar.

Bu açıdan Beautiful Soup, üstte sıraladığımız kütüphanelerden ayrılıyor. Öncekiler veri analizi ve görselleştirme işlevlerine sahipken Beautiful Soup dijital veri toplamanıza yarıyor. Bu kütüphaneyi kullanarak örneğin belirlediğiniz haber sitelerine girip dilediğiniz verileri (mesela tablolar, görseller, listeler vb.) otomatik olarak bilgisayarınıza kaydedecek bir Python betiği yazabilirsiniz.

Beautiful Soup için en önemli metotlar

  • BeautifulSoup(): HTML veya XML dokümanını ağaç yapısına dönüştürür.
  • find(): Belirli bir etiketle ilk eşleşen öğeyi döndürür.
  • find_all(): Belirli bir etiketle eşleşen tüm ögeleri bir liste olarak döndürür.
  • select(): CSS seçicilere göre ögeleri seçer.
  • get_text(): Bir etiketin içerdiği metni döndürür.

6. Scrapy

Scrapy, Python için gelişmiş bir web kazıma ve veri çekme (data crawling) çerçevesi. Birden çok web sayfasını gezip verileri çekmek için oldukça güçlü. Asenkron işleme özellikleri sayesinde hızlı ve etkili bir şekilde veri toplayabiliyor. Otomatikleştirilmiş ve ölçeklenebilir bir çözüm sağlıyor.

Orta ila büyük ölçekli veri toplama projeleri için ideal olan Scrapy; oturum yönetimi, kullanıcı değiştirme, proxy desteği ve çok daha fazlasını dâhili özellikleri arasında sunuyor. Modüler yapısı ve geniş özellik seti, her türlü web kaynağından veri çekme ihtiyaçlarını karşılamaya yetecek kapasitede.

Scrapy için en önemli metotlar

  • start_requests(): Kazıma işlemine başlamadan önce başlangıç URL’lerini tanımlamak için kullanılır.
  • parse(): İndirilen bir web sayfasındaki veriyi ayrıştırmak için kullanılır.
  • Item: Toplanan veriyi yapılandırmak ve organize etmek için özel bir veri konteyneridir.
  • Spider: Bir web sitesinden veri çekme işlemini tanımlayan ana sınıftır.
  • Selector: Web sayfasındaki belirli unsurları (element) seçmek ve ayrıştırmak için kullanılır.

7. Requests

Requests, Python için HTTP istekleri yapmayı basit ve kullanıcı dostu hâle getiren standart bir kütüphane. Temiz bir uygulama programlama arayüzü (API) yapısına sahip olan bu kütüphane, web üzerindeki kaynaklara erişim için ihtiyaç duyulan birçok işlevi kolaylıkla gerçekleştirmenizi sağlıyor.

Otomatik içerik kodlama ve çözme, oturumları sürekli tutma ve tarayıcı benzeri özelliklerle donatılan Requests, çeşitli kimlik doğrulama türlerini destekliyor.

Requests için en önemli metotlar

  • get(): Belirtilen URL’den veri almak için GET isteği yapar.
  • post(): Belirtilen URL’e veri göndermek için POST isteği yapar.
  • put(), delete(): Sırasıyla PUT ve DELETE HTTP isteklerini gerçekleştirmek için kullanılır.
  • response.text: Yanıt olarak gelen içeriği metin olarak döndürür.
  • response.json(): Yanıtı JSON formatında döndürür.
En popüler Python kütüphaneleri” aratıldığında Google’ın görsel olarak sunduğu sonuç bu. Veri gazeteciliği özelinde biz bu listeden sadece Numpy, Matplotlib, Scrapy, Requests ve elbette Pandas‘ı seçtik. Seçtiğimiz diğer 5 kütüphane ise genel olarak en popülerler arasında yok.

8. GeoPandas

GeoPandas, Python için coğrafi verilerle çalışmayı kolaylaştıran bir kütüphane. Pandas kütüphanesinin gücünü kullanarak, coğrafi veri yapıları ve işlevlerini bir araya getiriyor. Bu sayede mekânsal veri analizini ve manipülasyonunu kolaylaştırıyor.

Veri gazetecileri, coğrafi bilgiler içeren verilerle sıkça karşılaşır. Bu tür veriler, belirli bölgelerdeki olayları veya eğilimleri analiz edip görselleştirmek için oldukça değerlidir. GeoPandas, gazetecilere bu coğrafi verileri okuma, yazma, analiz etme ve görselleştirme imkânı tanıyor. Böylece haritalar üzerinde etkileyici görsel hikâyeler oluşturabilirler.

Shapely ve Fiona gibi kütüphanelerin özelliklerini entegre eden GeoPandas, karmaşık mekânsal işlemleri Pandas benzeri basit komutlarla gerçekleştirmenizi sağlıyor. Geometrik şekillerle işlem yapmaya, mekânsal sorgular gerçekleştirmeye ve coğrafi veriyi dönüştürmeye yarayan metotları var.

GeoPandas için en önemli metotlar

  • read_file(): Coğrafi veri formatlarında (örn. GeoJSON, Shapefile) dosyaları okumak için kullanılır.
  • to_file(): Mekânsal veriyi belirli bir formatta kaydetmek için kullanılır.
  • geocode(): Adresleri coğrafi koordinatlara dönüştürür.
  • sjoin(): İki coğrafi veri setini mekânsal birleştirme işlemi yaparak birleştirir.
  • plot(): Coğrafi veriyi basit bir şekilde harita üzerinde görselleştirir.

9. Folium

Etkileşimli haritalar oluşturmaya odaklanan bir kütüphane olan Folium, Leaflet.js’in gücünü Python ile birleştirip coğrafi veriyi dinamik olarak görselleştiriyor.

İçeriklere kolayca entegre edilebilen, özelleştirilebilir ve etkileşimli haritalar sunmak isteyenlerin tercih ettiği başlıca Python kütüphanelerinden olan Folium, JavaScript kodu yazma ihtiyacını ortadan kaldırıyor.

Mekânsal verilere dayalı hikayeleri görselleştirmek ve okuyucularına etkileyici coğrafi analizler sunmak için ideal bir seçenek olan Folium’un haritalarını Jupyter Notebook içerisinde de görüntüleyebilirsiniz

Folium için en önemli metotlar

  • Map(): Belirli bir konum ve yakınlaştırma seviyesiyle bir harita oluşturur.
  • Marker(): Harita üzerine belirli bir konumda işaretçi ekler.
  • Popup(): İşaretçilere veya harita özelliklerine bilgi baloncukları ekler.
  • Circle() ve CircleMarker(): Harita üzerine daireler ekler, genellikle yoğunluk veya kümelenme gibi bilgileri temsil etmek için kullanılır.
  • Choropleth(): Renk tonlu (koroplet) haritalar oluşturarak coğrafi bölgeler arasındaki istatistiksel farklılıkları gösterir.

10. Agate

Buraya kadar saydığımız Python kütüphanelerini; veri analistlerinden istatistikçilere, tıbbî araştırmacılardan kartograflara dek farklı alanlarda birçok uzman ve bilim insanı kullanıyor. Eğer Pandas ve Numpy gibi kütüphaneler bir haberci olarak size karmaşık geliyorsa, onların veri gazetecileri için özel olarak geliştirilmiş sade bir sürümü olan Agate‘yi deneyebilirsiniz.

Agate, gazetecilikte karşılaşılan veri analizi ihtiyaçlarına özgü araçlar ve metotlar sunuyor. Pandas’tan daha basit ve spesifik bir kullanım amacına hizmet ediyor. Büyük veri setlerinde gruplama, sıralama, filtreleme gibi temel işlemleri Agate ile hızlıca yapabilirsiniz. Bu kütüphanenin veri görselleştirmeleri ise estetiği değil, işlevselliği önceliklendiriyor.

Agate için en önemli metotlar

  • Table.from_csv(): CSV dosyasını okumak için kullanılır.
  • group_by(): Belirli bir sütuna göre veriyi gruplar.
  • order_by(): Belirli bir sütuna göre veriyi sıralar.
  • where(): Veri kümesindeki belirli koşulları karşılayan satırları filtreler.
  • pivot(): Veri kümesini “pivot tablo” formatına dönüştürmek için kullanılır.
  • print_table(): Veri kümesini tablo formatında ekrana yazdırır.

Veri gazeteciliği için sadece 10 Python kütüphanesi seçtik ama daha binlercesi var.

Örneğin veri dosyalarını işlemek için standart Python kütüphaneleri olan csv ve json, etkileşimli görselleştirmeler için Plotly ve Bokeh, büyük veri kümeleriyle çalışmak için PyTables ve Datashader, metin madenciliği ve doğal dil işleme için TextBlob ve Zemberek, tahminleme için sklearn ve statsmodels, SQL veritabanlarını sorgu yazmadan kullanmak için SQLAlchemy ve daha nicesi…

Gazetecinin, hangi veri türleriyle ve ne tür analizlerle ilgilendiğini değerlendirip kendisine ve elindeki işe en uygun Python kütüphanesini seçmesi gerekiyor.

İLGİNİZİ ÇEKEBİLİR: VERİ GAZETECİLİĞİ

Türkiye’nin haber çölleri: 973 ilçeden 1.1 milyon haberi taradık, 3 haritayla anlatıyoruz

92.892 siyaset haberinin okurda uyandırdığı duyguları yapay zekâyla analiz ettik

100 haber sitesini inceledik: Bizi en çok gözetleyen A Haber, en yavaşı Takvim

İlçe ilçe seçim sonuçları: 5 haritada cumhurbaşkanlığı seçimi

Veri gazeteciliği için dünyadan 8 kaynak ve ilham veren örnekler

Journo

Yeni nesil medya ve gazetecilik sitesi. Gazetecilere yönelik bağımsız bir dijital platform olan Journo; medyanın gelir modellerine, yeni haber üretim teknolojilerine ve medya çalışanlarının yaşamına odaklanıyor, sürdürülebilir bir sektör için çözümler öneriyor.

Journo E-Bülten