Veri Setlerini Okuma ve Dışa Aktarma (CSV, Excel)

Bu derste ne yapacağız?

Bu derse kadar Pandas kütüphanesinde bir DataFrame'i elle satır satır oluşturmayı ve içindeki verilerle küçük işlemler yapmayı gördünüz. Gerçek hayatta veriler genellikle elle yazılmaz; bir dosyadan gelir. Bu derste bir CSV dosyasından ve bir Excel dosyasından veri okumayı, okunan veriyi hızlıca incelemeyi ve üzerinde küçük bir değişiklik yaptıktan sonra sonucu yeniden bir dosyaya kaydetmeyi öğreneceksiniz. Dersin süresi yaklaşık 11 dakikadır ve önceki derste öğrendiğiniz DataFrame kavramını doğrudan kullanacağız; DataFrame'in ne olduğunu hatırlamıyorsanız bir önceki derse kısaca göz atmanız faydalı olur. Ön koşul olarak bilgisayarınızda Python ve Pandas kütüphanesinin kurulu olması, ayrıca birkaç satırlık basit bir CSV veya Excel dosyasına erişiminizin olması yeterlidir.

Kavram

Bir DataFrame'i, Excel'deki bir çalışma sayfası gibi düşünebilirsiniz: satırlar ve sütunlardan oluşan bir tablo. Ama bu tablo bilgisayarınızın belleğinde durur; kalıcı değildir. Programı kapattığınızda kaybolur. Bu yüzden verilerimizi genellikle bir dosyada saklarız; en yaygın iki format CSV (Comma Separated Values, yani virgülle ayrılmış değerler) ve Excel (.xlsx) dosyalarıdır.

CSV dosyasını bir defter sayfası gibi düşünün: her satır bir kayıt, satırdaki değerler virgülle ayrılmış. Çok sade olduğu için hemen her programla açılabilir. Excel dosyası ise daha "süslü" bir defter gibidir; renkler, birden fazla sayfa (sheet) ve formüller içerebilir, ama Pandas için önemli olan yine satır ve sütunlardan oluşan tablo kısmıdır.

Pandas'ta bir dosyayı okumak, o dosyadaki tabloyu bir DataFrame'e "kopyalamak" gibidir. Bunu yaptıktan sonra artık dosyanın kendisiyle değil, bellekteki DataFrame ile çalışırsınız. İşiniz bittiğinde de DataFrame'i tekrar bir dosyaya "kaydedersiniz", tıpkı bir Word belgesinde değişiklik yapıp Kaydet demeniz gibi.

Adım adım uygulama

Aşağıdaki adımları kendi bilgisayarınızda, tercihen bir Jupyter Notebook veya basit bir .py dosyasında sırayla deneyin. Önce aynı klasörde satislar.csv adında, virgülle ayrılmış küçük bir örnek dosyanız olduğunu varsayalım; içeriği şuna benzer olabilir: ürün, adet ve fiyat sütunları.

1. Adım — Pandas'ı içeri aktarın. Kod dosyanızın en üstüne şu satırı yazın: import pandas as pd. Bu satır, Pandas kütüphanesindeki bütün fonksiyonları pd kısaltmasıyla kullanmanızı sağlar; her fonksiyonu çağırırken uzun ismi yazmak zorunda kalmazsınız.

2. Adım — CSV dosyasını okuyun. Şu satırı yazın: df = pd.read_csv("satislar.csv"). Burada pd.read_csv fonksiyonu, tırnak içinde verdiğiniz dosya yolunu bulur, içindeki tabloyu okur ve bir DataFrame'e dönüştürür; bu DataFrame'i de df adlı bir değişkende saklarız. Dosya farklı bir klasördeyse, tırnak içine o klasörün tam yolunu yazmanız gerekir.

3. Adım — Veriyi hızlıca inceleyin. Şu satırları tek tek çalıştırın: print(df.head()) ilk beş satırı gösterir; print(df.shape) kaç satır ve kaç sütun olduğunu (satır, sütun) biçiminde verir; print(df.columns) sütun adlarını listeler; print(df.dtypes) her sütunun sayı mı, yazı mı, tarih mi olduğunu gösterir. Bu dört satır, elinize gelen her yeni veri setinde ilk yapmanız gereken "tanışma" adımlarıdır.

4. Adım — Basit bir değişiklik yapın. Örneğin adet ile fiyatı çarpıp yeni bir sütun ekleyelim: df["toplam"] = df["adet"] * df["fiyat"]. Bu satır, mevcut iki sütunu satır satır çarpar ve sonucu toplam adında yeni bir sütuna yazar; DataFrame artık bir sütun daha fazla içerir.

