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

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

A CSV (Virgülle Ayrılmış Değerler) dosyası her satırın bir veri kaydını temsil ettiği ve her kayıt içindeki alanların virgüllerle ayrıldığı düz metin dosyasıdır. Basitliği ve okunabilirliği nedeniyle genellikle elektronik tablolar ve veritabanları için kullanılır.

Python'da Python CSV dosyalarıyla çalışırken gerçekleştirdiğimiz bazı işlemler aşağıda verilmiştir.

CSV dosyasını okuma

CSV dosyasından okuma, okuyucu nesnesi kullanılarak yapılır. CSV dosyası, Python'un bir dosya nesnesi döndüren yerleşik open() işleviyle bir metin dosyası olarak açılır. Bu örnekte ilk önce CSV dosyasını READ modunda açıyoruz, dosya nesnesi csv.reader nesnesine dönüştürülür ve daha fazla işlem gerçekleşir. Kod ve detaylı açıklama aşağıda verilmiştir.

Python
   import   csv   filename   =   'aapl.csv'   # File name   fields   =   []   # Column names   rows   =   []   # Data rows   with   open  (  filename     'r'  )   as   csvfile  :   csvreader   =   csv  .  reader  (  csvfile  )   # Reader object   fields   =   next  (  csvreader  )   # Read header   for   row   in   csvreader  :   # Read rows   rows  .  append  (  row  )   print  (  'Total no. of rows:   %d  '   %   csvreader  .  line_num  )   # Row count   print  (  'Field names are: '   +   ' '  .  join  (  fields  ))   print  (  '  n  First 5 rows are:  n  '  )   for   row   in   rows  [:  5  ]:   for   col   in   row  :   print  (  '  %10s  '   %   col     end  =  ' '  )   print  (  '  n  '  )   

Çıkış

Python

Yukarıdaki örnekte bir CSV dosyası kullanılmaktadır aapl.csv hangisinden indirilebilir Burada .

Açıklama:

  • açık(...) CSV dosyasını bir içerik yöneticisi kullanarak güvenli bir şekilde okuma modunda açar.
  • csv.reader(csv dosyası) dosyayı bir CSV okuyucu nesnesine dönüştürür.
  • sonraki(csvreader) ilk satırı sütun başlıkları olarak çıkarır.
  • Döngü csvreader her satırı (liste olarak) satırlara eklemek için.
  • Biçimlendirilmiş bir görünümde toplam satır başlıklarını ve ilk 5 veri satırını yazdırın.

CSV Dosyalarını csv ile Sözlüğe Okumak

Python'daki csv modülünü ve csv.DictReader sınıfını kullanarak bir CSV dosyasını bir sözlüğe okuyabiliriz. İşte bir örnek:

Diyelim ki elimizde bir çalışanlar.csv içindeki dosya ve içerik şöyle olacaktır:

namedepartmentbirthday_month
John SmithHRTemmuz
Alice JohnsonITEkim
Bob WilliamsFinansOcak

Örnek: Bu, her satırı bir sözlük olarak okur (başlıklar anahtar olarak) ve ardından onu list öğesine ekler.

Python
   import   csv   with   open  (  'employees.csv'     mode  =  'r'  )   as   file  :   csv_reader   =   csv  .  DictReader  (  file  )   # Create DictReader   data_list   =   []   # List to store dictionaries   for   row   in   csv_reader  :   data_list  .  append  (  row  )   for   data   in   data_list  :   print  (  data  )   

Çıkış:

{'name': 'John Smith' 'departmanı': 'İK' 'birthday_month': 'Temmuz'}
{'name': 'Alice Johnson' 'bölüm': 'IT' 'birthday_month': 'Ekim'}
{'name': 'Bob Williams' 'departmanı': 'Finans' 'birthday_month': 'Ocak'}

Açıklama:

  • açık(...) dosyayı bir içerik yöneticisi kullanarak açar.
  • csv.DictReader(dosya) Başlıkları anahtar olarak kullanarak her satırı bir sözlük olarak okur.
  • data_list.append(satır) her sözlüğü bir listede saklar.

CSV dosyasına yazma

CSV dosyasına yazmak için öncelikle CSV dosyasını WRITE modunda açıyoruz. Dosya nesnesi csv.writer nesnesine dönüştürülür ve diğer işlemler gerçekleştirilir. Kod ve detaylı açıklama aşağıda verilmiştir.

Python
   import   csv   # Define header and data rows   fields   =   [  'Name'     'Branch'     'Year'     'CGPA'  ]   rows   =   [   [  'Nikhil'     'COE'     '2'     '9.0'  ]   [  'Sanchit'     'COE'     '2'     '9.1'  ]   [  'Aditya'     'IT'     '2'     '9.3'  ]   [  'Sagar'     'SE'     '1'     '9.5'  ]   [  'Prateek'     'MCE'     '3'     '7.8'  ]   [  'Sahil'     'EP'     '2'     '9.1'  ]   ]   filename   =   'university_records.csv'   with   open  (  filename     'w'  )   as   csvfile  :   csvwriter   =   csv  .  writer  (  csvfile  )   # Create writer object   csvwriter  .  writerow  (  fields  )   # Write header   csvwriter  .  writerows  (  rows  )   # Write multiple rows   

Açıklama:

  • alanlar sütun başlıklarını ve satırları tanımlar, verileri listeler halinde içerir.
  • ile açık(... 'w') dosyayı bir içerik yöneticisi kullanarak yazma modunda açar.
  • csv.writer(csv dosyası) CSV'ye yazmak için bir yazar nesnesi oluşturur.
  • yazma satırı(alanlar) başlık satırını dosyaya yazar.
  • satırlar(satırlar) tüm veri satırlarını aynı anda CSV'ye yazar.

CSV dosyasına sözlük yazma

Bir CSV dosyasına sözlük yazmak için dosya nesnesi (csvfile) bir DictWriter nesnesine dönüştürülür. Açıklama ve kodla birlikte ayrıntılı örnek aşağıda verilmiştir.

Python
   # importing the csv module   import   csv   # my data rows as dictionary objects   mydict   =   [{  'branch'  :   'COE'     'cgpa'  :   '9.0'     'name'  :   'Nikhil'     'year'  :   '2'  }   {  'branch'  :   'COE'     'cgpa'  :   '9.1'     'name'  :   'Sanchit'     'year'  :   '2'  }   {  'branch'  :   'IT'     'cgpa'  :   '9.3'     'name'  :   'Aditya'     'year'  :   '2'  }   {  'branch'  :   'SE'     'cgpa'  :   '9.5'     'name'  :   'Sagar'     'year'  :   '1'  }   {  'branch'  :   'MCE'     'cgpa'  :   '7.8'     'name'  :   'Prateek'     'year'  :   '3'  }   {  'branch'  :   'EP'     'cgpa'  :   '9.1'     'name'  :   'Sahil'     'year'  :   '2'  }]   # field names   fields   =   [  'name'     'branch'     'year'     'cgpa'  ]   # name of csv file   filename   =   'university_records.csv'   # writing to csv file   with   open  (  filename     'w'  )   as   csvfile  :   # creating a csv dict writer object   writer   =   csv  .  DictWriter  (  csvfile     fieldnames  =  fields  )   # writing headers (field names)   writer  .  writeheader  ()   # writing data rows   writer  .  writerows  (  mydict  )   

Çıkış

Pythoncsv dosyası

Bir CSV dosyasının düz metin olarak şöyle göründüğünü düşünün:

üniversite kaydıüniversite kaydı

Açıklama:

  • açık(...) Bağlam yöneticisini kullanarak dosyayı güvenli bir şekilde açar.
  • csv.DictWriter(... ) sözlük anahtarlarını CSV sütunlarıyla eşler.
  • yazma başlığı() Sütun başlıklarını yazar.
  • yazma satırları(mydict) tüm sözlükleri CSV satırları olarak yazar.

CSV Dosyalarını Pandalarla Okumak

bir tane okuyabiliriz Python CSV'si Pandaların kullanıldığı dosyalar pandalar.read_csv() işlev. İşte bir örnek:

Bir çalışanlar.csv dosyamız olduğunu ve içindeki içeriğin şöyle olacağını varsayalım:

namedepartmentbirthday_month
John SmithHRTemmuz
Alice JohnsonITEkim
Bob WilliamsFinansOcak

