İçeriğe geç

Python Pandas Kütüphanesi Veri Import/Export İşlemleri

Bir veribilimci olarak, veriyi temizleriz, ön işlemeye sokarız, görselleştiririz, modeller oluştururuz ve oluşturduğumuz modelleri yorumlarız. Fakat bu işlemleri yapmadan önce bilmemiz gereken önemli bir konu var. Verileri Pythona çekmek.

Bu yazımızda belli başlı bazı veri kaynaklarından hangi komutlarla Python’a veri aktarabileceğimizi, hangi parametreleri kullanabileceğimizi ve oluşturduğumuz bir verisetini nasıl dışarı aktarabileceğimizden bahsedeceğim.

Flat File-Düz Dosya Veritabanı: Bildiğiniz metin dosyası. Her satır ayrı bir gözlemi temsil eder. İçerisinde belirli ayrıştırıcılar ile (virgül, tab, noktalı virgül vb.) alan oluşturulur ve veri saklanabilir. Basit bir yapı kullanır. Çoğu zaman ilk satır kolon isimlerini temsil eder. İlişkisel veri tabanları gibi birden çok tablo içeremez. Örnek uzantıları: CSV (comma seperated values), TSV(Tab(sekme) seperated values), TXT.

Kaynak: Flat File nedir?

Verileri çektimiz üç farklı kaynak bulunmakta.

  1. Flat Files
  2. Başka yazılımların sağladığı dosyalar
  3. İlişkisel veri tabanları

merhaba

dünya

Flat Files/Düz Dosyalar

Düz dosyalarda iki farklı formatta veri bulunabilir.

  1. Plain Text
  2. Tabular Data.

Plain Text

Plain text formatı, herhangi bir düzeni olmayan, hikaye gibi yazılmış dümdüz metinlerdir. Aşağıda wikipedi’dan aldığım bir yazı var. Plain text’in gözünüzde canlanması için bu yazıyı plain.txt isimli dosyaya kaydetktim. Sonra da komut satırında yazdırdım.

CMD ortamında plain.txt isimli Plain Text formatındaki yazının incelenmesi.

Gördüğünüz gibi serbestçe yazılmış, herhangi bir ayırıcıyla bölünmemiş ve tablo yapısında değil. Şimdi bu veriyi Python’da nasıl okuyacağımıza geçelim.


file_path = r"C:\Users\EMR\Desktop\plain.txt" 
# baştaki r raw data olduğunu temsil ediyor, herhangi bir hata ile
# karşılaşmamak için kullandık
file = open(file_path,mode="r") 
# okuma modunda olduğumuz için mode = r kullandık
text = file.read()
file.close()
print(text)

Kodumuzun çıktısı şöyle:

okunmuyo la diyenler için: cmd ekranındaki yazı yazıyor

Gördüğünüz gibi yazımızı kocaman bir string şeklinde text değişkenine attık. Bundan sonra istediğimiz işlemi yapabiliriz.

Tabular Data

Arkadaşı pazara gönderirken ben

Tabular veri formu, satırlardan ve sütunlardan oluşan ve herhangi bir şey hakkında bilgi tutan yapılardır. Her satır ayrı bir gözlemi temsil eder. Sütunlarda ise o gözlemlerin belirli bir özelliğini temsil eder. Günlük hayatta oluşturduğumuz basit listeler aslında buna bir örnektir. Örneğin alışveriş listemizi hayal edelim. Temel olarak iki sütunumuz var. Birincisi alınacaklar listesi ikincisi miktarı. Al sana basit bir tabular data örneği. Bu yapıya uyan her şey tabular data olarak nitelendirilebilir.

Bu işlemi dosya haline getirebilmemiz için birkaç kural belirlememiz gerekiyor. İnternet aleminde en popüler olan Tabular Flat dosya saklama şekli CSV. Yani virgülle ayrılmış değerler. Temel yapısı:

  • Çoğu zaman ilk satırda kolon isimleri bulunur. Kolonların sırası önemlidir ve virgülle ayrılmışlardır.
  • Bundan sonraki satırlar gözlemleri niteler. İlk satırdaki kolon sırasına göre özellikler virgüllerle ayrılarak yazılır.

