Python CSV: CSV dosyalarını okuyun ve yazın

Bu eğitimde, örnekler yardımıyla Python'da CSV dosyalarını nasıl okuyup yazılacağını öğreneceğiz.

CSV (Virgülle Ayrılmış Değerler) biçimi, tablo verilerini depolamanın en basit ve yaygın yollarından biridir. Bir CSV dosyasını temsil etmek için, .csv dosya uzantısıyla kaydedilmesi gerekir .

Bir örnek alalım:

Sublime text gibi bir metin düzenleyici kullanarak yukarıdaki CSV dosyasını açarsanız şunu göreceksiniz:

 SN, Ad, Şehir 1, Michael, New Jersey 2, Jack, California 

Gördüğünüz gibi, bir CSV dosyasının öğeleri virgülle ayrılmıştır. Burada ,bir sınırlayıcı var.

İhtiyaçlarınıza göre sınırlayıcı olarak herhangi bir karaktere sahip olabilirsiniz.

Not: csv modülü, içerikleri uygun yapıda olduğu sürece diğer dosya uzantıları için de (örneğin: .txt ) kullanılabilir.

Python'da CSV dosyalarıyla çalışma

open()Python'da CSV dosyalarıyla çalışmak için yerleşik işlevi kullanabilsek de , CSV dosyalarıyla csvçalışmayı çok daha kolay hale getiren özel bir modül var.

Yöntemleri csvmodüle kullanmadan önce , modülü ilk olarak kullanarak içe aktarmamız gerekir:

 import csv 

CSV dosyalarını csv.reader () kullanarak okuma

Python'da bir CSV dosyasını okumak için csv.reader()işlevi kullanabiliriz . Geçerli dizinde aşağıdaki girişleri içeren people.csvcsv adlı bir dosyamız olduğunu varsayalım .

İsim Yaş Meslek
Jack 23 Doktor
Miller 22 Mühendis

Bu dosyayı kullanarak okuyalım csv.reader():

Örnek 1: Virgül Sınırlayıcı İçeren CSV'yi Okuyun

 import csv with open('people.csv', 'r') as file: reader = csv.reader(file) for row in reader: print(row) 

Çıktı

 ('Ad', 'Yaş', 'Meslek') ('Jack', '23', 'Doktor') ('Miller', '22', 'Mühendis') 

Burada, people.csv dosyasını aşağıdakileri kullanarak okuma modunda açtık :

 with open('people.csv', 'r') as file:… 

Python'da dosya açma hakkında daha fazla bilgi edinmek için şu adresi ziyaret edin: Python File Input / Output

Ardından, csv.reader()yinelenebilir bir readernesne döndüren dosyayı okumak için kullanılır .

readerNesne daha sonra bir kullanılarak tekrarlanır forher satır içeriğini yazdırmak için döngü.

Yukarıdaki örnekte, csv.reader()virgül sınırlayıcıya sahip CSV dosyaları için varsayılan modda işlevi kullanıyoruz .

Bununla birlikte, işlev çok daha özelleştirilebilir.

CSV dosyamızın sınırlayıcı olarak sekme kullandığını varsayalım . Bu tür dosyaları okumak için isteğe bağlı parametreleri csv.reader()işleve aktarabiliriz . Bir örnek alalım.

Örnek 2: Sekme Sınırlayıcıya Sahip CSV dosyasını okuyun

 import csv with open('people.csv', 'r',) as file: reader = csv.reader(file, delimiter = ' ') for row in reader: print(row) 

delimiter = ' 'Yukarıdaki örnekte isteğe bağlı parametreye dikkat edin .

csv.reader()İşlevin tam sözdizimi şöyledir:

 csv.reader(csvfile, dialect='excel', **optional_parameters) 

Söz diziminden görebileceğiniz gibi, lehçe parametresini de csv.reader()işleve geçirebiliriz . dialectParametresi bize işlevi daha esnek olmasını sağlar. Daha fazla bilgi edinmek için şu adresi ziyaret edin: Python'da CSV dosyalarını okuma.

Csv.writer () kullanarak CSV dosyaları yazma

Python'da bir CSV dosyasına yazmak için csv.writer()işlevi kullanabiliriz .

csv.writer()İşlev bir döndüren writerbir nesne ki sınırlandırılmış dizeye dönüştürür kullanıcının verilerini. Bu dize daha sonra writerow()işlevi kullanarak CSV dosyalarına yazmak için kullanılabilir . Bir örnek alalım.

Örnek 3: Bir CSV dosyasına yazın

 import csv with open('protagonist.csv', 'w', newline='') as file: writer = csv.writer(file) writer.writerow(("SN", "Movie", "Protagonist")) writer.writerow((1, "Lord of the Rings", "Frodo Baggins")) writer.writerow((2, "Harry Potter", "Harry Potter")) 

Yukarıdaki programı çalıştırdığımızda , aşağıdaki içeriğe sahip bir protagonist.csv dosyası oluşturulur:

 SN, Film, Kahraman 1, Yüzüklerin Efendisi, Frodo Baggins 2, Harry Potter, Harry Potter 

Yukarıdaki programda dosyayı yazma modunda açtık.

Sonra her satırı bir liste olarak geçtik. Bu listeler, sınırlandırılmış bir dizeye dönüştürülür ve CSV dosyasına yazılır.