Bu örnekte pd.read_csv(), CSV dosyasını bir Pandas DataFrame'e okur. Ortaya çıkan DataFrame, çeşitli veri işleme ve analiz görevleri için kullanılabilir.

Python
   import   pandas   as   pd   # Read the CSV file into a DataFrame   df   =   pd  .  read_csv  (  'employees.csv'  )   # Display the DataFrame   print  (  df  )   

Çıkış:

isim departmanı doğum günü_ayı
0 John Smith HR Temmuz
1 Alice Johnson BT Ekim
2 Bob Williams Finans Ocak

Panda'nın DataFrame işlevselliğini kullanarak belirli sütun filtre verilerine erişebilir ve çeşitli işlemler gerçekleştirebiliriz. Örneğin 'name' sütununa erişmek istiyorsak df['name'] komutunu kullanabiliriz.

Python
   # Access the 'name' column   names   =   df  [  'name'  ]   print  (  names  )   

Çıkış :

0 John Smith
1 Alice Johnson
2 Bob Williams
Ad: ad türü: nesne

Pandalarla CSV Dosyaları Yazma

CSV dosyalarını yazmak için Pandaları kullanabiliriz. Kullanılarak yapılabilir pd.DataFrame() işlev. Bu örnekte Pandalar kütüphane, sözlüklerin (mydict) listesini tablo verilerini temsil eden bir DataFrame'e dönüştürmek için kullanılır. DataFrame daha sonra to_csv yöntemini kullanarak 'output.csv' adlı bir Python CSV dosyasına yazılır ve daha fazla analiz veya paylaşım için yapılandırılmış ve okunabilir bir veri dosyası oluşturulur.

Python
   import   pandas   as   pd   mydict   =   [   {  'branch'  :   'COE'     'cgpa'  :   '9.0'     'name'  :   'Nikhil'     'year'  :   '2'  }   {  'branch'  :   'COE'     'cgpa'  :   '9.1'     'name'  :   'Sanchit'     'year'  :   '2'  }   {  'branch'  :   'IT'     'cgpa'  :   '9.3'     'name'  :   'Aditya'     'year'  :   '2'  }   {  'branch'  :   'SE'     'cgpa'  :   '9.5'     'name'  :   'Sagar'     'year'  :   '1'  }   {  'branch'  :   'MCE'     'cgpa'  :   '7.8'     'name'  :   'Prateek'     'year'  :   '3'  }   {  'branch'  :   'EP'     'cgpa'  :   '9.1'     'name'  :   'Sahil'     'year'  :   '2'  }   ]   # Create a DataFrame from the list of dictionaries   df   =   pd  .  DataFrame  (  mydict  )   # Write the DataFrame to a CSV file   df  .  to_csv  (  'output.csv'     index  =  False  )   

Çıkış CSV Dosyası:

şubecgpanameyear
COE9.0Nikhil2
COE9.1Sanchit2
IT9.3Aditya2
SE9.5Sagar1
MCE7.8Prateek3
EP9.1Sahil2

E-postaları CSV dosyalarında saklama

CSV modülünü içe aktararak başlıyoruz ve onu adları ve e-postaları virgülle ayrılmış değerler olarak depolamak için kullanıyoruz. open() işlevini kullanarak bir CSV dosyası oluşturuyoruz ve ardından her satırı, adlar ve e-postalar için ayrı sütunlara sahip bir yazıcı nesnesi kullanarak yazıyoruz.

Python
   # importing the csv module   import   csv   # field names   fields   =   [  'Name'     'Email'  ]   # data rows of csv file   rows   =   [   [  'Nikhil'     '[email protected]'  ]   [  'Sanchit'     '[email protected]'  ]   [  'Aditya'     '[email protected]'  ]   [  'Sagar'     '[email protected]'  ]   [  'Prateek'     '[email protected]'  ]   [  'Sahil'     '[email protected]'  ]]   # name of csv file   filename   =   'email_records.csv'   # writing to csv file   with   open  (  filename     'w'  )   as   csvfile  :   # creating a csv writer object   csvwriter   =   csv  .  writer  (  csvfile  )   # writing the fields   csvwriter  .  writerow  (  fields  )   # writing the data rows   csvwriter  .  writerows  (  rows  )   

Çıkış:

CSVCSV'deki e-postalar Test Oluştur