Pandas DataFrame, verileri satır ve sütunlardan oluşan, her sütunun bir ad taşıdığı iki boyutlu tablo yapısıdır. Excel çalışma sayfasına benzer; ancak Python içinde filtreleme, birleştirme, hesaplama ve dönüştürme işlemlerini kodla yapmanızı sağlar. Bir DataFrame oluşturmak için önce pandas'ı içe aktarın; sözlük, liste veya NumPy dizisi gibi bellekteki verileri
Bir DataFrame; satır etiketi olan bir index, sütun adları ve hücrelerdeki değerlerden oluşur. Sütunların veri türleri birbirinden farklı olabilir; örneğin
Örneğin aşağıdaki tabloda üç öğrenci için iki sütun (ad ve not) bulunur:
Çıktı aşağıdaki yapıya benzer:
Soldaki
Kullanacağınız yöntem, verinin başlangıçta hangi biçimde bulunduğuna bağlıdır. En yaygın seçenekler arasındaki farkı şu tabloyla görebilirsiniz:
Bu yöntemlerin hepsi DataFrame üretir; farklı olan, verinin DataFrame'e hangi yönden aktarıldığıdır. Sözlükte her anahtar bir sütun olur. İç içe listelerde ise her iç liste genellikle bir satırı temsil eder.
Sütun adlarını ve değerlerini açıkça belirtmek istediğinizde sözlük yöntemi en anlaşılır seçenektir:
Burada üç sözlük anahtarı üç sütuna, her listedeki üç değer de ilgili satırlara dönüşür. Tüm listelerin uzunluğu aynı olmalıdır. Örneğin
Veriniz satır satır hazırsa sütun adlarını
Her iç liste bir satırdır.
Veri bir CSV dosyasındaysa, dosyayı doğrudan
Bu kod, Python programının çalıştığı geçerli çalışma klasöründe bulunan
DataFrame'i oluşturduktan sonra yalnızca ekrana basmak yerine yapısını birkaç kısa kontrolle doğrulayın:
Bir sütunu seçmek için sütun adını köşeli parantezle kullanabilirsiniz:
Bu örnekte
Listelerin uzunlukları farklıysa: Sözlükteki tüm sütun listelerinin aynı sayıda değer içerdiğini kontrol edin.
Sütun adı yanlış yazılıyorsa: Önce
Sayılar metin olarak okunuyorsa:
CSV dosyası bulunamıyorsa: Dosya yolunu ve Python programının çalıştığı klasörü kontrol edin. Dosyanın adını doğru yazmak tek başına yeterli değildir; dosyanın gerçekten belirtilen konumda bulunması gerekir.
pd.DataFrame() içine verin. CSV dosyasını ise pd.read_csv() ile okuyarak DataFrame elde edin. Oluşturduktan sonra head(), shape ve dtypes ile tablonun beklediğiniz gibi oluştuğunu kontrol edebilirsiniz.DataFrame nasıl çalışır?
Bir DataFrame; satır etiketi olan bir index, sütun adları ve hücrelerdeki değerlerden oluşur. Sütunların veri türleri birbirinden farklı olabilir; örneğin
yas sayısal, ad metin ve aktif doğru-yanlış değerlerinden oluşabilir. DataFrame, veritabanı tablosu veya Excel sayfası gibi görünse de tek başına Excel dosyası değildir; Python belleğinde duran bir veri yapısıdır.Örneğin aşağıdaki tabloda üç öğrenci için iki sütun (ad ve not) bulunur:
Python:
import pandas as pd
veri = {
"ad": ["Ayşe", "Mehmet", "Zeynep"],
"not": [85, 72, 94]
}
df = pd.DataFrame(veri)
print(df)
Çıktı aşağıdaki yapıya benzer:
Kod:
ad not
0 Ayşe 85
1 Mehmet 72
2 Zeynep 94
Soldaki
0, 1 ve 2 değerleri otomatik oluşturulan index etiketleridir. ad ve not ise sütun adlarıdır. Bu örnekte df artık filtrelenebilen ve hesaplama yapılabilen bir DataFrame nesnesidir.DataFrame oluşturma yöntemleri
Kullanacağınız yöntem, verinin başlangıçta hangi biçimde bulunduğuna bağlıdır. En yaygın seçenekler arasındaki farkı şu tabloyla görebilirsiniz:
| Kaynak veri | Kullanım | Örnek |
|---|---|---|
| Sözlük | Sütunları listelerle tanımlama | pd.DataFrame(veri) |
| İç içe listeler | Satırları doğrudan verme | pd.DataFrame(satirlar, columns=["ad", "not"]) |
| CSV dosyası | Dosyadaki tabloyu okuma | pd.read_csv("veri.csv") |
| NumPy dizisi | Sayısal veya matris verisi kullanma | pd.DataFrame(dizi) |
Sözlükten oluşturma
Sütun adlarını ve değerlerini açıkça belirtmek istediğinizde sözlük yöntemi en anlaşılır seçenektir:
Python:
import pandas as pd
veri = {
"urun": ["Kalem", "Defter", "Silgi"],
"fiyat": [12.5, 45.0, 8.0],
"stok": [100, 40, 75]
}
df = pd.DataFrame(veri)
print(df)
Burada üç sözlük anahtarı üç sütuna, her listedeki üç değer de ilgili satırlara dönüşür. Tüm listelerin uzunluğu aynı olmalıdır. Örneğin
urun listesinde üç, fiyat listesinde iki değer olursa DataFrame oluşturulurken hata alırsınız; çünkü pandas hangi fiyatın hangi ürünle eşleşeceğini belirleyemez.İç içe listeden oluşturma
Veriniz satır satır hazırsa sütun adlarını
columns parametresiyle verebilirsiniz:
Python:
import pandas as pd
satirlar = [
["Ayşe", 85],
["Mehmet", 72],
["Zeynep", 94]
]
df = pd.DataFrame(satirlar, columns=["ad", "not"])
print(df)
Her iç liste bir satırdır.
columns içindeki adların sayısı, veriden oluşan sütun sayısıyla eşleşmelidir. Kısa satırlar eksik hücrelerle tamamlanabilir; düzenli bir tablo için her satırda beklenen değer sayısını kontrol edin. Sütun adlarını yazmazsanız pandas otomatik adlandırma yapabilir; ancak anlamlı adlar vermek, sonraki filtreleme ve hesaplama işlemlerini daha okunabilir hâle getirir.CSV dosyasından oluşturma
Veri bir CSV dosyasındaysa, dosyayı doğrudan
read_csv() ile okuyabilirsiniz:
Python:
import pandas as pd
df = pd.read_csv("ogrenciler.csv")
print(df.head())
print(df.shape)
Bu kod, Python programının çalıştığı geçerli çalışma klasöründe bulunan
ogrenciler.csv dosyasını okur; bu klasör her zaman Python dosyanızın bulunduğu klasör değildir. Dosya başka yerdeyse uygun göreli veya tam dosya yolu verin. Örneği çalıştırmadan önce bu adla bir CSV dosyası hazırlayın. Sonraki not sütunu örnekleriyle de çalışacak dosya içeriği şöyle olabilir:
Kod:
ad,not
Ayşe,85
Mehmet,72
Zeynep,94
head() ilk satırları, shape ise (satır_sayısı, sütun_sayısı) biçiminde boyutu gösterir. Örneğin (100, 3), 100 satır ve 3 sütun bulunduğu anlamına gelir.Oluşturulan DataFrame'i kontrol etme
DataFrame'i oluşturduktan sonra yalnızca ekrana basmak yerine yapısını birkaç kısa kontrolle doğrulayın:
Python:
print(df.head())
print(df.columns)
print(df.shape)
print(df.dtypes)
columns sütun adlarını, shape satır ve sütun sayısını, dtypes ise her sütunun pandas tarafından algılanan veri türünü gösterir. Sayısal bir sütun metin olarak okunmuşsa toplama veya ortalama alma işlemleri beklediğiniz gibi çalışmayabilir. Bu durumda önce sütundaki değerlerin gerçekten sayısal olup olmadığını ve CSV dosyasındaki ayraç ile ondalık gösteriminin doğru okunup okunmadığını kontrol etmelisiniz.Bir sütunu seçmek için sütun adını köşeli parantezle kullanabilirsiniz:
Python:
ortalama_not = df["not"].mean()
print(ortalama_not)
not sütunu sayısal değerlerden oluşuyorsa sonuç bu değerlerin ortalamasıdır. Bu işlem DataFrame'i değiştirmez; yalnızca mevcut veriden bir hesaplama üretir. DataFrame'e yeni sütun eklemek için ise atama yapabilirsiniz:
Python:
df["gecti"] = df["not"] >= 50
print(df)
Bu örnekte
gecti sütununda notu 50 veya üzeri olan satırlar için True, diğerleri için False bulunur. Bu değerler varsayımsal öğrenci verisi üzerinde gösterim amaçlıdır; gerçek bir değerlendirme sonucu veya akademik kural anlamına gelmez.Sık yapılan hatalar
Listelerin uzunlukları farklıysa: Sözlükteki tüm sütun listelerinin aynı sayıda değer içerdiğini kontrol edin.
Sütun adı yanlış yazılıyorsa: Önce
print(df.columns) çalıştırın. Büyük-küçük harf, boşluk ve Türkçe karakter farkları sütun adının eşleşmemesine neden olabilir.Sayılar metin olarak okunuyorsa:
print(df.dtypes) ile türü kontrol edin. Sayısal işlemden önce ilgili sütundaki boş, virgüllü veya birim içeren değerleri ayrıca temizlemek gerekir.CSV dosyası bulunamıyorsa: Dosya yolunu ve Python programının çalıştığı klasörü kontrol edin. Dosyanın adını doğru yazmak tek başına yeterli değildir; dosyanın gerçekten belirtilen konumda bulunması gerekir.
Son düzenleme: