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('nFirst 5 rows are:n') for row in rows[:5]: for col in row: print('%10s' % col end=' ') print('n')
Çıkış
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.
Pythonimport 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:
Aktris Rakul Preet Singh
- 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.
Pythonimport 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ış
csv dosyasıBir CSV dosyasının düz metin olarak şöyle göründüğünü düşünün:
java dizesini biçimlendir
ü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.
Pythonimport 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.
Pythonimport 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ış:
CSV'deki e-postalar Test Oluştur