CSV Modülü ile Veri İşlemleri

Gökhan YAVAŞ
gokhanyavas
Published in
2 min readJan 3, 2017

CSV (Comma-Separated VariabIes), virgül ile ayrılmış veriler anlamına gelmektedir. Python’da CSV dosyaları üzerinde işlem yapmak için CSV modülünden faydalanılmaktadır. Bu anlatımda CSV üzerinde veri okuma ve yazma işlemlerini açıklayacağım.

CSV Dosyası Okumak

Bir CSV dosyasını okumak için 2 yol vardır. Birincisi ilgili modülün reader fonksiyonu diğeri ise DictReader sınıfıdır. Ben her 2 yöntem için örnek vereceğim. Öncelik örnek bir CSV dosyası bulup veya hazırlayarak işe başlayalım. Örnek olarak buradaki CSV dosyasını kullanmak istiyorum. Hazırsak başlayabiliriz.

import csvdef csv_okuyucu(d_obj):
"""
CSV dosyasi okuma
:param d_obj:
:return:
"""
reader = csv.reader(d_obj)
for row in reader:
print(" ".join(row))
if __name__ == "__main__":
csv_path = "FL_insurance_sample.csv"
with open(csv_path, "r") as d_oku:
csv_okuyucu(d_oku)
bu kodlarda reader fonksiyonunu kullanarak csv dosyasını başarıyla okuduk. Kodları açıklamıyorum çünkü python'da belli bir seviyenin üzerinde olduğunuzu biliyorum ;)
COUNTY 626040 626040 626040 626040 626040 607008.38 0 0 0 0 28.00912 -82.41069 Residential Masonry 1
410112 FL HILLSBOROUGH COUNTY 0 2865858.08 0 0 2865858.08 4964497.29 0 0 0 0 28.00022 -82.37625 Commercial Reinforced Masonry 1
502055 FL HILLSBOROUGH COUNTY 0 899963.97 0 0 899963.97 1006699.69 0 0 0 0 28.00536 -82.38101 Residential Masonry 1
627241 FL HILLSBOROUGH COUNTY 0 845932.5 0 0 845932.5 900397.86 0 0 0 0 28.010979 -82.343491 Residential Masonry 1
467262 FL HILLSBOROUGH COUNTY 0 334406.7 0 0 334406.7 368683.39 0 0 0 0 28.010979 -82.343491 Residential Wood 1
294935 FL HILLSBOROUGH COUNTY 0 372805.2 0 0 372805.2 548965.35 0 0 0 0 28.01071 -82.343506 Residential Masonry 1
280855 FL HILLSBOROUGH COUNTY 0 80719.2 0 0 80719.2 69904.6 0 0 0 0 28.010981 -82.343491 Residential Wood 1
.
.
Şimdi bahsettiğimiz DictReader sınıfı ile ilgili kullanımı inceleyelim:import csvdef csv_oku(d_obj):
"""
CSV dosyasini okumak - - csv.DictReader Yontemi
:param d_obj:
:return:
"""
reader = csv.DictReader(d_obj, delimiter = ',')
for line in reader:
print(line["policyID"])
print(line["statecode"])
print(line["county"])
if __name__ == "__main__":
csv_path = "FL_insurance_sample.csv"
with open(csv_path, "r") as d_oku:
csv_oku(d_oku)
Yukarıdaki örnekte, DictReader ile sözlük şeklinde verileri yazdırdık. Ayrıca virgül ile ayrıldığını belirttiğimize dikkat edin.
CSV Dosyası YazmakCSV modülünü kullanarak dosya yazdırmak için writer ve DictWriter isminde 2 sınıfı kullanıyoruz. Gelin şimdi bunlarla ilgili örneği inceleyelim:import csvdef csv_yaz(veri, path):
"""
csv modulu ile write sinifinda yazma islemi
:param data:
:param path:
:return:
"""
with open(path, "w", newline='') as csv_dosyasi:
writer = csv.writer(csv_dosyasi, delimiter=',')
for line in veri:
writer.writerow(line)
if __name__ == "__main__":
veri = ["adi,soyadi,sehir".split(","),
"Gokhan,Yavas,Amsterdam".split(",")]
path = "cikti.csv"
csv_yaz(veri,path)
bu örneğimiz ile csv dosyasını writer sınıfını kullanarak yazdık. Şimdi DictWriter sınıfı ile yazdırmayı inceleyelim:
import csvdef csv_dict_yaz(path, fieldnames, veri):
"""
:param fieldnames:
:param path:
:param veri:
:return:
"""
with open(path, "w", newline='') as dosya_ciktisi:
writer = csv.DictWriter(dosya_ciktisi, delimiter=',', fieldnames=fieldnames)
writer.writeheader()
for row in veri:
writer.writerow(row)
if __name__ == "__main__":
veri = ["adi,soyadi,sehir".split(","),
"Gokhan,Yavas,Amsterdam".split(","),
"Gokhan,Yavas,Istanbul".split(",")
]
liste = []fieldnames = veri[0]
for deger in veri[1:]:
inner_dict = dict(zip(fieldnames,deger))
liste.append(inner_dict)
path = "dict_cikti.csv"
csv_dict_yaz(path, fieldnames, liste)

Kısaca CSV dosyalarını okumak bu şekilde. İyi bakın kendinize.

--

--