CSV dosya formatı en yaygın olarak veritabanlarını ve elektronik tabloları korumak için kullanılır. Bir CSV dosyasındaki ilk satır en yaygın olarak sütun alanlarını tanımlamak için kullanılırken kalan diğer satırlar satır olarak kabul edilir. Bu yapı, kullanıcıların CSV dosyalarını kullanarak tablo halinde veri sunmasına olanak tanır. CSV dosyaları herhangi bir metin düzenleyicide düzenlenebilir. Ancak, LibreOffice Calc gibi uygulamalar gelişmiş düzenleme araçları, sıralama ve filtreleme işlevleri sağlar.
Python Kullanarak CSV Dosyalarından Veri Okuma
Python'daki CSV modülü, CSV dosyalarında saklanan tüm verileri okumanıza, yazmanıza ve değiştirmenize olanak tanır. Bir CSV dosyasını okumak için Python'un standart kütüphanesinde bulunan Python'un “csv” modülünden “reader” yöntemini kullanmanız gerekecektir.
Aşağıdaki verileri içeren bir CSV dosyanız olduğunu düşünün:
Mango, Muz, Elma, Portakal50,70,30,90
Dosyanın ilk satırı, her sütun kategorisini, bu durumda meyvelerin adını tanımlar. İkinci satır, her sütunun altındaki değerleri depolar (eldeki stok). Tüm bu değerler virgülle sınırlandırılmıştır. Bu dosyayı LibreOffice Calc gibi bir elektronik tablo uygulamasında açacak olsaydınız, şöyle görünürdü:
Şimdi “meyvelerden” değerleri okumak için.csv” dosyasını Python'un “csv” modülünü kullanarak aşağıdaki formatta “reader” yöntemini kullanmanız gerekecektir:
csv'yi içe aktaropen("meyveler.csv") dosyası olarak:
data_reader = csv.okuyucu(dosya)
data_reader'daki satır için:
yazdır (çizgi)
Yukarıdaki örnekteki ilk satır, “csv” modülünü içe aktarır. Ardından, sabit sürücünüzde depolanan bir dosyayı güvenli bir şekilde açmak için “with open” ifadesi kullanılır (“meyveler.csv” bu durumda). “csv” modülünden “reader” yöntemi çağrılarak yeni bir “data_reader” nesnesi oluşturulur. Bu "okuyucu" yöntemi, zorunlu bir argüman olarak bir dosya adı alır, bu nedenle "meyveler" referansı.csv” ona iletilir. Ardından, “meyvelerden” her satırı yazdırmak için bir “for” döngüsü ifadesi çalıştırılır.csv” dosyası. Yukarıda bahsedilen kod örneğini çalıştırdıktan sonra aşağıdaki çıktıyı almalısınız:
['50', '70', '30', '90']Çıktıya satır numaraları atamak istiyorsanız, yinelenebilir bir öğedeki her öğeye bir sayı atayan “numaralandırma” işlevini kullanabilirsiniz (değiştirilmedikçe 0'dan başlayarak).
csv'yi içe aktaropen("meyveler.csv") dosyası olarak:
data_reader = csv.okuyucu(dosya)
dizin için, numaralandırmadaki satır (data_reader):
yazdır (dizin, satır)
"İndeks" değişkeni, her öğenin sayısını tutar. Yukarıda bahsedilen kod örneğini çalıştırdıktan sonra aşağıdaki çıktıyı almalısınız:
0 ['Mango', 'Muz', 'Elma', 'Portakal']1 ['50', '70', '30', '90']
Bir "csv" dosyasındaki ilk satır tipik olarak sütun başlıkları içerdiğinden, şu başlıkları çıkarmak için "numaralandır" işlevini kullanabilirsiniz:
csv'yi içe aktaropen("meyveler.csv") dosyası olarak:
data_reader = csv.okuyucu(dosya)
dizin için, numaralandırmadaki satır (data_reader):
dizin == 0 ise:
başlıklar = satır
baskı (başlıklar)
Yukarıdaki ifadedeki “if” bloğu, dizinin sıfıra eşit olup olmadığını kontrol eder (“meyvelerdeki ilk satır”.csv” dosyası). Evet ise, “satır” değişkeninin değeri yeni bir “başlıklar” değişkenine atanır. Yukarıdaki kod örneğini çalıştırdıktan sonra aşağıdaki çıktıyı almalısınız:
['Mango', 'Muz', 'Elma', 'Portakal']“csv”yi çağırırken kendi sınırlayıcınızı kullanabileceğinizi unutmayın.Aşağıdaki biçimde isteğe bağlı bir "sınırlayıcı" argümanı kullanarak okuyucu" yöntemi:
csv'yi içe aktaropen("meyveler.csv") dosyası olarak:
data_reader = csv.okuyucu(dosya, sınırlayıcı=";")
data_reader'daki satır için:
yazdır (çizgi)
Bir csv dosyasında, her sütun bir satırdaki değerlerle ilişkilendirildiğinden, bir "csv" dosyasından veri okurken bir Python "sözlüğü" nesnesi oluşturmak isteyebilirsiniz. Bunu yapmak için aşağıdaki kodda gösterildiği gibi “DictReader” yöntemini kullanmanız gerekir:
csv'yi içe aktaropen("meyveler.csv") dosyası olarak:
data_reader = csv.DiktOkuyucu(dosya)
data_reader'daki satır için:
yazdır (çizgi)
Yukarıda bahsedilen kod örneğini çalıştırdıktan sonra aşağıdaki çıktıyı almalısınız:
'Mango': '50', 'Muz': '70', 'Elma': '30', 'Turuncu': '90'Artık tek tek sütunları satırlardaki karşılık gelen değerlerle ilişkilendiren bir sözlük nesneniz var. Yalnızca bir satırınız varsa bu iyi çalışır. Diyelim ki “meyveler.csv” dosyası artık meyve stoğunun yok olmasının kaç gün süreceğini belirten ek bir satır içeriyor.
Mango, Muz, Elma, Portakal50,70,30,90
3,1,6,4
Birden çok satırınız olduğunda, yukarıdaki aynı kod örneğini çalıştırmak farklı çıktılar üretecektir.
'Mango': '50', 'Muz': '70', 'Elma': '30', 'Turuncu': '90''Mango': '3', 'Muz': '1', 'Elma': '6', 'Turuncu': '4'
Bir Python sözlüğünde bir sütuna ait tüm değerleri bir anahtar/değer çiftiyle eşleştirmek isteyebileceğiniz için bu ideal olmayabilir. Bunun yerine bu kod örneğini deneyin:
csv'yi içe aktaropen("meyveler.csv") dosyası olarak:
data_reader = csv.DiktOkuyucu(dosya)
data_dict =
data_reader'daki satır için:
anahtar için, satırdaki değer.öğeler():
data_dict.setdefault(anahtar, [])
data_dict[anahtar].ekle(değer)
yazdır (data_dict)
Yukarıda bahsedilen kod örneğini çalıştırdıktan sonra aşağıdaki çıktıyı almalısınız:
'Mango': ['50', '3'], 'Muz': ['70', '1'], 'Elma': ['30', '6'], 'Turuncu': ['90 ', '4']Anahtar/değer çiftleri üzerinde döngü oluşturmak için “DictReader” nesnesinin her öğesinde bir “for” döngüsü kullanılır. Bundan önce yeni bir Python sözlük değişkeni "data_dict" tanımlanmıştır. Nihai veri eşlemelerini depolayacak. İkinci “for” döngü bloğunun altında Python sözlüğünün “setdefault” yöntemi kullanılır. Bu yöntem, bir sözlük anahtarına bir değer atar. Anahtar/değer çifti yoksa, belirtilen bağımsız değişkenlerden yeni bir tane oluşturulur. Yani bu durumda, zaten mevcut değilse, bir anahtara yeni bir boş liste atanacaktır. Son olarak, son "data_dict" nesnesindeki karşılık gelen anahtarına "değer" eklenir.
Bir CSV Dosyasına Veri Yazma
Bir “csv” dosyasına veri yazmak için “csv” modülünden “writer” yöntemini kullanmanız gerekecektir. Aşağıdaki örnek, mevcut “meyvelere” yeni bir satır ekleyecektir.csv” dosyası.
csv'yi içe aktaropen("meyveler.csv", "a") dosya olarak:
data_writer = csv.yazar(dosya)
data_writer.yazma satırı([3,1,6,4])
İlk ifade, dosyayı “a” argümanı ile gösterilen “ekleme” modunda açar. Daha sonra “yazar” yöntemi çağrılır ve “meyveler”.csv” dosyası argüman olarak kendisine iletilir. "writerow" yöntemi dosyaya yeni bir satır yazar veya ekler.
Python sözlüğünü bir "csv" dosya yapısına dönüştürmek ve çıktıyı bir "csv" dosyasına kaydetmek istiyorsanız, şu kodu deneyin:
csv'yi içe aktaropen("meyveler.csv", "w") dosya olarak:
başlıklar = ["Mango", "Muz", "Elma", "Portakal"]
data_writer = csv.DictWriter(dosya, alan adları=başlıklar)
data_writer.yazma başlığı()
data_writer.writerow("Mango": 50, "Muz": 70, "Elma": 30, "Turuncu": 90)
data_writer.writerow("Mango": 3, "Muz": 1, "Elma": 6, "Turuncu": 4)
Boş bir “meyve” açtıktan sonra.csv” dosyasında, “with open” ifadesi kullanılarak, sütun başlıklarını içeren yeni bir “headings” değişkeni tanımlanmıştır. “DictWriter” yöntemi çağrılarak ve “meyvelere” referansı geçirilerek yeni bir “data_writer” nesnesi oluşturulur.csv” dosyası ve bir “fieldnames” argümanı. Sonraki satırda sütun başlıkları “writeheader” yöntemi kullanılarak dosyaya yazılır. Son iki ifade, önceki adımda oluşturulan ilgili başlıklarına yeni satırlar ekler.
Sonuç
CSV dosyaları, verileri tablo biçiminde yazmak için düzgün bir yol sağlar. Python'un yerleşik "csv" modülü, "csv" dosyalarında bulunan verileri işlemeyi ve bunlara daha fazla mantık uygulamayı kolaylaştırır.