Skip to main content

ysk

Temizlenmis YSK secim sonuclari verisi.

Kurulum

pip install ysk

Varsayilan kurulum yalnizca veri okuma ve tablo uretme bagimliliklarini kurar. Tarihsel ilce hizalama icin cografya bagimliligini ekleyin:

pip install "ysk[cografya]"

Harita cizimi icin harita bagimliligini ekleyin:

pip install "ysk[harita]"

Tum opsiyonel bagimliliklari birlikte kurmak icin:

pip install "ysk[cografya,harita]"
# veya
pip install "ysk[all]"

İçerik

Bu repo, src/ysk/data/secim.zarr altinda tek bir xarray/zarr veri seti olarak duzenlenmis YSK sonuclarini icerir. Veri seti; secim tarihi, makam, yer ve tercih koordinatlariyla okunabilir. Paket icindeki yardimci fonksiyonlar bu veriyi analiz icin hazir pandas tablolarina donusturur.

Yer bilgisi il, ilce, belde, mahalle ve sandik seviyelerinde tutulur. Oylar parti, aday, ittifak veya diger tercih adlariyla kolonlasir; secmen sayilari sonuc tablolarinda yer alir. Cinsiyet kirilimi level="ilce" ve level="il" sonuclarina eklenir.

Ana dosya:

src/ysk/data/secim.zarr

Örnek

Harita sinirlari ve cizim yardimcilari opsiyonel turkiye paketinden gelir:

import turkiye
import ysk


def set_winner(df):
  oy = ysk.filter_columns(df, types=ysk.Kolon.PARTI | ysk.Kolon.BAGIMSIZ)
  toplam = oy.sum(axis=1).where(lambda deger: deger > 0)
  df[["birinci_parti", "birinci_parti_oy"]] = oy.agg(["idxmax", "max"], axis=1)
  df["birinci_parti_oran"] = df["birinci_parti_oy"] / toplam * 100


ilce = ysk.election_results(
  ysk.Secim.YEREL_2024,
  ysk.Makam.BELEDIYE_BASKANI,
  level="ilce",
)

set_winner(ilce)

ax = turkiye.plot(
  ilce,
  color="birinci_parti",
  color_map=ysk.PARTI_RENKLERI,
  legend=True,
  backend="matplotlib",
)
ax.set_title("2024 Yerel Secimleri")

Ornek cikti:

2024 Yerel Secimleri ilce bazinda birinci parti haritasi

En Kolay Kullanim

import ysk

df = ysk.election_results(
  ysk.Secim.YEREL_2024,
  ysk.Makam.BUYUKSEHIR_BELEDIYE_BASKANI,
  level="ilce",
)
df.head()

Sonuc, analiz icin hazir bir pandas DataFrame'dir:

                         secmen  oy_kullanan  gecerli  gecersiz  ak_parti  chp ...
il       ilce
ISTANBUL ADALAR            ...          ...      ...       ...       ...  ...
         ARNAVUTKOY        ...          ...      ...       ...       ...  ...

Secim ve Makam

election icin Secim, office icin Makam enumlarini kullanin.

from ysk import Makam, Secim, election_results

election_results(Secim.YEREL_2024, Makam.BUYUKSEHIR_BELEDIYE_BASKANI)
election_results(Secim.YEREL_2024, Makam.BELEDIYE_MECLISI)
election_results(Secim.GENEL_2023, Makam.CUMHURBASKANI)
election_results(Secim.GENEL_2023, Makam.MILLETVEKILI)

Birden fazla secimi ayni anda alabilirsiniz:

df = election_results(
  [Secim.YEREL_2019, Secim.YEREL_2024],
  Makam.BUYUKSEHIR_BELEDIYE_BASKANI,
  province="ISTANBUL",
  district="USKUDAR",
)

df.head()

Bu durumda kolonlar MultiIndex olur:

secim       2019-03-31                  2024-03-31
alan        secmen  gecerli  chp ...    secmen  gecerli  chp ...
il ilce ...

Birden fazla makam da birlikte secilebilir:

df = election_results(
  Secim.YEREL_2024,
  [Makam.BUYUKSEHIR_BELEDIYE_BASKANI, Makam.BELEDIYE_MECLISI],
  province="ISTANBUL",
  level="ilce",
)

Seviyeler

level parametresi tablonun hangi kirilimda donecegini belirler:

election_results(Secim.YEREL_2024, Makam.BUYUKSEHIR_BELEDIYE_BASKANI, level="sandik")
election_results(Secim.YEREL_2024, Makam.BUYUKSEHIR_BELEDIYE_BASKANI, level="mahalle")
election_results(Secim.YEREL_2024, Makam.BUYUKSEHIR_BELEDIYE_BASKANI, level="belde")
election_results(Secim.YEREL_2024, Makam.BUYUKSEHIR_BELEDIYE_BASKANI, level="ilce")
election_results(Secim.YEREL_2024, Makam.BUYUKSEHIR_BELEDIYE_BASKANI, level="il")

sandik seviyesi yurt ici sandiklari, gumruk ve ulke satirlarini birlikte tutar. Daha yuksek seviyeler sandik verisinden gruplanarak hesaplanir.

Il ve Ilce

ankara = election_results(
  Secim.YEREL_2024,
  Makam.BUYUKSEHIR_BELEDIYE_BASKANI,
  province="ANKARA",
  level="ilce",
)
cankaya = election_results(
  Secim.YEREL_2024,
  Makam.BUYUKSEHIR_BELEDIYE_BASKANI,
  province="ANKARA",
  district="CANKAYA",
)

