CSV dosyaları tıpkı Excel’dekine benzer şekilde tablo formatındaki verileri metin dosyalarında depolamamızı sağlayan bir formattır. Dosyanın her bir satırı Excel’deki satırlar gibi veri kaydını oluşturur, bu satırlar ise bir ya da daha fazla veri alanına yani veri hücresine sahip olabilir. Her bir hücrenin arasına da virgül koyularak ayırt edilir.
Yani şu tablo;
Ad | Soyad | Meslek | Şehir |
Oben | Seven | Full Stack Developer | Ankara |
Mert | Demir | İzmir |
CSV formatında şu şekilde bulunur;
Ad,Soyad,Meslek,Şehir
Oben,Seven,Full Stack Developer,Ankara
Mert,Demir,,İzmir
Python’da CSV dosyaları ile çalışmak için csv hazır modülü bulunur. Python ile CSV dosyalarını nasıl kullanacağımızı öğrenirken kullanmak üzere örnek bir CSV dosyası oluşturalım. CSV dosyaları Microsoft Excel ve LibreOffice Calc gibi uygulamalar tarafından okunabildiği ve kaydedilebildiği için, dilerseniz bu programları kullanarak hızlıca bir dosya oluşturup CSV formatında kaydedebilirsiniz.
Yukarıdaki tabloyu CSV formatında personeller.csv ismiyle kaydedelim.
Şimdi Python ile bu CSV dosyasını okuyalım;
import csv with open("personeller.csv") as dosyam: okuyucu = csv.reader(dosyam) for satir in okuyucu: print(satir)
Çıktı:
['Ad', 'Soyad', 'Meslek', 'Şehir'] ['Oben', 'Seven', 'Full Stack Developer', 'Ankara'] ['Mert', 'Demir', 'Backend Developer', 'İzmir']
Gördüğünüz gibi tıpkı bir metin dosyasını okur gibi dosyamızı with..as bağlam yöneticisi ile açtık ve csv modülünün reader metodunu kullanarak dosyayı okuyup print() fonksiyonu ile ekrana yazdırdık.
Bu çıktıyı biraz daha güzel bir formatta görüntülemek isterseniz de tabulate modülünden tabulate() fonksiyonunu kullanabilirsiniz;
import csv from tabulate import tabulate satirlar=[] with open("personeller.csv") as dosyam: okuyucu = csv.reader(dosyam) for satir in okuyucu: satirlar.append(satir) print(tabulate(satirlar))
Çıktı:
---- ----- -------------------- ------ Ad Soyad Meslek Şehir Oben Seven Full Stack Developer Ankara Mert Demir Backend Developer İzmir ---- ----- -------------------- ------
Python ile elinizde mevcut olan verileri CSV dosyasına yazmak da en az okumak kadar kolay bir işlemdir. Önce bir csv dosyası oluşturup, bu dosyayı yazma(w) modunda açmalı ve farklı olarak csv modülünün writer metodunu kullanmalıyız;
veriler=[['Ad', 'Soyad', 'Meslek', 'Şehir'],['Oben', 'Seven', 'Full Stack Developer', 'Ankara'],['Mert', 'Demir', 'Backend Developer', 'İzmir']] with open("yeni.csv", mode="w") as dosyam: yazici = csv.writer(dosyam) yazici.writerows(veriler)
Oldukça basit bir şekilde uygun formatta listelerden oluşan bir liste verisini csv formatında kaydedebildiğimiz bu kod çalıştırıldığında aynın klasör içinde yeni.csv adında bir dosya oluşturulur.
Eğer elinizde sadece verilerden oluşan bir liste var ise,
bu verilerin içeriğini ifade eden başlık satırını csv modülünün writerow metodu ile kendiniz de oluşturabilirsiniz;
veriler2=[['Oben', 'Seven', 'Full Stack Developer', 'Ankara'],['Mert', 'Demir', 'Backend Developer', 'İzmir']] basliklar=['Ad','Soyad','Meslek','Şehir'] with open("yeni2.csv", mode="w") as dosyam: yazici = csv.writer(dosyam) yazici.writerow(basliklar) yazici.writerows(veriler2)
Daha önce ilk örnek kodumuz içinde csv modülünün reader() metodu ile okuduğumuz csv dosyasının aynısını verileri sözlük formatında okumayı sağlayan DictReader() metodu ile okursak elde ettiğimiz sonuç da sizlük formatında olacaktır;
with open("personeller.csv") as dosyam: okuyucu = csv.DictReader(dosyam) for satir in okuyucu: print(satir) print()
Çıktı:
{'Ad': 'Oben', 'Soyad': 'Seven', 'Meslek': 'Full Stack Developer', 'Şehir': 'Ankara'} {'Ad': 'Mert', 'Soyad': 'Demir', 'Meslek': 'Backend Developer', 'Şehir': 'İzmir'}
Gördüğünüz gibi bu metod CSV dosyasında bulunan başlıkları her bir veri satırında değişken adı olarak kullanıyor.
CSV dosyası oluştururken de; elinizdeki veriler liste formatında değil de anahtar:değer ikilileri şeklinde sözlük formatında ise, csv modülünün DictWriter() fonksiyonu ile CSV dosyasına kaydedebiliriz;
veriler=[{'Ad':"Oben",'Soyad':"Seven",'Şehir':'Ankara','Meslek':'Full Stack Developer'},{'Ad':"Mert",'Soyad':"Demir",'Şehir':'İzmir','Meslek':'Backend Developer'}] with open("yeni2.csv", "w") as dosyam: yazici=csv.DictWriter(dosyam, fieldnames=['Ad','Soyad','Meslek','Şehir']) yazici.writeheader() yazici.writerows(veriler)
Burada verilerin CSV dosyası içinde hangi sırada yer almasını istediğimizi DictWriter() metodunun fieldnames parametresi ile belirliyoruz. Bize verilen verilerde şehir önce meslek sonra yer alıyordu ancak filednames parametresi ile yerini değiştirerek dosyaya kaydettik;
Ad,Soyad,Meslek,Şehir Oben,Seven,Full Stack Developer,Ankara Mert,Demir,Backend Developer,İzmir
Tabii CSV dosyaları gerçek hayat uygulamalarında genellikle bu şekilde bir kaç kayıttan çok daha fazlasını içerir. Binlerce satır kayıt bulunan bir dosyadan bilgi edinmek için Python ile kod yazarak ilgilendiğimiz veriyi çekmeliyiz. Örneğin; personel listesi CSv dosyamızda deneyim sürelerinin de yer aldığını varsayalım.
Ad,Soyad,Meslek,Şehir,Deneyim Oben,Seven,Full Stack Developer,Ankara, 9 Mert,Demir,Backend Developer,İzmir, 11 Vural,Şahin,Frontend Developer,İstanbul,7 Burcu,Özden,Frontend Developer,Kocaeli,6 Buğra,Moralı,Backend Developer,İstanbul,9 Deniz,Türkeli,Backend Developer,Ankara,4
Bu dosya içindeki en deneyimli personelin kim olduğunun sorulduğunu düşünelim. Şu anda gözle görülebiliyor tabii, ama binlerce satır veri bulunduğunu ve her bir personel için çok sayoda veri alanı bulunduğunu varsayıyoruz;
import csv dosyam = csv.DictReader(open("personel_listesi.csv")) enBuyukDeneyimYili = None enDeneyimliPersonel = None for veri in dosyam: deneyim = int(veri["Deneyim"]) if enBuyukDeneyimYili == None or enBuyukDeneyimYili < deneyim: enBuyukDeneyimYili = deneyim enDeneyimliPersonel = veri["Ad"] + " " + veri["Soyad"] if enBuyukDeneyimYili != None: print(("En deneyimli personel {} ve deneyim süresi {} yıldır.").format(enDeneyimliPersonel, enBuyukDeneyimYili)) else: print("Dosyada veri bulunamadı")
Çıktı:
En deneyimli personel Mert Demir ve deneyim süresi 11 yıldır.
Burada yer alan örnekleri şu adreste inceleyebilirsiniz;
İlgili Yazılar
1 Comments
Comments are closed.
[…] CSV dosyası, her sıranın bir satırı temsil ettiği ve virgülün veri değerlerini ayırdığı sınırlandırılmış bir metin dosyasıdır. Örneğin, bir hava istasyonundan alınan gözlemlerin bir veri kümesini hayal edin. Her satır belirli bir zamanda bir gözlemi temsil ederken, her sütun bu gözlem hakkında sıcaklık, nem ve diğer hava koşulları gibi bilgileri içerir. […]