5. Adım — Excel dosyasından okuma. Elinizde satislar.xlsx adında bir Excel dosyası varsa şu satırı kullanın: df2 = pd.read_excel("satislar.xlsx", sheet_name="Sayfa1"). Burada sheet_name parametresi, Excel dosyasındaki hangi sayfayı okumak istediğinizi belirtir; parametreyi hiç yazmazsanız Pandas ilk sayfayı okur. Excel okurken bilgisayarınızda openpyxl adlı ek bir kütüphanenin kurulu olması gerekebilir; kurulu değilse hata mesajı bunu size söyler.

6. Adım — Sonucu tekrar bir dosyaya kaydedin. Yaptığınız "toplam" sütunu eklenmiş DataFrame'i CSV olarak kaydetmek için: df.to_csv("satislar_sonuc.csv", index=False). Buradaki index=False parametresi çok önemlidir: onu yazmazsanız Pandas, DataFrame'in en soluna 0'dan başlayan bir satır numarası sütunu ekler; bunu genelde istemeyiz. Excel olarak kaydetmek isterseniz de aynı mantıkla df.to_excel("satislar_sonuc.xlsx", index=False) satırını kullanabilirsiniz.

Bu altı adımı tamamladığınızda, dış dünyadan veri alıp Pandas ile işleyip yine dış dünyaya geri veren tam bir döngüyü kendi elinizle kurmuş olursunuz. Bir sonraki derste bu okuduğunuz veriler üzerinde filtreleme ve seçim yaparak daha ileri analizlere geçeceksiniz; bu yüzden dosya okuma-yazma adımlarını iyice pekiştirmek önemlidir.

Sık karşılaşılan sorunlar

Hata / DurumOlası NedenÇözüm
FileNotFoundErrorDosya adı yanlış yazılmış veya dosya, kodun çalıştığı klasörde değilDosya adını ve uzantısını (.csv, .xlsx) kontrol edin; gerekirse dosyanın tam yolunu yazın
UnicodeDecodeErrorCSV dosyası Türkçe karakterler içeriyor ve farklı bir kodlamayla kaydedilmişpd.read_csv("dosya.csv", encoding="utf-8") veya encoding="latin-1" deneyin
Sütunlar tek bir sütunda birleşik görünüyorCSV dosyasında ayraç virgül değil noktalı virgül (;)pd.read_csv("dosya.csv", sep=";") parametresini ekleyin
ImportError: No module named openpyxlExcel okumak için gereken yardımcı kütüphane kurulu değilTerminalde pip install openpyxl komutunu çalıştırın
Kaydedilen dosyada gereksiz bir sütun beliriyorto_csv veya to_excel çağrılırken index=False yazılmamışKayıt satırına index=False parametresini ekleyin

Mini görev

Kendi bilgisayarınızda küçük bir CSV dosyası oluşturun; örneğin ogrenciler.csv adıyla, içinde ad, ders ve not sütunları olan dört veya beş satırlık bir tablo hazırlayın (bunu Not Defteri ile de yazabilirsiniz). Ardından bu dosyayı Pandas ile okuyun, ilk beş satırını ve sütun adlarını ekrana yazdırın, notların ortalamasını bulup yeni bir durum sütunu ekleyin (örneğin not 50'nin üzerindeyse "Geçti", değilse "Kaldı" yazsın) ve sonucu ogrenciler_sonuc.csv adıyla, satır numarası sütunu olmadan kaydedin.

Kontrol listesi:

  • Dosya aynı klasörde mi ve doğru uzantıyla mı kaydedildi?
  • pd.read_csv ile dosya hatasız okundu mu?
  • df.head() ve df.columns çıktıları beklediğiniz gibi mi?
  • Yeni durum sütunu doğru mantıkla eklendi mi?
  • Kaydedilen dosyada fazladan bir satır numarası sütunu yok mu?

Kendini sına

1. Bir CSV dosyasını Pandas ile okumak için hangi fonksiyon kullanılır?

2. df.to_csv("veri.csv") satırında index=False parametresini eklemezseniz ne olur?

3. Bir Excel dosyasında belirli bir sayfayı okumak için pd.read_excel fonksiyonuna hangi parametre verilir?

4. CSV dosyasında değerler virgül yerine noktalı virgülle ayrılmışsa hangi parametreyi kullanmanız gerekir?

5. df.shape komutunun çıktısı size ne hakkında bilgi verir?

Cevaplar

1. pd.read_csv("dosya_adı.csv") fonksiyonu kullanılır.

2. Kaydedilen dosyaya, DataFrame'in satır numaralarını içeren gereksiz bir sütun eklenir.

3. sheet_name parametresi verilir; örneğin sheet_name="Sayfa1".

4. sep=";" parametresini kullanmanız gerekir.

5. DataFrame'in kaç satır ve kaç sütundan oluştuğunu (satır sayısı, sütun sayısı) gösterir.

Bu dersi kayıt olmadan izleyebilirsin. İlerlemeni kaydetmek, sertifika almak ve puan tablosuna girmek için ücretsiz üye ol: Kayıt Ol