CSV Modülünü Kullanarak Python'da CSV Dosyalarını Okuma ve Yazma & Pandalar

CSV dosyası nedir?

CSV dosyası, tablo şeklindeki verileri düzenlemek için belirli yapılandırmayı kullanan bir tür düz metin dosyasıdır. CSV, kompakt, basit ve genel olduğu için veri alışverişi için yaygın bir formattır. Birçok çevrimiçi hizmet, kullanıcılarının web sitesindeki tablo verilerini bir CSV dosyasına aktarmasına izin verir. CSV dosyaları Excel'de açılır ve neredeyse tüm veritabanlarında CSV dosyasından içe aktarmaya izin veren bir araç bulunur. Standart biçim, satır ve sütun verileriyle tanımlanır. Dahası, her satır bir sonraki satıra başlamak için bir satırsonu ile sonlandırılır. Ayrıca satır içinde her sütun virgülle ayrılmıştır.

Bu eğitimde şunları öğreneceksiniz:

  • CSV dosyası nedir?
  • CSV Örnek Dosyası.
  • Python CSV Modülü
  • CSV Modül İşlevleri
  • CSV Dosyalarını Okuma
  • Sözlük Olarak Okumak
  • CSV Dosyalarına Yazma
  • Pandalarla CSV Dosyalarını Okuma
  • Pandalarla CSV Dosyalarına Yazma

CSV Örnek Dosyası.

Tablo biçimindeki verilere CSV (virgülle ayrılmış değerler) de denir - kelimenin tam anlamıyla "virgülle ayrılmış değerler". Bu, tablo verilerinin sunumu için tasarlanmış bir metin formatıdır. Dosyanın her satırı tablonun bir satırıdır. Tek tek sütunların değerleri bir ayırıcı simgeyle ayrılır - virgül (,), noktalı virgül (;) veya başka bir simge. CSV, Python tarafından kolayca okunabilir ve işlenebilir.

Şu Tabe'yi düşünün

Tablo Verileri

Programlama dili Tarafından tasarlandı Ortaya çıktı Uzantı
Python Guido van Rossum 1991 .py
Java James Gosling 1995 .java
C ++ Bjarne Stroustrup 1983 .cpp

Bu tabloyu aşağıdaki gibi csv'de gösterebilirsiniz.

CSV Verileri

Programlama dili, Tasarlayan, Görünen, Uzantı

Python, Guido van Rossum, 1991, .py

Java, James Gosling, 1995, .java

C ++, Bjarne Stroustrup, 1983, .cpp

Gördüğünüz gibi her satır yeni bir satırdır ve her sütun virgülle ayrılmıştır. Bu, bir CSV dosyasının nasıl göründüğüne dair bir örnektir.

CSV Verilerini İndirin

Python CSV Modülü

Python, CSV dosyalarını işlemek için bir CSV modülü sağlar. Verileri okumak / yazmak için CSV'nin satırları arasında geçiş yapmanız gerekir. Belirtilen sütunlardan veri almak için bölme yöntemini kullanmanız gerekir.

CSV Modül İşlevleri

CSV modülü belgelerinde aşağıdaki işlevleri bulabilirsiniz:

  • csv.field_size_limit - maksimum alan boyutunu döndürür
  • csv.get_dialect - isimle ilişkili lehçeyi alır
  • csv.list_dialects - tüm kayıtlı lehçeleri gösterir
  • csv.reader - csv dosyasından veri okur
  • csv.register_dialect - lehçeyi adla ilişkilendirir
  • csv.writer - verileri bir csv dosyasına yazar
  • csv.unregister_dialect - lehçe kayıt defterinin adıyla ilişkili lehçeyi silin
  • csv.QUOTE_ALL - Türü ne olursa olsun her şeyi alıntılayın .
  • csv.QUOTE_MINIMAL - Alanları özel karakterlerle alıntılar
  • csv.QUOTE_NONNUMERIC - Sayı değeri olmayan tüm alanları alıntılar
  • csv.QUOTE_NONE - Çıktıda hiçbir şeyden alıntı yapma

Bu eğitimde, yalnızca bir CSV dosyasındaki verileri düzenlemenize, değiştirmenize ve değiştirmenize izin veren okuyucu ve yazma işlevlerine odaklanacağız.

CSV Dosyası Nasıl Okunur

CSV dosyalarından veri okumak için, bir okuyucu nesnesi oluşturmak üzere okuyucu işlevini kullanmanız gerekir.

Okuyucu işlevi, dosyanın her satırını almak ve tüm sütunların bir listesini yapmak için geliştirilmiştir. Ardından, değişken verilerini istediğiniz sütunu seçmelisiniz.

Kulağa olduğundan çok daha karmaşık geliyor. Bu örneğe bir göz atalım ve csv dosyasıyla çalışmanın o kadar da zor olmadığını öğreneceğiz.

#import necessary modulesimport csvwith open('X:\data.csv','rt')as f:data = csv.reader(f)for row in data:print(row)

Yukarıdaki programı çalıştırdığınızda, çıktı:

['Programming language; Designed by; Appeared; Extension']['Python; Guido van Rossum; 1991; .py']['Java; James Gosling; 1995; .java']['C++; Bjarne Stroustrup;1983;.cpp']

CSV'yi Sözlük Olarak Okumak

CSV dosyalarını okumak için DictReader'ı da kullanabilirsiniz. Sonuçlar, başlık satırının anahtar ve diğer satırların değer olduğu bir sözlük olarak yorumlanır.

