Veri Bilimi Okulu

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

Loading

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 farklı formatta dosyalar varsa bunları tek bir dataframe içinde toplayamayız. Bu durumda bir sonraki başlıkta bahsedilen 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.

0

4 Responses

Bir yanıt yazın

Password Requirements:

  • At least 8 characters
  • At least 1 lowercase letter
  • At least 1 uppercase letter
  • At least 1 numerical number
  • At least 1 special character