Python Pandas ile Temel İşlemler
Bölüm 1 – Dosya Okuma & Sütun İsimlendirme
Pandas; veri analizi ve veri ön işlemeyi kolaylaştıran açık kaynak kodlu bir kütüphanedir. Dil olarak Python kullanır. Pandas dağıtık işlemeye uygun değildir. Bu sebeple işleyeceğiniz verinin büyüklüğü makinenin kapasitesiyle sınırlıdır, özellikle de ana belleğin. Ben büyük veri setleri üzerinde işlem yaptığım için Pandas’ı çok fazla kullanamıyorum ancak bazı ufak tefek işleri yapıyorum yine de. Bu yazımda Pandas ile temel olarak neler yapılabilir, daha doğrusu ben çoğunlukla neler yapıyorum sizlerle paylaşacağım.
import pandas as pd
Pandas ile csv Dosyası Okumak
csv dosyamızı okuyalım ve bir değişkene atayalım. Dosyayı buradan indirebilirsiniz.
ufo = pd.read_csv('https://raw.githubusercontent.com/erkansirin78/datasets/master/uforeports.csv')
head() metodu ile veri setimizin ilk beş kaydına bir bakalım.
ufo.head()
City | Colors Reported | Shape Reported | State | Time | |
---|---|---|---|---|---|
0 | Ithaca | NaN | TRIANGLE | NY | 6/1/1930 22:00 |
1 | Willingboro | NaN | OTHER | NJ | 6/30/1930 20:00 |
2 | Holyoke | NaN | OVAL | CO | 2/15/1931 14:00 |
3 | Abilene | NaN | DISK | KS | 6/1/1931 13:00 |
4 | New York Worlds Fair | NaN | LIGHT | NY | 4/18/1933 19:00 |
Veri setimiz kaç satır, kaç sütun yani boyutları nedir shape niteliğinden öğreniyoruz.
ufo.shape (18241, 5)
Pandas ile csv Dosyasından Belirli Sütunları Okumak
Veri setindeki bazı niteliklerle işimiz yok ise en başta okurken sadece işimize yarayanları okuyabiliriz. Bunun için read_csv() metoduna sadece bir argüman eklememiz yeterli. Bu argüman bir liste ve bu listede seçilmek istenen sütun isimleri bulunur.
ufo_two_cols = pd.read_csv('https://raw.githubusercontent.com/erkansirin78/datasets/master/uforeports.csv', usecols=['State','Time'])
Pandas ile Sütun İsimlerini Değiştirmek
Haydi sütun isimlerini Türkçe yapalım. Öncelikle beş tane sütun isminin Türkçe karşılıklarını bir Python listesine atacağız. Sonra da bu listedeki isimleri veri setimizin sütun isimleriyle değiştireceğiz.
turkce_sutun_isimleri = ['Sehir','Renk','Sekil','Eyalet','Zaman'] ufo.columns = turkce_sutun_isimleri
Sonucu head() metoduyla hep beraber görelim.
ufo.head()
Sehir | Renk | Sekil | Eyalet | Zaman | |
---|---|---|---|---|---|
0 | Ithaca | NaN | TRIANGLE | NY | 6/1/1930 22:00 |
1 | Willingboro | NaN | OTHER | NJ | 6/30/1930 20:00 |
2 | Holyoke | NaN | OVAL | CO | 2/15/1931 14:00 |
3 | Abilene | NaN | DISK | KS | 6/1/1931 13:00 |
4 | New York Worlds Fair | NaN | LIGHT | NY | 4/18/1933 19:00 |
Pandas ile Sütun Seçmek
Seçme işlemini iki yöntemle yapıyoruz. Mesela Sehir sütununu seçelim:
ufo['Sehir'] veya ufo.Sehir 0 Ithaca 1 Willingboro 2 Holyoke 3 Abilene ... 18237 Spirit Lake 18238 Eagle River 18239 Eagle River 18240 Ybor Name: Sehir, dtype: object
Sonuç yukarıda görüldüğü gibidir. Aslında daha uzun bir liste görülür ancak ben makalemi kısa tutmak adına daha azını buraya aldım. İki yöntemin kullanımı şu şekilde farklılaşabilir. Eğer sütun isminiz boşluk içeriyorsa mutlaka köşeli parantez kullanmalısınız. Nitelik kullanımı ise ancak boşluksuz sütun isimlerinde kullanılabilir.
Pandas ile Sütun Birleştirmek
Şehir ve Eyalet sütunlarını tek sütun altında birleştirmek isteyelim ve bu sütunları virgülle ayıralım.
ufo['SehirEyalet'] = ufo.Eyalet + ', ' + ufo.Sehir
Sehir | Renk | Sekil | Eyalet | Zaman | SehirEyalet | |
---|---|---|---|---|---|---|
0 | Ithaca | NaN | TRIANGLE | NY | 6/1/1930 22:00 | NY, Ithaca |
1 | Willingboro | NaN | OTHER | NJ | 6/30/1930 20:00 | NJ, Willingboro |
2 | Holyoke | NaN | OVAL | CO | 2/15/1931 14:00 | CO, Holyoke |
3 | Abilene | NaN | DISK | KS | 6/1/1931 13:00 | KS, Abilene |
4 | New York Worlds Fair | NaN | LIGHT | NY | 4/18/1933 19:00 | NY, New York Worlds Fair |
yukarıdaki tabloda görüldüğü gibi SehirEyalet adında yeni bir sütun oluştu.
Pandas ile Veri Setindeki Veri Tiplerini Yazdırmak
Veri setinde hangi nitelikler var ve bunların türü nedir görmek için dtypes niteliğini kullanıyoruz. Sonuç bir nevi şema gibi aslında. Bundan önce veri setimizde farklı bir nitelik türü olması açısından id sütunu ekleyelim. id sütununda satır sayısı kadar bir bir artan rakamlar olacak.
ufo['id'] = range(0,18241)
range(0,18241) fonksiyonu 0’dan 18241’e kadar bir liste oluşturdu ve bu listeyi alıp sütun halinde id niteliğinin altına ufo[‘id’] komutuyla koyduk. Şimdi veri türlerini yazdırabiliriz.
ufo.dtypes Sehir object Renk object Sekil object Eyalet object Zaman object SehirEyalet object id int64 dtype: object
Pandas ile Sütunları Yeniden Adlandırmak
Yukarıda sütun isimlerini tamamen değiştirmiş ve Türkçe yapmıştık. Şimdi ise sütun isimlerini değiştireceğiz. Bunun için rename() metodunu kullanacağız. Aşağıda Sehir sütun ismini değiştirerek Sehir_Yeni yapacak kodu bulacaksınız.
ufo.rename(columns ={'Sehir':'Sehir_Yeni'},inplace=True)
Kontrol edelim değişmiş mi?
ufo.columns Index([u'Sehir_Yeni', u'Renk', u'Sekil', u'Eyalet', u'Zaman', u'SehirEyalet',u'id'], dtype='object')
Evet değişmiş. Şimdilik burada kesiyorum. Aşağıdan 2. sayfaya tıklayarak yeni bölüme bakabilirsiniz. Veriyle kalın…
Mehaba. yukarıda türkçe sütun isimlerini değiştirmeden önce sütun sayısını 2’ye düşürdüğünüz için uyarı veriyor. Dolayısıyla sütun sayısını düşürmeden isim değişikliği yaptım. Bilginize. paylaşımlarınız için tşk ederim.
Merhaba. Haklısınız. Düzeltme yaptım. İki sütun için dataframe’i “ufo_two_cols” ismiyle tuttuk. Çok teşekkürler.