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.