Ilce adlarinda bazi tarihsel farklar normalize edilir. Ornegin ONDOKUZMAYIS ve 19 MAYIS ayni ad altinda hizalanir. SEMDINLI - DERECIK gibi kaynak adlari temizlenerek ilce ve belde bilgisi ayrilir.

Birden fazla secimi karsilastirirken, sonradan ilce olan yerleri eski idari sinirlara toplamak icin align_historical_divisions=True argumanini kullanabilirsiniz. Bu secenek yalnizca level="ilce" sonuclarinda etkilidir: turkiye gerektirir; gerekirse pip install "ysk[cografya]" ile kurun.

df = election_results(
  [Secim.YEREL_2014, Secim.YEREL_2024],
  Makam.BELEDIYE_BASKANI,
  province="HAKKARI",
  level="ilce",
  align_historical_divisions=True,
)

Oy, Secmen ve Cinsiyet

Donen tabloda, varsa toplam kolonlari basta gelir:

secmen, oy_kullanan, gecerli, gecersiz,
gecerli_itirazsiz, gecerli_itirazli, kadin, erkek

Bunlardan sonra parti, aday, ittifak veya tercih kolonlari gelir.

Ilce seviyesinde kadin secmen sayisi ile CHP oyu arasindaki korelasyon:

df = election_results(
  Secim.YEREL_2024,
  Makam.BUYUKSEHIR_BELEDIYE_BASKANI,
  province="ISTANBUL",
  level="ilce",
)

df[["kadin", "chp"]].corr()

Sadece belirli tercihleri almak icin:

df = election_results(
  Secim.YEREL_2024,
  Makam.BUYUKSEHIR_BELEDIYE_BASKANI,
  province="ISTANBUL",
  level="ilce",
  choices=["chp", "ak_parti", "mhp"],
)

Sandik seviyesinde oy ve secmen bilgilerini birlikte kullanmak:

df = election_results(
  Secim.YEREL_2024,
  Makam.BUYUKSEHIR_BELEDIYE_BASKANI,
  province="ISTANBUL",
  district="USKUDAR",
)

df[["secmen", "chp", "ak_parti"]].head()

kadin ve erkek ilce seviyesinde tutulan demografik kolonlardir; sandik seviyesinde tekrarlanmazlar. Bu kolonlar level="ilce" ve level="il" sonuclarina ayri demografi verisinden eklenir.

Kolon gruplarini filtrelemek icin:

from ysk import Kolon, filter_columns

partiler = filter_columns(df, types=Kolon.PARTI)
toplam_ve_bagimsiz = filter_columns(df, types=Kolon.TOPLAM | Kolon.BAGIMSIZ)

Ham Xarray Verisi

Hazir zarr veri setini dogrudan xarray ile acmak icin:

from ysk import load_dataset

ds = load_dataset()
ds

Alternatif:

import xarray as xr

ds = xr.open_zarr("src/ysk/data/secim.zarr")

Ornek secim:

from ysk import Makam, Secim

bbb_2024 = ds.sel(secim=Secim.YEREL_2024).sel(makam=Makam.BUYUKSEHIR_BELEDIYE_BASKANI)

Eksenleri ve degiskenleri gormek icin:

ds.dims
ds.coords
list(ds.data_vars)

Tum zarr'i tek seferde DataFrame'e cevirmek bellek tasmasina yol acabilir:

# Bunu genelde yapmayin:
# ds.oy.to_dataframe()

Once secim, makam, il veya ilce ile daraltmak ya da election_results() yardimcisini kullanmak daha guvenlidir.

Veri Formati

Ana format zarr'dir. Zarr, xarray ile uyumlu, parca parca okunabilen N-boyutlu veri saklama formatidir. Bu repo icin dogal model secim, makam, yer ve tercih koordinatlari olan etiketli bir veri setidir.

Parquet tablo/SQL isleri icin daha uygundur. Bu repoda zarr kanonik veri formati olarak tutulur; analiz tablolarini election_results() uretir.

Metadata

Release files for ysk 0.1.3

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for ysk 0.1.3
File Size Uploaded
ysk-0.1.3.tar.gz 123.8 MB Details

Built distribution (wheel)

Table of built distributions (wheels) for ysk 0.1.3
File Interpreter ABI Platform
ysk-0.1.3-py3-none-any.whl Python 3 none any Details

Total release size: 248.0 MB

Release files / ysk-0.1.3.tar.gz

Download URL ysk-0.1.3.tar.gz
Size 123.8 MB
Tags Source
SHA-256 checksum
How to use checksums
79fced7b9bc9b1d3a7ffdde4ee362ea16d99002bcbd4958b47c1775437c044a6
BLAKE2b-256 checksum
How to use checksums
44fab6bafdc4611f6048a198dbbccd34de8a473cdee75f656ddd20f06ca361d4
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/6.1.0 CPython/3.13.12

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Jun 6, 2026.

Transparency log

Release files / ysk-0.1.3-py3-none-any.whl

Download URL ysk-0.1.3-py3-none-any.whl
Size 124.2 MB
Tags Python 3
SHA-256 checksum
How to use checksums
9792ab07b2fb9facd23a0b189d873740646a2c1ad02544a3d10870857eb70118
BLAKE2b-256 checksum
How to use checksums
54dc2076cdb0214006fdb574ebcd75476b19897a856f67d80091fb007a446633
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/6.1.0 CPython/3.13.12

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Jun 6, 2026.

Transparency log

Release history Release notifications | RSS feed

This release

0.1.3 This release

2 release files

0.1.0

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page