Örnek 4: Writerows ile birden çok satır yazma ()

2 boyutlu listenin içeriğini bir CSV dosyasına yazmamız gerekirse, işte bunu nasıl yapabiliriz.

 import csv csv_rowlist = (("SN", "Movie", "Protagonist"), (1, "Lord of the Rings", "Frodo Baggins"), (2, "Harry Potter", "Harry Potter")) with open('protagonist.csv', 'w') as file: writer = csv.writer(file) writer.writerows(csv_rowlist) 

The output of the program is the same as in Example 3.

Here, our 2-dimensional list is passed to the writer.writerows() method to write the content of the list to the CSV file.

Example 5: Writing to a CSV File with Tab Delimiter

 import csv with open('protagonist.csv', 'w') as file: writer = csv.writer(file, delimiter = ' ') writer.writerow(("SN", "Movie", "Protagonist")) writer.writerow((1, "Lord of the Rings", "Frodo Baggins")) writer.writerow((2, "Harry Potter", "Harry Potter")) 

Notice the optional parameter delimiter = ' ' in the csv.writer() function.

The complete syntax of the csv.writer() function is:

 csv.writer(csvfile, dialect='excel', **optional_parameters) 

Similar to csv.reader(), you can also pass dialect parameter the csv.writer() function to make the function much more customizable. To learn more, visit: Writing CSV files in Python

Python csv.DictReader() Class

The objects of a csv.DictReader() class can be used to read a CSV file as a dictionary.

Example 6: Python csv.DictReader()

Suppose we have the same file people.csv as in Example 1.

Name Age Profession
Jack 23 Doctor
Miller 22 Engineer

Let's see how csv.DictReader() can be used.

 import csv with open("people.csv", 'r') as file: csv_file = csv.DictReader(file) for row in csv_file: print(dict(row)) 

Output

 ('Name': 'Jack', ' Age': ' 23', ' Profession': ' Doctor') ('Name': 'Miller', ' Age': ' 22', ' Profession': ' Engineer') 

As we can see, the entries of the first row are the dictionary keys. And, the entries in the other rows are the dictionary values.

Here, csv_file is a csv.DictReader() object. The object can be iterated over using a for loop. The csv.DictReader() returned an OrderedDict type for each row. That's why we used dict() to convert each row to a dictionary.

Notice that, we have explicitly used the dict() method to create dictionaries inside the for loop.

 print(dict(row)) 

Note: Starting from Python 3.8, csv.DictReader() returns a dictionary for each row, and we do not need to use dict() explicitly.

The full syntax of the csv.DictReader() class is:

 csv.DictReader(file, fieldnames=None, restkey=None, restval=None, dialect='excel', *args, **kwds) 

To learn more about it in detail, visit: Python csv.DictReader() class

Python csv.DictWriter() Class

The objects of csv.DictWriter() class can be used to write to a CSV file from a Python dictionary.

The minimal syntax of the csv.DictWriter() class is:

 csv.DictWriter(file, fieldnames) 

Here,

  • file - CSV file where we want to write to
  • fieldnames - a list object which should contain the column headers specifying the order in which data should be written in the CSV file

Example 7: Python csv.DictWriter()

 import csv with open('players.csv', 'w', newline='') as file: fieldnames = ('player_name', 'fide_rating') writer = csv.DictWriter(file, fieldnames=fieldnames) writer.writeheader() writer.writerow(('player_name': 'Magnus Carlsen', 'fide_rating': 2870)) writer.writerow(('player_name': 'Fabiano Caruana', 'fide_rating': 2822)) writer.writerow(('player_name': 'Ding Liren', 'fide_rating': 2801)) 

The program creates a players.csv file with the following entries:

 player_name,fide_rating Magnus Carlsen,2870 Fabiano Caruana,2822 Ding Liren,2801 

The full syntax of the csv.DictWriter() class is:

 csv.DictWriter(f, fieldnames, restval='', extrasaction='raise', dialect='excel', *args, **kwds) 

To learn more about it in detail, visit: Python csv.DictWriter() class

Using the Pandas library to Handle CSV files

Pandas is a popular data science library in Python for data manipulation and analysis. If we are working with huge chunks of data, it's better to use pandas to handle CSV files for ease and efficiency.

Before we can use pandas, we need to install it. To learn more, visit: How to install Pandas?

Once we install it, we can import Pandas as:

 import pandas as pd 

To read the CSV file using pandas, we can use the read_csv() function.

 import pandas as pd pd.read_csv("people.csv") 

Burada, program mevcut dizinden people.csv'yi okur .

Bir CSV dosyasına yazmak için to_csv()DataFrame'in fonksiyonunu çağırmamız gerekir.

 import pandas as pd # creating a data frame df = pd.DataFrame((('Jack', 24), ('Rose', 22)), columns = ('Name', 'Age')) # writing data frame to a CSV file df.to_csv('person.csv') 

Burada pd.DataFrame()yöntemi kullanarak bir DataFrame oluşturduk . Ardından, to_csv()bu nesnenin işlevi person.csv'ye yazmak için çağrılır .

Daha fazla bilgi edinmek için şu adresi ziyaret edin:

  • Python pandas.read_csv (resmi site)
  • Python pandas.pandas.DataFrame.to_csv (resmi site)

Ilginç makaleler...