Anasayfa / Uygulama Araçları / Python / Python Pandas ile Aynı Anda Birden Fazla CSV Dosyasını Okumak

Python Pandas ile Aynı Anda Birden Fazla CSV Dosyasını Okumak

Bazen bir dizin içindeki tüm csv uzantılı dosyaları okuyup tek bir dataframe yapmak isteyebiliriz. Apache Spark bunu rahatlıkla yapabilirken pandas read_csv bunu tek başına yapamıyor maalesef. Basit okumada mutlaka csv uzantılı dosya ismini belirtmemiz gerekiyor. Aşağıda dosya ismini belirtmeden bir dizindeki csv dosyalarını okuyup tek bir pandas dataframe yapma ile ilgili bir örnek paylaşacağım. Ancak burada csv dosyalarının aynı formata sahip olması gereklidir. Eğer formatta dosyalar varsa bunları tek bir dataframe içinde toplayamayız. Bu durumda aşağıda bahsedilen bir sonraki yöntemi kullanmalısınız.

import pandas as pd
import glob
all_data = pd.DataFrame()
for f in glob.glob("dizin\*.csv"):
    df = pd.read_csv(f,sep=",")
    all_data = all_data.append(df,ignore_index=True)

Bir dizinde bulunan csv dosyalarının her birini farklı bir dataframe içinde tutma

Şayet dizin içindeki dosyaların şemaları aynı değil ise hepsini okuyup farklı farklı dataframe’lere atamamız gerekir. Aşağıda bununla ilgili bir örneği göreceksiniz. Her bir csv dosyanın ismini anahtar yaparak tüm dosyaları dataframe halinde python dictionary içinde topluyor. Bundan sonra dilerseniz istediğinizi bağımsız bir isme atayıp sözlük dışında kullanabilirsiniz.

import os
# csv dosyaları different_csvs içinde
directory_in_str = os.getcwd()+"\\different_csvs"
print(directory_in_str)

Çıktısı:
'D:\\egitim\\verilen\\vbo_blog\\erkan\\read-csvs-in-a-folder\\different_csvs'

Dizinde ne var ne yok bir bakalım. Csv dosyalarını adlarıyla listeleyelim.

directory = os.fsencode(directory_in_str)

for file in os.listdir(directory):
    filename = os.fsdecode(file)
    print(filename)

Çıktısı:
Churn_Modelling.csv
healthcare_insurance.csv
iris.csv
Kidem_ve_Maas_VeriSeti.csv

Dizinde dört farklı csv dosyası olduğunu anlıyoruz. Şimdi dizinde ne kadar csv dosyası varsa anahtarları dosya ismi olacak şekilde okuyup python dictionary içine koyalım.

directory = os.fsencode(directory_in_str)
dfs_dict = {}
for file in os.listdir(directory):
    filename = os.fsdecode(file)
    key = filename.replace(".csv","")
    dfs_dict[key] = pd.read_csv(directory_in_str+"\\"+filename)

Kontrol edelim okunmuş mu?

dfs_dict['Churn_Modelling'].head()
RowNumberCustomerIdSurnameCreditScoreGeographyGenderAgeTenureBalanceNumOfProductsHasCrCardIsActiveMemberEstimatedSalaryExited
0115634602Hargrave619FranceFemale4220.00111101348.881
1215647311Hill608SpainFemale41183807.86101112542.580
2315619304Onio502FranceFemale428159660.80310113931.571
3415701354Boni699FranceFemale3910.0020093826.630
4515737888Mitchell850SpainFemale432125510.8211179084.100
dfs_dict['healthcare_insurance'].head()
agesexbmichildrensmokerregioncharges
019female27.9000yessouthwest16884.92400
118male33.7701nosoutheast1725.55230
228male33.0003nosoutheast4449.46200
333male22.7050nonorthwest21984.47061
432male28.8800nonorthwest3866.85520

Kaynak dosya ve kodlar için tıklayınız

Umarım faydalı bir örnek olmuştur. Hoşçakalın.

Hakkında Erkan ŞİRİN

2014'ten beri hem akademik alanda hem de sektörde pratik anlamda büyük veri ve veri bilimi ile ilgili çalışmalar yürütmektedir. Halihazırda İmpektra Bilişim A.Ş.'de büyük veri yöneticisi olarak çalışmakta olup aynı zamanda Gazi Üniversitesi Yönetim Bilişim Sistemleri doktora öğrencisidir. Büyük veri ve veri bilimi ile ilgili birçok kurum ve şirkete eğitimler vermekte ve projeler icra etmektedir. Çalışma alanları: büyük veri platformlarının kurulum ve yönetimi, büyük veri üzerinde makine öğrenmesi, olağan dışılık tespiti, sahtecilik tespiti, veri hazırlama sürecidir.

GÖZ ATMAK İSTEYEBİLİRSİNİZ

Word2Vec

Aralık ayı blog yazımın konusu olan, word2vec'ten yani kelime temsil (word embedding) yöntemini teoride açıkladıktan sonra Pyhton programlama dili ile uygulamasını yaptım.

3 yorumlar

  1. Hocam Elinize sağlık güzel bilgi vermişsiniz. Peki bu dosyaları yine topluca okuyup ayrı ayrı dataframelere yazmak istersek ne yapmamız lazım? mesela;
    df1= ilk.csv
    df2=ikinci.csv

    • Merhaba. Sorduğunuz husus yazıya eklenmiştir. Umarım işinizi görür.

      • Hocam, öncelikle hızlı dönüşünüz ve ilginiz için çok teşekkür ederim. Eklediğiniz kısım çok işime yaradı. Onun için de ayrıca teşekkür ediyorum. İyi çalışmalar,

Bir cevap yazın

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir