datafc v1.0.0 Yayında!

Paket
Author

Uraz Akgül

Published

February 5, 2025

Paket ve Blog

Futbol analitiği alanındaki çalışmalarımı bir adım ileriye taşımak adına geliştirdiğim datafc paketinin ilk sürümünü geçtiğimiz hafta yayınladım.

Kullanıma başlamak için terminalde aşağıdaki komutu çalıştırabilirsiniz:

pip install datafc

Paketle ilgili daha fazla bilgiye ulaşmak için PyPI veya GitHub sayfasını ziyaret edebilirsiniz.

Bununla birlikte, datafc çatısı altında ve veri, kod ve futbol üçgeninde içerikler üretmek amacıyla blog sayfası oluşturdum.

İlk Sürümün Amacı

Futbol analitiğinde veriye dayalı kararlar almak için doğru, temiz ve erişilebilir veri kritik bir öneme sahiptir. datafc, bu ihtiyacı karşılamak amacıyla veri çekme, işleme ve dışa aktarma süreçlerini optimize eden bir Python paketi olarak geliştirildi.

Temel Süreçler

  • Veri Çekme: Futbol verilerinin çeşitli kaynaklardan otomatik olarak toplanmasını kapsar.
  • Veri İşleme: Toplanan ham verilerin analize uygun hale getirilmesi için çeşitli işlemler uygulanır.
  • Veri Dışa Aktarma: İşlenmiş veriler, kullanıcıların kendi analiz süreçlerinde veya farklı platformlarda kullanabilmesi için çeşitli formatlarda dışa aktarılabilir.

Bu üç aşamalı yapı sayesinde datafc, futbol verisiyle çalışan herkes için hızlı, pratik ve güvenilir bir çözüm sunmayı hedefliyor.

Selenium Kullanımı

Futbol verilerini güvenilir ve tutarlı bir şekilde çekebilmek, analitik süreçlerin sağlıklı işlemesi için kritik bir gerekliliktir. Ancak, doğrudan API veya HTTP istekleriyle veri çekme girişimlerimde aynı maç verileri için yapılan farklı taleplerin tutarsız sonuçlar ürettiğini gözlemledim.

Bu sorunu aşmak ve daha güvenilir bir veri çekme süreci oluşturmak için datafc, Selenium WebDriver kullanmaktadır. Bu sayede datafc, Sofascore gibi platformlardan veriyi doğrudan tarayıcı üzerinden yüklenen sayfa içeriğinden alarak eksiksiz ve tutarlı bir şekilde futbol analitiği çalışmalarında sağlam bir temel oluşturur.

match_data ve lineups_data Bağımlılıkları

datafc, veri çekme sürecinin verimliliğini artırmak ve gereksiz istekleri önlemek amacıyla, belirli fonksiyonları doğrudan veri kaynağına erişmek yerine merkezi veri yapılarına bağımlı olarak çalışacak şekilde tasarlandı.

Bu yapı sayesinde:

  • Her fonksiyonun ayrı ayrı veri çekme isteği göndermesi engellenir.
  • Gereksiz ağ trafiği önlenerek performans optimizasyonu sağlanır.

match_data

Maçlara ilişkin temel bilgileri içerdiğinden, aşağıdaki altı fonksiyon, veriyi yeniden çekmek yerine mevcut match_data çıktısını kullanır:

  • match_odds_data
  • match_stats_data
  • momentum_data
  • lineups_data
  • substitutions_data
  • goal_networks_data
  • shots_data

lineups_data

Oyuncu kadrolarını içerdiğinden, coordinates_data fonksiyonu doğrudan bu veriyi kullanarak gereksiz veri çekimlerini önler. Ancak, lineups_data fonksiyonunun çalışabilmesi için match_data gereklidir.

standings_data

Tamamen bağımsızdır ve herhangi bir veri kaynağına bağımlı olmadan doğrudan çalıştırılabilir.

Bu bağımlılık yönetimi, veri çekme sürecini hızlandırarak gereksiz tekrarları ortadan kaldırmak ve analiz süreçlerini daha verimli hale getirmek için geliştirilmiştir.

Uygulama

Bir örnek senaryo üzerinden datafc kullanımını inceleyelim.

Süper Lig 2024/25 sezonunun 22. haftasındaki 10 farklı veriyi çekmek istediğimizi düşünelim.

Süper Lig ve 2024/25 sezonuna ait ID bilgileri sırasıyla 52 ve 63814 olarak belirlenmiştir. Bu bilgileri doğrudan Sofascore’un web sitesi üzerinden temin edebilirsiniz.

Paketin İçe Aktarılması

from datafc.sofascore import (
    match_data,
    match_odds_data,
    match_stats_data,
    momentum_data,
    lineups_data,
    coordinates_data,
    substitutions_data,
    goal_networks_data,
    shots_data,
    standings_data
)

match_data Bağımlı Çalışan Fonksiyonlar

match_df = match_data(
    tournament_id=52,
    season_id=63814,
    week_number=22
)

match_odds_data

match_odds_df = match_odds_data(
    match_df=match_df
)

match_stats_data

match_stats_df = match_stats_data(
    match_df=match_df
)

momentum_data

momentum_df = momentum_data(
    match_df=match_df
)

lineups_data

lineups_df = lineups_data(
    match_df=match_df
)

substitutions_data

substitutions_df = substitutions_data(
    match_df=match_df
)

goal_networks_data

goal_networks_df = goal_networks_data(
    match_df=match_df
)

shots_data

shots_df = shots_data(
    match_df=match_df
)

lineups_data Bağımlı Çalışan Fonksiyonlar

lineups_data da match_data bağımlı çalıştığı için aslında öncesinde çekmiş olduk.

coordinates_data

coordinates_df = coordinates_data(
    lineups_df=lineups_df
)

Bağımlı Çalışmayan Fonksiyon

standings_data, herhangi bir bağımlılık olmadan çalışmaktadır.

standings_data

standings_df = standings_data(
    tournament_id=52,
    season_id=63814
)

Sonuç

datafc, uzun süredir lokal ortamda geliştirdiğim ve özellikle web uygulamamda aktif olarak kullandığım kodların paket haline getirilmiş versiyonudur. Futbol verilerini daha erişilebilir, düzenli ve verimli bir şekilde yönetmek için oluşturulan bu paket, veri çekme, işleme ve dışa aktarma süreçlerini otomatikleştirerek analitik çalışmaların hızını ve doğruluğunu artırmayı amaçlamaktadır.

Henüz v1.0.0 sürümünde olmasına rağmen, zamanla gelecek yeni özellikler, performans iyileştirmeleri ve genişletilmiş veri kaynaklarıyla futbol analitiği dünyasında önemli bir yer edinmeyi hedeflemektedir. Gelecekteki sürümlerde, farklı veri sağlayıcılarıyla entegrasyon, analiz ve görselleştirme araçları, gelişmiş istatistiksel modelleme gibi pek çok yeni özellik planlanmaktadır.

Bu yolculukta, geri bildirimleriniz ve katkılarınız, paketin gelişimine büyük değer katacaktır. datafc’nin sunduğu altyapıyı daha da ileriye taşımak ve futbol verisiyle çalışan herkes için güçlü bir kaynak haline getirmek en büyük hedefimdir.

Futbol analitiğine ilgi duyan herkesin bu ekosisteme dahil olması ve datafc’yi kendi projelerinde kullanarak katkı sağlaması dileğiyle.

Sevgiler.