Bu tip dosyalar herhangi bir metin editörü ile açılabilir ve düzenlenebilir(notepad, notepad++,Office Word,Excel…). Kullanımı çok kolaydır.

notepad++

En çok kullanacağımız, en haşır neşir olacağımız tip bu olacaktır. Online eğitim ortamlarında, kaggle’de en çok tercih edilen veri formlarından biridir.

Bu formda kullanılan üç popüler seperatör bulunmakta.

  1. Virgül ile ayrılmış (CSV)
  2. Sekme ile ayrılmış (TSV)
  3. Noktalı virgül ile ayrılmış (bunun için bir uzantı bulamadım ama heralde Semicolon Seperated Value’dir)

Import edelim

import pandas as pd

file_path = r"C:\Users\EMR\Desktop\train.csv"
# CSV
df_comma = pd.read_csv(file_path)
# Noktalı virgül
df_semicolon = pd.read_csv(file_path, sep=";")
# TSV
df_tab = pd.read_csv(file_path, sep="\t")
df_tab2 = pd.read_table(file_path)

Anlaşıldığı üzere sep argümanı ile istediğimiz ayırıcıyı tanımlayabiliriz.

Şimdide bazı önemli argümanlardan bahsedelim.

Eğerki dosyamızda kolon satırı bulunmuyorsa Pandas tablomuza otomatikman 0’dan başlayarak kolon isimleri veriyor.

df = pd.read_csv(file_path,header=None)

Eğer ki kolon isimleri başka bir satırda ise (sıfırdan başlayarak 5. satırda diyelim):

df = pd.read_csv(file_path,header=5)

Görüldüğü gibi kolonun üstündeki değerleri gözardı etti.


Sadece belirli kolonları seçmek için:

col_list = ["col1","col4"]
df = pd.read_csv(file_path,usecols=col_list)

Kolon isimlerini kendimiz belirlemek istiyorsak:

col_name = ["name1","name2","name3","name4"]
df = pd.read_csv(file_path,names=col_name,header=0)
# eğer kolon isimleri dosyamızda bulunuyor ve bizde onları ezip kendi
# isimlendirmemizi yapmak istiyorsak header = 0 argümanını da eklemeliyiz.

Eğer kolon isimleri halihazırda dosyamızda bulunuyor ve bizde onları ezip kendi isimlendirmemizi yapmak istiyorsak header = 0 argümanını da eklemeliyiz.


Excel Sayfasından Import Etmek

Elimde xls uzantılı ornek.xls adında bir dosya var:

sayfa1
sayfa2

Import etmek için:

file_path = r"C:\Users\EMR\Desktop\ornek.xls"
data = pd.ExcelFile(file_path)
print(data.sheet_names)
Çıktımız

Excel dosyamızın bütününü data isimli değişkene atadık.

.sheet_names özelliği ile Excel kitabımızda bulunan sayfaların isimlerini yazdırabilir veya daha komplike işlemler yapmak üzere listeye atabiliriz.

Excel kitabımızdan istediğimiz bir sayfayı DataFrame’e çevirmek için .parse komutunu kullanacağız. Bu yöntemin iki farklı kullanımı bulunmakta. String olarak sayfa ismini verebiliriz veyahut float olarak sayfa indexini. Metod otomatik olarak algılayıp bize istediğimiz sayfayı çeviriyor.

# Sayfa ismi verildiğinde
df1 = data.parse('Sayfa1')
print(df1)

# Sayfa indexi verildiğinde
df2 = data.parse(1)
print(df2)

Turşu Veri Tipi !??

Veribilimci olarak gerçekleştirdiğimiz projemizin gereği olarak sözlük tipindeki değişkenlerle çalışabiliriz. Bazen bu sözlükler çok fazla büyür veya sayısı artabilir. Bazı durumlarda da bu sözlükleri saklayıp daha sonra kullanmak isteyebiliriz veya başkalarına göndermek üzere kaydederiz. Böyle durumlarda python’ da aynı annelerimizin yaptığı gibi bir çözüm sunuyor. Sözlüklerin turşusunu kurmak!

