Özetlemek gerekirse: Bir DataFrame için .shape satır ve sütun sayısını içeren bir demet döndürür. Bir Series içinse satır sayısını döndürür. .shape’i veri kümenizin boyutunu hızlıca kontrol etmek veya filtreleme ve seçim sonuçlarını doğrulamak için kullanın. Ayrıca, .shape bir özniteliktir; erişmek için parantez kullanmanıza gerek yoktur.
Bu eğitimdeki tüm örnek kodları kendiniz kolayca çalıştırmak için, Python’un önceden kurulu olduğu ve tüm kod örneklerini içeren ücretsiz bir DataLab çalışma kitabı oluşturabilirsiniz.
Bir DataFrame’iniz varsa ve bu DataFrame’den belirli birkaç satır/sütuna erişmek veya onları seçmek istiyorsanız, köşeli parantezleri veya loc ve iloc gibi gelişmiş yöntemleri kullanabilirsiniz.
Köşeli Parantezlerle Sütun Seçme
Şimdi, brics DataFrame’inden country sütununu seçmek istediğinizi varsayalım. Bunu yapmak için brics yazıp köşeli parantez içine sütun etiketini girersiniz.
Bir sütun seçme
country capital area population
BR Brazil Brasilia 8.516 200.40
RU Russia Moscow 17.100 143.50
IN India New Dehli 3.286 1252.00
CH China Beijing 9.597 1357.00
SA South Africa Pretoria 1.221 52.98
brics["country"]
BR Brazil
RU Russia
IN India
CH China
SA South Africa
Name: country, dtype: object
Nesnenin türünü kontrol etme
Dönen nesnenin türünü type() fonksiyonu ile kontrol edelim.
type(brics["country"])
pandas.core.series.Series
Yukarıdaki çıktıda gördüğümüz gibi, burada bir pandas Series ile çalışıyoruz! Series, etiketlenebilen ve DataFrame’e benzer şekilde isimlendirilebilen tek boyutlu diziler olarak düşünülebilir.
Veriyi seçip DataFrame olarak tutmak istiyorsanız, çift köşeli parantez kullanmanız gerekir:
brics[["country"]]
BR Brazil
RU Russia
IN India
CH China
SA South Africa
Bu çıktının türünü kontrol edersek, bir DataFrame olduğunu görürüz! Yalnızca tek bir sütun içeriyor olsa da.
type(brics[["country"]])
pandas.core.frame.DataFrame
.shape özniteliğini anlama
Şimdi de .shape özniteliğine bakalım. pandas’ta .shape, bir DataFrame veya Series’in yapısını hızlıca görmenin bir yolunu sunar. Bir DataFrame için satır ve sütun sayısını, bir Series için ise yalnızca satır sayısını belirten bir demet (tuple) döndürür.
Örnek: .shape’i bir DataFrame ile kullanma
Yeniden brics adlı DataFrame’imize bakalım:
import pandas as pd
# Sample DataFrame
data = {
"country": ["Brazil", "Russia", "India", "China", "South Africa"],
"capital": ["Brasilia", "Moscow", "New Delhi", "Beijing", "Pretoria"],
"area": [8.516, 17.1, 3.286, 9.597, 1.221],
"population": [200.4, 143.5, 1252, 1357, 52.98],
}
brics = pd.DataFrame(data, index=["BR", "RU", "IN", "CH", "SA"])
# Check the shape
print(brics.shape)
Çıktı:
(5, 4)
Bu, brics DataFrame’inin 5 satır ve 4 sütundan oluştuğunu söyler.
Örnek: .shape’i bir Series ile kullanma
DataFrame’den tek bir sütun seçtiğinizde, örneğin country sütunu, sonuç bir Series olur. Bu durumda .shape şöyle davranır:
country_series = brics["country"]
print(country_series.shape)
Çıktı:
(5,)
Burada Series 5 satıra ve sütun olmadığı için tek boyutlu bir yapıya sahiptir.
Birden fazla sütun seçme
Bu çağrıyı iki sütun seçecek şekilde genişletebilirsiniz. country ve capital sütunlarını seçmeyi deneyelim.
brics[["country", "capital"]]
country capital
BR Brazil Brasilia
RU Russia Moscow
IN India New Dehli
CH China Beijing
SA South Africa Pretoria
Dikkat ederseniz, aslında sütun etiketlerinden oluşan bir listeyi başka bir köşeli parantez setinin içine koyuyor ve yalnızca country ile capital sütunlarını içeren bir alt DataFrame elde ediyorsunuz.
Köşeli Parantezlerle Satır Seçme
Köşeli parantezler yalnızca sütun seçmekten fazlasını yapabilir. Bir DataFrame’den satırları, yani gözlemleri, almak için de kullanabilirsiniz.
Örnek
Köşeli parantezlerle satır seçimini yalnızca 0:4 gibi bir dilim belirttiğinizde yapabilirsiniz. Ayrıca burada satır etiketlerini değil, satırların tamsayı indekslerini kullanırsınız!
brics DataFrame’inin ikinci, üçüncü ve dördüncü satırlarını almak için 1’den 4’e kadar olan dilimi kullanırız. Unutmayın: Dilimin sonu hariçtir ve indeks sıfırdan başlar.
brics[1:4]
country capital area population
RU Russia Moscow 17.100 143.50
IN India New Delhi 3.286 1252.00
CH China Beijing 9.597 1357.00
Bu köşeli parantezler işe yarar, ancak sundukları işlevsellik sınırlıdır. Tercihen, köşeli parantezlerin de kullanıldığı 2B Numpy dizilerine benzer bir şey isterdik. Virgülden önceki indeks veya dilim satırlara, virgülden sonraki ise sütunlara karşılık gelir.
2B Numpy dizi örneği:
my_array[rows, columns]
pandas ile benzer bir şey yapmak istiyorsanız, loc ve iloc fonksiyonlarını kullanmaya bakmalısınız.
-
loc: etikete dayalı -
iloc: tamsayı konumuna dayalı
loc Fonksiyonu
loc, verinizin bölümlerini etiketlere göre seçmek için bir tekniktir. brics DataFrame’ine bakalım ve Rusya için satırları alalım.
Bunu yapmak için, ilgilendiğiniz etiketi loc’dan sonra köşeli parantez içine yerleştirirsiniz.
Satır seçme
brics.loc["RU"]
country Russia
capital Moscow
area 17.1
population 143.5
Name: RU, dtype: object
Tüm satır bilgilerini içeren bir pandas Series elde ediyoruz; ancak, farklı satırlarda gösterildiği için çok elverişli değil. Bir DataFrame elde etmek için RU dizgesini başka bir köşeli parantez çifti içine koymalıyız. Aynı anda birden fazla satır da seçebiliriz. Diyelim ki Hindistan ve Çin’i de dahil etmek istiyorsunuz. Bu satır etiketlerini listeye eklemeniz yeterli.
brics.loc[["RU", "IN", "CH"]]
country capital area population
RU Russia Moscow 17.100 143.50
IN India New Delhi 3.286 1252.00
CH China Beijing 9.597 1357.00
loc ile temel köşeli parantez kullanımı arasındaki fark, seçimi bir virgül ve ilgilendiğiniz sütunların belirtimiyle genişletebilmenizdir.
Satır ve sütun seçme
Önceki çağrıyı yalnızca country ve capital sütunlarını içerecek şekilde genişletelim. Bir virgül ekleyip tutmak istediğimiz sütun etiketlerini listeliyoruz. Kesişim döndürülür.
brics.loc[["RU", "IN", "CH"], ["country", "capital"]]
country capital
RU Russia Moscow
IN India New Delhi
CH China Beijing
loc’u tüm satırları seçip yalnızca belirli sayıda sütunu tutmak için de kullanabilirsiniz. Satır etiketlerini belirten ilk listeyi iki nokta üst üste ile değiştirin. Baştan sona giden bir dilim. Bu kez tüm satırları ama yalnızca iki sütunu geri alıyoruz.
Tüm Satırları ve Belirli Sütunları Seçme
brics.loc[:, ["country", "capital"]]
country capital
BR Brazil Brasilia
RU Russia Moscow
IN India New Delhi
CH China Beijing
SA South Africa Pretoria
iloc Fonksiyonu
iloc fonksiyonu, pandas DataFrame’lerini konumlarına veya indekslerine göre alt kümelere ayırmanızı sağlar.
Satır seçme
loc için kullandığımız aynı veri ve benzer örnekleri kullanalım. Rusya’nın satırını alarak başlayalım.
brics.iloc[[1]]
country capital area population
RU Russia Moscow 17.100 143.50
Rusya, Hindistan ve Çin için satırları almak üzere artık 1, 2, 3 indislerinden oluşan bir liste kullanabilirsiniz.
brics.iloc[[1, 2, 3]]
country capital area population
RU Russia Moscow 17.100 143.50
IN India New Delhi 3.286 1252.00
CH China Beijing 9.597 1357.00
Satır ve sütun seçme
loc’a benzer şekilde, iloc ile hem satırları hem sütunları seçebiliriz. Burada Rusya, Hindistan ve Çin için satırları; country ve capital sütunlarını seçeceğiz.
brics.iloc[[1, 2, 3], [0, 1]]
country capital
RU Russia Moscow
IN India New Delhi
CH China Beijing
Tüm satırları ve belirli sütunları seçme
Son olarak, tüm satırları seçip yalnızca country ve capital sütunlarını tutmak isterseniz şunu yapabilirsiniz:
brics.loc[:, [0, 1]]
country capital
BR Brazil Brasilia
RU Russia Moscow
IN India New Delhi
CH China Beijing
SA South Africa Pretoria
loc ve iloc fonksiyonları oldukça benzerdir. Tek fark, satır ve sütunlara nasıl başvurduğunuzdur.
Veri Alt Kümesi Seçme Üzerine Etkileşimli Örnek
Aşağıdaki örnekte, araba verileri bir CSV dosyasından bir Pandas DataFrame olarak içe aktarılır. Yalnızca cars_per_cap column sütununu seçmek için şunları kullanabilirsiniz:
cars['cars_per_cap']
cars[['cars_per_cap']]
Tek köşeli parantez sürümü bir Pandas Series döndürür; çift köşeli parantez sürümü bir Pandas DataFrame döndürür.
cars’ıncountrysütununu tek köşeli parantezle bir Pandas Series olarak yazdıracaksınız.- Ardından çift köşeli parantezle
cars’ıncountrysütununu bir Pandas DataFrame olarak yazdıracaksınız. - Son olarak, çift köşeli parantezle
cars’ıncountryvedrives_rightsütunlarını bu sırayla içeren bir DataFrame yazdıracaksınız.
# Import cars data
import pandas as pd
cars = pd.read_csv('cars.csv', index_col = 0)
# Print out country column as Pandas Series
print(cars['country'])
# Print out country column as Pandas DataFrame
print(cars[['country']])
# Print out DataFrame with country and drives_right columns
print(cars[['country', 'drives_right']])
Yukarıdaki kodu çalıştırdığımızda aşağıdaki sonuç elde edilir:
US United States
AUS Australia
JPN Japan
IN India
RU Russia
MOR Morocco
EG Egypt
Name: country, dtype: object
country
US United States
AUS Australia
JPN Japan
IN India
RU Russia
MOR Morocco
EG Egypt
country drives_right
US United States True
AUS Australia False
JPN Japan False
IN India False
RU Russia True
MOR Morocco True
EG Egypt True
pandas hakkında daha fazla bilgi edinmek için, Orta Düzey Python kursumuzdaki bu videoya bakın.
Bu içerik, Hugo Bowne-Anderson’ın hazırladığı DataCamp’in Orta Düzey Python kursundan alınmıştır.
