Python Pandas ile Temel İşlemler-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('http://www.datascience.istanbul/data/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('http://www.datascience.istanbul/data/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. Pandas ile ilgili bir iki yazı daha yazmayı planlıyorum. Veriyle kalın…

Python Pandas ile Temel İşlemler-1 (Dosya okuma, Sütun İsimlendirme)” için 2 yorum

  • 9 Ekim 2018 tarihinde, saat 12:03
    Permalink

    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.

    Yanıtla
    • 20 Ocak 2019 tarihinde, saat 21:53
      Permalink

      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.

      Yanıtla

Bir cevap yazın

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