Pickle kütüphanesi sayesinde sözlük yapımızı bir dosyaya kaydedip sonra kullanmak veya başkasına göndermek üzere saklayabiliyoruz. Fakat şunuda unutmamak gerekiyor, pickle konsepti Python için tasarlanmış. Yani başka dillerde oluşturacağımız projeler arasında veri aktarımı yapacaksak pickle veri tipini tercih etmemeliyiz. Teknik zorluklar yaşatabilir.

anneeaa dikşıneri turşusu nası yapılıyooo

Sözül dışında şu veri tipleride pickle objesine dönüştürülebilir:

  • Booleans
  • Integer
  • Float
  • String
  • Liste
  • Set

Pickle objelerini kullanabilmek için öncelikle pickle kütüphanesini import etmeliyiz.

import pickle

Şimdi örnek bir sözlük oluşturalım.

# kediler ve yaşları
cats_dict= { 'Tekir': 3, 'Bulut': 8, 'ObiWanKedobi': 5, 'Tırmık': 1, 'Haydut': 12, 'Pamuk': 4, 'Caddy': 2 }

Oluşturacağımız dosyanın ismini belirtelim ve oluşturacağımız dosyayı açalım. Burada open() fonksyonunu kullanacağız. Argüman olarak ilk önce dosya ismini alacak, sonrada “wb” ifadesini alacak. “w” dosyaya yazacağımızı, “b” binary modunda olacağımızı simgeliyor.

dosya_ismi = "kediler"
outfile = open(dosya_ismi,"wb")

Dosyamızı üzerine yazmak üzere açtık. Şimdi pickle.dump() metodu ile turşusunu kurmak istediğimiz objemizi dosyamıza yazacağız. pickle.dump() için iki argüman kullanacağız. Birincisi dışarı aktarmak istediğimiz obje- ki burda “cats_dict”- ikincisi hangi dosyaya yazacağımız – ki o da “outfile”-. Bu arada işlemi bitirdikten sonra dosyayı kapatmayıda unutmuyoruz. Bu işlemide outfile.close() fonksyonuyla yapıyoruz.

pickle.dump(cat_dict,outfile)
outfile.close()

Not: Oluşturduğunuz dosya otomatikman proje dizininizde belirecek.

Pickle dosyalarını okumak

Pickled dosyaları okumak için ise pickle.load() fonksyonunu kullanacağız.

infile = open(dosya_ismi,'rb')
new_dict = pickle.load(infile)
infile.close()
print(new_dict)
Çıktımız

Burada dosyayı açarken “rb” argümanını kullandık. “r” = read, “b” = binary mode.

Daha fazla bilgi için tıklayabilirsiniz.


Python’da oluşturduğumuz DataFrame’i dışarı aktarma

Girdiniz kaggleye, Titanik verisetini indirdiniz, kendi notebook’unuzda evirdiniz çevirdiniz. Veri ön işleme, görselleştirme, temizleme vesaire derken kurdunuz modeli, yaptınız tahminleri. Elinizde tahminlerin olduğu bir dataframe var fakat nasıl import edeceğinizi bilmiyorsunuz. İşte burda şu kod devreye giriyor:

# örnek veriseti oluşturma
arabalar = {'Marka': ['Honda Civic','Toyota Corolla','Ford Focus','Audi A4'],'Fiyat': [220000,250000,270000,350000]}
df = pd.DataFrame(arabalar)
df.to_csv (r'C:\Users\EMR\Desktop\export_dataframe.csv', index = False, header=True)

index = False argümanı export ederken index’i dosyaya eklemiyor

header = True argümanı ise kolon isimlerini dosyaya ekliyor.


Bu yazımda temel olarak import/export işlemlerini öğrendik. Bir sonraki yazıda görüşmek üzere.

Vazgeçme, erteleme, üşenme…

Tarih:PythonVeri Bilimi