Aşağıdaki kodu düşünün

#import necessary modulesimport csvreader = csv.DictReader(open("file2.csv"))for raw in reader:print(raw)

Bu kodun sonucu:

OrderedDict([('Programming language', 'Python'), ('Designed by', 'Guido van Rossum'), (' Appeared', ' 1991'), (' Extension', ' .py')])OrderedDict([('Programming language', 'Java'), ('Designed by', 'James Gosling'), (' Appeared', ' 1995'), (' Extension', ' .java')])OrderedDict([('Programming language', 'C++'), ('Designed by', ' Bjarne Stroustrup'), (' Appeared', ' 1985'), (' Extension', ' .cpp')])

Ve CSV dosyasından verileri okumak için bu yol, önceki yöntemden çok daha kolaydır. Ancak bu, verileri okumanın en iyi yolu değildir.

CSV Dosyası nasıl yazılır

Bir CSV dosyasında saklamak istediğiniz bir dizi veriye sahip olduğunuzda, writer () işlevini kullanmanız gerekir. Verileri satırlar (satırlar) üzerinde yinelemek için, writerow () işlevini kullanmanız gerekir.

Aşağıdaki örneği düşünün. Verileri, sınırlayıcının kesme işareti olduğu "writeData.csv" dosyasına yazıyoruz.

#import necessary modulesimport csvwith open('X:\writeData.csv', mode='w') as file:writer = csv.writer(file, delimiter=',', quotechar='"', quoting=csv.QUOTE_MINIMAL)#way to write to csv filewriter.writerow(['Programming language', 'Designed by', 'Appeared', 'Extension'])writer.writerow(['Python', 'Guido van Rossum', '1991', '.py'])writer.writerow(['Java', 'James Gosling', '1995', '.java'])writer.writerow(['C++', 'Bjarne Stroustrup', '1985', '.cpp'])

Csv dosyasındaki sonuç:

Programming language, Designed by, Appeared, ExtensionPython, Guido van Rossum, 1991, .pyJava, James Gosling, 1995, .javaC++, Bjarne Stroustrup,1983,.cpp

Pandalarla CSV Dosyalarını Okuma

Pandas, Python'da veri işleme yapmanıza izin veren açık kaynaklı bir kitaplıktır. Pandalar, verileri oluşturmak, işlemek ve silmek için kolay bir yol sağlar.

Pandas kitaplığını pip install pandas komutuyla kurmalısınız. Windows'ta, Terminal'de Linux'tayken bu komutu Komut İstemi'nde çalıştıracaksınız.

CSV'yi pandaların DataFrame'inde okumak çok hızlı ve kolaydır:

#import necessary modulesimport pandasresult = pandas.read_csv('X:\data.csv')print(result)

Sonuç:

Programming language, Designed by, Appeared, Extension0 Python, Guido van Rossum, 1991, .py1 Java, James Gosling, 1995, .java2 C++, Bjarne Stroustrup,1983,.cpp 

Çok kullanışlı kütüphane. Sadece üç satır kodda, önceki ile aynı sonucu elde edersiniz. Pandalar, CSV'nin ilk satırının sütun adları içerdiğini bilir ve bunları otomatik olarak kullanır.

Pandalarla CSV Dosyalarına Yazma

Pandalar ile CSV dosyasına yazmak okumak kadar kolaydır. Burada ikna edebilirsiniz. Öncelikle aşağıdaki koda göre DataFrame oluşturmanız gerekir.

from pandas import DataFrameC = {'Programming language': ['Python','Java', 'C++'],'Designed by': ['Guido van Rossum', 'James Gosling', 'Bjarne Stroustrup'],'Appeared': ['1991', '1995', '1985'],'Extension': ['.py', '.java', '.cpp'],}df = DataFrame(C, columns= ['Programming language', 'Designed by', 'Appeared', 'Extension'])export_csv = df.to_csv (r'X:\pandaresult.csv', index = None, header=True) # here you have to write path, where result file will be storedprint (df)

İşte çıktı

Programming language, Designed by, Appeared, Extension0 Python, Guido van Rossum, 1991, .py1 Java, James Gosling, 1995, .java2 C++, Bjarne Stroustrup,1983,.cpp

Ve CSV dosyası belirtilen konumda oluşturulur.

Sonuç

Artık, 'csv' yönteminin nasıl kullanıldığını ve ayrıca CSV biçiminde veri okuyup yazmayı biliyorsunuz. CSV dosyaları, okunması ve yönetilmesi kolay olduğu için yazılım uygulamalarında yaygın olarak kullanılır ve küçük boyutları, işleme ve aktarım için nispeten hızlı olmasını sağlar.

Csv modülü, kolayca okuyup yazmanıza izin veren çeşitli işlevler ve sınıflar sağlar. Resmi Python belgelerine bakabilir ve daha ilginç ipuçları ve modüller bulabilirsiniz. CSV, verileri kaydetmenin, görüntülemenin ve göndermenin en iyi yoludur. Aslında başlangıçta göründüğü gibi öğrenmek o kadar da zor değil. Ama biraz pratikle ustalaşacaksınız.

Pandalar, CSV dosyalarını okumak için harika bir alternatiftir.

Ayrıca, metin dosyalarını ANTLR, PLY ve PlyPlus gibi kitaplıklarla ayrıştırmanın başka yolları da vardır. Hepsi ağır iş ayrıştırmayı kaldırabilir ve basit String manipülasyonu işe yaramazsa, kullanabileceğiniz normal ifadeler vardır.

Ilginç makaleler...