Günümüz dünyasında veri, adeta yeni bir petrol niteliğindedir. İşletmelerden bilimsel araştırmalara, sosyal medyadan finans sektörüne kadar her alanda büyük miktarda veri üretilmekte ve bu verilerin doğru bir şekilde analiz edilmesi, kritik kararlar alınmasında hayati bir rol oynamaktadır. İşte bu noktada Python programlama dili ve onun sunduğu güçlü kütüphaneler, veri analizi süreçlerini basitleştiren ve hızlandıran temel araçlar haline gelmiştir. Bu kütüphanelerin başında ise hiç şüphesiz Pandas gelmektedir. Bu blog yazısında, Pandas kütüphanesinin ne olduğunu, neden bu kadar popüler olduğunu, temel veri yapılarını ve veri analizi süreçlerinde nasıl kullanıldığını adım adım keşfedeceğiz. Veri bilimine ilgi duyan herkes için Pandas, başlangıç noktasının çok ötesinde, vazgeçilmez bir araçtır.
Pandas Nedir ve Neden Önemlidir?
Pandas, “Panel Data” kelimesinin kısaltması olarak ortaya çıkmış, Python programlama dili için geliştirilmiş, açık kaynaklı ve yüksek performanslı bir veri manipülasyonu ve analizi kütüphanesidir. Hadley Wickham’ın R dilindeki data.frame yapısından esinlenerek tasarlanmıştır ve özellikle etiketli veri ile çalışmak üzere optimize edilmiştir. Pandas’ı bu kadar değerli kılan en önemli özelliklerinden biri, karmaşık veya düzenli fark etmeksizin her türlü veri setini kolayca yükleyebilmesi, işleyebilmesi ve analiz edebilmesidir.
Bir veri bilimci veya veri analisti için Pandas, adeta bir İsviçre çakısı gibidir. Excel, SQL veritabanları veya diğer veri kaynaklarından alınan ham veriyi anlamlı bilgilere dönüştürmek için ihtiyaç duyulan tüm araçları tek bir çatı altında sunar. Pandas sayesinde, eksik verileri temizleyebilir, veri setlerini birleştirebilir, filtreleyebilir, gruplandırabilir ve özet istatistikler üretebilirsiniz. Tüm bunlar, genellikle sadece birkaç satır kodla ve yüksek performansla gerçekleştirilebilir. Bu esneklik ve güç, Pandas’ı veri analizi projelerinin vazgeçilmez bir parçası haline getirmektedir. Hem küçük ölçekli veri setleri hem de milyonlarca satırlık büyük veri setleri üzerinde kolayca işlem yapabilme yeteneği, onu sektördeki en çok tercih edilen kütüphanelerden biri yapmıştır. Veriyi hızlıca keşfetmek ve dönüştürmek için ideal bir araçtır.
Kurulum ve Temel Veri Yapıları
Pandas Kurulumu
Pandas’ı kullanmaya başlamak oldukça basittir. Eğer Python kurulu ise, genellikle komut istemcisi veya terminal üzerinden aşağıdaki komutu kullanarak kurulumu gerçekleştirebilirsiniz:
pip install pandas
Eğer Anaconda dağıtımını kullanıyorsanız, Pandas genellikle kurulu olarak gelir. Değilse, conda install pandas komutunu kullanabilirsiniz. Kurulum tamamlandıktan sonra, kodlarınızda kütüphaneyi içeri aktarmak için geleneksel olarak şu ifade kullanılır:
import pandas as pd
Buradaki pd takma adı, Pandas fonksiyonlarına daha kısa yoldan erişmenizi sağlar ve veri analizi topluluğunda standart bir kullanımdır. Bu sayede, daha okunabilir ve kısa kodlar yazabilirsiniz.
Series (Seriler)
Pandas’ın iki temel veri yapısından ilki Series‘tir. Bir Series, tek boyutlu, etiketli bir dizidir ve temelde NumPy dizisine benzer. Ancak NumPy dizilerinden farklı olarak, Series’in her bir öğesine bir etiket (indeks) atanabilir. Bu etiketler, sayısal olabileceği gibi metinsel de olabilir. Bir Series, bir sütunluk veri olarak düşünebilirsiniz.
- Özellikler:
- Tek boyutlu yapıya sahiptir ve bir listenin veya NumPy dizisinin etiketli bir versiyonudur.
- Her elemana özel bir etiket (indeks) atanabilir, bu da verilere erişimi kolaylaştırır.
- Farklı veri tiplerini (integer, float, string, boolean vb.) barındırabilir.
- Pandas DataFrame’lerinin yapı taşıdır; her DataFrame sütunu bir Series’tir.
Basit bir Series örneği:
import pandas as pd
s = pd.Series([10, 20, 30, 40, 50], index=['a', 'b', 'c', 'd', 'e'])
print(s)
Bu örnekte, sayısal değerlere ‘a’, ‘b’, ‘c’ gibi etiketler atanmıştır, bu da verilere indeks kullanarak erişimi esnek hale getirir.
DataFrame (Veri Çerçeveleri)
Pandas’ın en çok kullanılan ve en güçlü veri yapısı DataFrame‘dir. DataFrame, iki boyutlu, tablo benzeri bir veri yapısıdır; yani satırlara ve sütunlara sahiptir. İlişkisel bir veritabanı tablosuna veya Excel elektronik tablosuna çok benzer. Her sütun bir Series’ten oluşur ve farklı sütunlar farklı veri tiplerini barındırabilir.
- Özellikler:
- İki boyutlu, tablo benzeri yapıya sahiptir ve verileri düzenli bir şekilde tutar.
- Satırlar ve sütunlardan oluşur; her satır bir gözlemi, her sütun bir özelliği temsil eder.
- Her sütun bir Series’tir ve kendi adıyla (etiketiyle) anılır, bu sayede sütunlara isimleriyle erişilebilir.
- Farklı veri tiplerini (sayı, metin, tarih vb.) aynı anda barındırabilir, bu da karmaşık veri setleriyle çalışmayı kolaylaştırır.
- Veri analizi ve manipülasyonu için ana yapıdır; çoğu işlem bu yapı üzerinde gerçekleştirilir.
Bir DataFrame oluşturmanın birçok yolu vardır, ancak en yaygın olanı sözlüklerden veya NumPy dizilerinden yararlanmaktır:
import pandas as pd
data = {'Ad': ['Ali', 'Ayşe', 'Can'],
'Yaş': [30, 24, 22],
'Şehir': ['Ankara', 'İzmir', 'İstanbul']}
df = pd.DataFrame(data)
print(df)
DataFrame’ler, veri analizi süreçlerinin belkemiğini oluşturur. Verilerinizi düzenlemek, temizlemek, dönüştürmek ve analiz etmek için ihtiyacınız olan her şey DataFrame yapısı içerisinde mevcuttur. Bu yapının sağladığı esneklik ve zengin fonksiyon seti, veri bilimi projelerinde hızlı ve etkili sonuçlar almanızı sağlar.
Veri Yükleme ve Keşfetme
Veri Yükleme
Gerçek dünya veri analizi projelerinde, veriler genellikle harici dosyalarda bulunur. Pandas, çeşitli dosya formatlarından veri okuma ve DataFrame’e dönüştürme konusunda oldukça yeteneklidir. En yaygın kullanılan fonksiyonlar şunlardır:
pd.read_csv('dosya.csv'): Virgülle ayrılmış değerler (CSV) dosyasını okur. En sık kullanılan yöntemlerden biridir.pd.read_excel('dosya.xlsx'): Excel dosyasını okur. Birden fazla sayfa içeren Excel dosyaları için ek parametreler kullanılabilir.pd.read_sql('SELECT * FROM tablo', connection): SQL veritabanından veri çeker. Veritabanı bağlantı nesnesine ihtiyaç duyar.pd.read_json('dosya.json'): JSON dosyasını okur. Özellikle web servislerinden alınan veriler için kullanışlıdır.
Bu fonksiyonlar, genellikle veri setini doğrudan bir DataFrame’e dönüştürür ve sonraki analiz adımları için hazır hale getirir. Her fonksiyonun, dosya yolu, ayırıcı, başlık olup olmadığı gibi çeşitli parametreleri bulunur, bu da veri yükleme esnekliğini artırır. Örneğin, bir musteriler.csv dosyanız varsa:
df_musteriler = pd.read_csv('musteriler.csv')
Bu tek satır kodla, verileriniz bellekte analiz edilmeye hazır bir DataFrame’e dönüşür.
İlk Bakış: Veri Keşfi
Veriyi DataFrame’e yükledikten sonra yapmanız gereken ilk şey, veri setinizi tanımaktır. Bu “veri keşfi” adımı, veri kalitesini anlamanıza, olası sorunları (eksik değerler, yanlış veri tipleri, aykırı değerler) tespit etmenize ve analiz için yol haritası çıkarmanıza yardımcı olur. Pandas, bu amaçla kullanabileceğiniz birkaç temel metot sunar:
df.head(n): DataFrame’in ilknsatırını (varsayılan 5) gösterir. Bu, veriye hızlıca göz atmak ve genel yapısını anlamak için harikadır.df.tail(n): DataFrame’in sonnsatırını gösterir. Özellikle büyük veri setlerinde son eklenen kayıtları kontrol etmek için faydalıdır.df.info(): DataFrame hakkında özet bilgi verir; sütun adları, boş olmayan değer sayıları, veri tipleri ve bellek kullanımı gibi detayları sunar. Veri tiplerini ve eksik değer olup olmadığını hızlıca görmeyi sağlar.df.shape: DataFrame’in satır ve sütun sayısını bir tuple olarak döndürür (örneğin:(satır_sayısı, sütun_sayısı)). Veri setinin boyutunu anlamak için kullanılır.df.describe(): Sayısal sütunlar için temel istatistiksel özetleri (ortalama, standart sapma, minimum, maksimum, çeyrek değerler) hesaplar. Veri dağılımı hakkında ilk fikirleri verir.df.columns: DataFrame’deki tüm sütun adlarını listeler.df.index: DataFrame’deki tüm satır indekslerini gösterir.df.isnull().sum(): Her sütundaki eksik (NaN) değerlerin toplam sayısını verir. Eksik veri tespiti için kritik bir adımdır ve hangi sütunlarda temizleme gerektirdiğini belirler.df['sütun_adı'].value_counts(): Belirli bir sütundaki her benzersiz değerin kaç kez geçtiğini sayar. Kategorik verileri anlamak için çok kullanışlıdır.
Bu metotları kullanarak, veri setinizin genel yapısı, içeriği ve potansiyel sorunları hakkında hızlıca bilgi edinebilirsiniz. Bu ilk keşif adımı, sonraki veri temizleme ve manipülasyon süreçleri için hayati öneme sahiptir; adeta bir teşhis sürecidir.
Veri Manipülasyonu Temelleri
Veri analizi, ham veriyi doğrudan kullanmaktan ziyade, onu analiz için uygun hale getirme sürecini içerir. Pandas, bu manipülasyon görevlerini verimli bir şekilde gerçekleştirmek için zengin bir fonksiyon setine sahiptir. Bu bölüm, en temel ve sık kullanılan manipülasyon tekniklerini kapsar.
Sütun Seçimi ve Filtreleme
DataFrame’lerden belirli sütunları seçmek veya belirli koşullara uyan satırları filtrelemek, veri analizinin en temel işlemlerindendir:
- Sütun Seçimi: Tek bir sütunu seçmek için
df['sütun_adı']veyadf.sütun_adıkullanılır (ikincisi boşluk veya özel karakter içermeyen sütun adları için). Birden fazla sütun seçmek için isedf[['sütun1', 'sütun2']]şeklinde bir liste kullanılır. Bu, yalnızca ilgilendiğiniz verilere odaklanmanızı sağlar. - Satır Filtreleme: Koşullu filtreleme, belirli kriterleri karşılayan satırları seçmenizi sağlar. Örneğin,
df[df['Yaş'] > 25]komutu, Yaş sütunundaki değeri 25’ten büyük olan tüm satırları döndürür. Birden fazla koşulu&(ve) veya|(veya) operatörleriyle birleştirebilirsiniz, bu da karmaşık filtreleme senaryoları için esneklik sunar.
# Örnek: 'Şehir' sütununu seçme
sehirler = df['Şehir']
print(sehirler.head())
# Örnek: 'Yaş' sütunu 25'ten büyük ve 'Şehir'i 'Ankara' olan kişileri filtreleme
ankara_yaslilar = df[(df['Yaş'] > 25) & (df['Şehir'] == 'Ankara')]
print(ankara_yaslilar)
Bu işlemler, veri setinizden anlamlı alt kümeler çıkarmak ve daha spesifik analizler yapmak için kritik öneme sahiptir.
Eksik Veri Yönetimi
Gerçek dünya veri setleri genellikle eksik değerler (NaN – Not a Number) içerir. Pandas, bu eksik verileri tespit etmek ve işlemek için güçlü araçlar sunar:
df.isnull(): DataFrame’deki her hücrenin eksik olup olmadığını (True/False) gösteren bir Boolean DataFrame döndürür.df.notnull(): Eksik olmayan değerleri gösterir.isnull()‘un tersidir.df.dropna(): Eksik değer içeren satırları veya sütunları siler. Parametreler (axis,how) ile kontrol edilebilir (örneğin:axis=0satırları,axis=1sütunları siler;how='any'herhangi bir NaN olanı,how='all'tümü NaN olanı siler).df.fillna(value): Eksik değerleri belirli bir değerle (ortalama, medyan, sabit bir değer vb.) doldurur. Örneğin,df['Yaş'].fillna(df['Yaş'].mean())ile yaş sütunundaki eksik değerleri ortalama yaş ile doldurabilirsiniz.
Eksik veri yönetimi, veri setinizin bütünlüğü ve analizlerinizin doğruluğu için kritik bir adımdır. Yanlış veya eksik değerler, modellerinizin performansını ciddi şekilde etkileyebilir ve yanlış sonuçlara yol açabilir. Doğru stratejiyi seçmek (silmek mi, doldurmak mı), veri setinizin ve analizinizin bağlamına bağlıdır.
Yeni Sütun Oluşturma
Mevcut sütunlardan yeni, türetilmiş sütunlar oluşturmak, veri manipülasyonunun önemli bir parçasıdır. Bu sayede, var olan bilgiyi kullanarak daha zengin ve açıklayıcı özellikler elde edebilirsiniz. Örneğin, bir “Tam Ad” sütununu “Ad” ve “Soyad” sütunlarından birleştirebilir veya “Yaş” sütunundan “Yaş Kategorisi” oluşturabilirsiniz. Yeni sütunlar, analizleriniz için yeni perspektifler sunar.
# Örnek: 'Ad' ve 'Soyad' sütunlarını birleştirerek 'Tam Ad' sütunu oluşturma (Varsayalım df'de 'Soyad' sütunu da var)
# df['Tam Ad'] = df['Ad'] + ' ' + df['Soyad']
# Örnek: Yeni bir 'Durum' sütunu oluşturma
df['Durum'] = df['Yaş'].apply(lambda x: 'Genç' if x < 30 else 'Yetişkin')
print(df.head())
.apply() metodu, bir Series üzerindeki her elemana bir fonksiyon uygulamanızı sağlar, bu da karmaşık dönüşümler için oldukça esneklik sunar.
Gruplama ve Agregasyon
Verileri belirli kriterlere göre gruplamak ve ardından her grup üzerinde özet istatistikler (ortalama, toplam, sayım vb.) hesaplamak, veri analizinin temel taşlarından biridir. Pandas’taki groupby() metodu bu işlevselliği sağlar ve iş zekası uygulamalarında veya segmentasyon analizlerinde sıkça kullanılır:
df.groupby('sütun_adı'): Belirtilen sütunun benzersiz değerlerine göre veri setini gruplar. Bu işlem, veriyi mantıksal alt gruplara böler.- Gruplamadan sonra
mean(),sum(),count(),min(),max(),median()gibi agregasyon fonksiyonları ile her grup için özet değerler hesaplanabilir. Örneğin, bir şirketin farklı departmanlarının ortalama maaşlarını hesaplayabilirsiniz.
# Örnek: Şehirlere göre yaş ortalamasını bulma
yas_ortalamasi_sehire_gore = df.groupby('Şehir')['Yaş'].mean()
print(yas_ortalamasi_sehire_gore)
# Örnek: Her şehrin kaç kişiye ev sahipliği yaptığını sayma
sehir_sayilari = df.groupby('Şehir')['Ad'].count()
print(sehir_sayilari)
Bu yetenek, farklı segmentler veya kategoriler arasındaki farklılıkları ve ilişkileri anlamak için güçlü bir araçtır ve genellikle veri görselleştirme öncesi özet tablolar oluşturmak için kullanılır. Veri setinizdeki eğilimleri ve kalıpları ortaya çıkarmak için vazgeçilmezdir.
Sonuç ve İleri Adımlar
Bu blog yazısında, Python Pandas kütüphanesi ile veri analizi temellerine kapsamlı bir giriş yaptık. Pandas’ın ne olduğundan, kurulumuna, temel veri yapıları olan Series ve DataFrame’lere kadar birçok önemli konuyu ele aldık. Ayrıca, veri yükleme, keşfetme, eksik veri yönetimi, sütun seçimi, filtreleme, yeni sütun oluşturma ve gruplama gibi temel veri manipülasyonu tekniklerini de örneklerle inceledik.
Pandas, milyonlarca satırlık veriyi birkaç saniye içinde işleyebilme kapasitesiyle, veri bilimcilerinin ve analistlerinin günlük iş akışının vazgeçilmez bir parçasıdır. Bu temelleri öğrenmek, karmaşık veri setleriyle çalışmak için sağlam bir zemin oluşturur ve daha ileri düzey veri analizi, makine öğrenimi ve veri görselleştirme projelerine kapı açar. Pandas’ı etkin bir şekilde kullanarak, ham veriyi anlamlı içgörülere dönüştürme gücüne sahip olursunuz.
Unutmayın ki bu yazı sadece bir başlangıçtır. Pandas’ın sunduğu imkanlar oldukça geniştir ve derinlemesine öğrenmek pratik gerektirir. Veri temizleme teknikleri, zaman serisi analizi, pivot tablolar, veri birleştirme (merge/join) ve dışa aktarma işlemleri gibi daha birçok konu keşfedilmeyi bekliyor. Kendi veri setleriniz üzerinde pratik yaparak, dokümantasyonu okuyarak ve online kaynakları takip ederek Pandas becerilerinizi sürekli olarak geliştirebilirsiniz. Veri dünyasında bir adım önde olmak için Pandas’ı etkin bir şekilde kullanmak, size büyük avantajlar sağlayacaktır. Bol şans ve keyifli kodlamalar!