Python Pandas - Hızlı Kılavuz
Pandas, güçlü veri yapılarını kullanarak yüksek performanslı veri işleme ve analiz aracı sağlayan açık kaynaklı bir Python Kitaplığıdır. Pandas adı Panel Data - Çok Boyutlu verilerden bir Ekonometri kelimesinden türemiştir.
2008 yılında, geliştirici Wes McKinney, yüksek performansa ihtiyaç duyduğunda, veri analizi için esnek bir araç gerektiğinde pandalar geliştirmeye başladı.
Pandalardan önce, Python büyük ölçüde veri işleme ve hazırlama için kullanılıyordu. Veri analizine çok az katkısı oldu. Pandalar bu sorunu çözdü. Pandalar kullanarak, verilerin kaynağına bakılmaksızın verilerin işlenmesi ve analizinde beş tipik adımı gerçekleştirebiliriz - yükleme, hazırlama, işleme, modelleme ve analiz etme.
Pandalı Python, finans, ekonomi, İstatistik, analitik vb. Dahil olmak üzere akademik ve ticari alanlar dahil olmak üzere çok çeşitli alanlarda kullanılmaktadır.
Pandaların Temel Özellikleri
- Varsayılan ve özelleştirilmiş indeksleme ile hızlı ve verimli DataFrame nesnesi.
- Verileri farklı dosya biçimlerinden bellek içi veri nesnelerine yüklemek için araçlar.
- Veri hizalama ve eksik verilerin entegre yönetimi.
- Tarih setlerinin yeniden şekillendirilmesi ve özetlenmesi.
- Büyük veri kümelerinin etiket tabanlı dilimlenmesi, indekslenmesi ve alt kümelenmesi.
- Bir veri yapısındaki sütunlar silinebilir veya eklenebilir.
- Toplama ve dönüşümler için verilere göre gruplayın.
- Verilerin yüksek performanslı birleşmesi ve birleştirilmesi.
- Zaman Serisi işlevselliği.
Standart Python dağıtımı Pandas modülüyle birlikte gelmez. Hafif bir alternatif, popüler Python paket yükleyicisini kullanarak NumPy'yi kurmaktır.pip.
pip install pandas
Anaconda Python paketini kurarsanız, Pandalar varsayılan olarak aşağıdakilerle birlikte kurulacaktır -
pencereler
Anaconda (kimden https://www.continuum.io) SciPy yığını için ücretsiz bir Python dağıtımıdır. Ayrıca Linux ve Mac için de mevcuttur.
Canopy (https://www.enthought.com/products/canopy/) ücretsiz ve Windows, Linux ve Mac için tam SciPy yığını ile ticari dağıtım olarak mevcuttur.
Python(x, y), Windows işletim sistemi için SciPy yığını ve Spyder IDE içeren ücretsiz bir Python dağıtımıdır. (Adresinden indirilebilirhttp://python-xy.github.io/)
Linux
İlgili Linux dağıtımlarının paket yöneticileri, SciPy yığınına bir veya daha fazla paket yüklemek için kullanılır.
For Ubuntu Users
sudo apt-get install python-numpy python-scipy python-matplotlibipythonipythonnotebook
python-pandas python-sympy python-nose
For Fedora Users
sudo yum install numpyscipy python-matplotlibipython python-pandas sympy
python-nose atlas-devel
Pandalar aşağıdaki üç veri yapısıyla ilgilenir -
- Series
- DataFrame
- Panel
Bu veri yapıları, Numpy dizisi üzerine inşa edilmiştir, bu da hızlı oldukları anlamına gelir.
Boyut ve Açıklama
Bu veri yapılarını düşünmenin en iyi yolu, yüksek boyutlu veri yapısının, daha düşük boyutlu veri yapısının bir kabı olmasıdır. Örneğin, DataFrame bir Series kapsayıcısıdır, Panel bir DataFrame kapsayıcısıdır.
Veri yapısı | Boyutlar | Açıklama |
---|---|---|
Dizi | 1 | 1D etiketli homojen dizi, boyut değiştirilemez. |
Veri Çerçeveleri | 2 | Potansiyel olarak heterojen tipte sütunlara sahip genel 2D etiketli, boyutu değişebilir tablo yapısı. |
Panel | 3 | Genel 3B etiketli, boyut değiştirilebilir dizi. |
İki veya daha fazla boyutlu dizilerin oluşturulması ve kullanılması meşakkatli bir iştir, fonksiyonlar yazılırken veri setinin yönünü dikkate alma yükü kullanıcıya yüklenir. Ancak Pandalar veri yapılarını kullanarak kullanıcının zihinsel çabası azalır.
Örneğin, tablo verileriyle (DataFrame), anlamsal olarak daha yararlıdır. index (satırlar) ve columns Eksen 0 ve eksen 1 yerine.
Değişkenlik
Tüm Pandalar veri yapıları değiştirilebilir (değiştirilebilir) ve Seriler dışında tümü boyut değiştirilebilir. Seri boyut değiştirilemez.
Note- DataFrame yaygın olarak kullanılmaktadır ve en önemli veri yapılarından biridir. Panel çok daha az kullanılır.
Dizi
Seri, homojen verilere sahip tek boyutlu dizi benzeri bir yapıdır. Örneğin, aşağıdaki dizi 10, 23, 56,… tam sayılarının bir koleksiyonudur.
10 | 23 | 56 | 17 | 52 | 61 | 73 | 90 | 26 | 72 |
Anahtar noktaları
- Homojen veriler
- Boyut Değişmez
- Değişken Verilerin Değerleri
Veri çerçevesi
DataFrame, heterojen verilere sahip iki boyutlu bir dizidir. Örneğin,
İsim | Yaş | Cinsiyet | Değerlendirme |
---|---|---|---|
Steve | 32 | Erkek | 3.45 |
Lia | 28 | Kadın | 4.6 |
Vin | 45 | Erkek | 3.9 |
Katie | 38 | Kadın | 2.78 |
Tablo, bir organizasyonun satış ekibinin verilerini genel performans derecelendirmeleriyle temsil eder. Veriler satırlar ve sütunlar halinde temsil edilir. Her sütun bir özelliği temsil eder ve her satır bir kişiyi temsil eder.
Sütunların Veri Türü
Dört sütunun veri türleri aşağıdaki gibidir -
Sütun | Tür |
---|---|
İsim | Dize |
Yaş | Tamsayı |
Cinsiyet | Dize |
Değerlendirme | Yüzer |
Anahtar noktaları
- Heterojen veriler
- Boyut Değişebilir
- Veri Değişebilir
Panel
Panel, heterojen veriler içeren üç boyutlu bir veri yapısıdır. Paneli grafik olarak temsil etmek zordur. Ancak bir panel, DataFrame'in bir kapsayıcısı olarak gösterilebilir.
Anahtar noktaları
- Heterojen veriler
- Boyut Değişebilir
- Veri Değişebilir
Seri, her türden veriyi (tamsayı, dize, kayan nokta, python nesneleri vb.) Tutabilen tek boyutlu etiketlenmiş bir dizidir. Eksen etiketleri toplu olarak indeks olarak adlandırılır.
pandalar serisi
Aşağıdaki kurucu kullanılarak bir Pandalar Serisi oluşturulabilir -
pandas.Series( data, index, dtype, copy)
Yapıcının parametreleri aşağıdaki gibidir -
Sr.No | Parametre ve Açıklama |
---|---|
1 | data veriler ndarray, liste, sabitler gibi çeşitli biçimler alır |
2 | index Dizin değerleri benzersiz ve hashable olmalıdır, verilerle aynı uzunlukta olmalıdır. Varsayılannp.arange(n) hiçbir dizin geçilmezse. |
3 | dtype dtype, veri türü içindir. Yok ise, veri türü çıkarılacaktır |
4 | copy Verileri kopyalayın. Varsayılan Yanlış |
Aşağıdaki gibi çeşitli girdiler kullanılarak bir dizi oluşturulabilir:
- Array
- Dict
- Skaler değer veya sabit
Boş Seri Oluşturun
Oluşturulabilen temel bir seri, Boş Seridir.
Misal
#import the pandas library and aliasing as pd
import pandas as pd
s = pd.Series()
print s
Onun output aşağıdaki gibidir -
Series([], dtype: float64)
Ndarray'den bir Seri oluşturun
Veri bir ndarray ise, aktarılan dizin aynı uzunlukta olmalıdır. Hiçbir dizin geçilmezse, varsayılan olarak dizinrange(n) nerede n dizi uzunluğudur, yani [0,1,2,3…. range(len(array))-1].
örnek 1
#import the pandas library and aliasing as pd
import pandas as pd
import numpy as np
data = np.array(['a','b','c','d'])
s = pd.Series(data)
print s
Onun output aşağıdaki gibidir -
0 a
1 b
2 c
3 d
dtype: object
Herhangi bir dizini geçmedik, bu nedenle varsayılan olarak 0 ile len(data)-1yani 0 ila 3.
Örnek 2
#import the pandas library and aliasing as pd
import pandas as pd
import numpy as np
data = np.array(['a','b','c','d'])
s = pd.Series(data,index=[100,101,102,103])
print s
Onun output aşağıdaki gibidir -
100 a
101 b
102 c
103 d
dtype: object
İndeks değerlerini buraya ilettik. Artık çıktıda özelleştirilmiş indekslenmiş değerleri görebiliriz.
Dikteden bir dizi oluşturun
Bir dictgirdi olarak geçirilebilir ve herhangi bir dizin belirtilmezse, dizin oluşturmak için sözlük anahtarları sıralı bir sırada alınır. Eğerindex geçildiğinde, dizindeki etiketlere karşılık gelen verilerdeki değerler çıkarılır.
örnek 1
#import the pandas library and aliasing as pd
import pandas as pd
import numpy as np
data = {'a' : 0., 'b' : 1., 'c' : 2.}
s = pd.Series(data)
print s
Onun output aşağıdaki gibidir -
a 0.0
b 1.0
c 2.0
dtype: float64
Observe - Dizin oluşturmak için sözlük anahtarları kullanılır.
Örnek 2
#import the pandas library and aliasing as pd
import pandas as pd
import numpy as np
data = {'a' : 0., 'b' : 1., 'c' : 2.}
s = pd.Series(data,index=['b','c','d','a'])
print s
Onun output aşağıdaki gibidir -
b 1.0
c 2.0
d NaN
a 0.0
dtype: float64
Observe - Dizin sırası korunur ve eksik eleman NaN (Sayı Değil) ile doldurulur.
Skalerden Seri Oluşturun
Veri skaler bir değer ise, bir indeks sağlanmalıdır. Değer, uzunluğuyla eşleşecek şekilde tekrarlanacaktır.index
#import the pandas library and aliasing as pd
import pandas as pd
import numpy as np
s = pd.Series(5, index=[0, 1, 2, 3])
print s
Onun output aşağıdaki gibidir -
0 5
1 5
2 5
3 5
dtype: int64
Pozisyonlu Serilerden Verilere Erişim
Dizideki verilere, bir dizideki verilere benzer şekilde erişilebilir. ndarray.
örnek 1
İlk öğeyi geri alın. Bilindiği gibi, birinci eleman sıfır vasıtasında depolanır dizisi için sıfırdan başlar sayma inci pozisyon ve böylece.
import pandas as pd
s = pd.Series([1,2,3,4,5],index = ['a','b','c','d','e'])
#retrieve the first element
print s[0]
Onun output aşağıdaki gibidir -
1
Örnek 2
Serideki ilk üç öğeyi alın. Önüne bir: girilirse, o dizinden sonraki tüm öğeler çıkarılacaktır. İki parametre (aralarında: aralarında) kullanılıyorsa, iki dizin arasındaki öğeler (durdurma dizini hariç)
import pandas as pd
s = pd.Series([1,2,3,4,5],index = ['a','b','c','d','e'])
#retrieve the first three element
print s[:3]
Onun output aşağıdaki gibidir -
a 1
b 2
c 3
dtype: int64
Örnek 3
Son üç öğeyi geri alın.
import pandas as pd
s = pd.Series([1,2,3,4,5],index = ['a','b','c','d','e'])
#retrieve the last three element
print s[-3:]
Onun output aşağıdaki gibidir -
c 3
d 4
e 5
dtype: int64
Etiketi Kullanarak Verileri Alın (Dizin)
Seri, sabit boyuta benzer dict indeks etiketine göre değerleri alabilir ve ayarlayabilirsiniz.
örnek 1
Dizin etiketi değerini kullanarak tek bir öğeyi alın.
import pandas as pd
s = pd.Series([1,2,3,4,5],index = ['a','b','c','d','e'])
#retrieve a single element
print s['a']
Onun output aşağıdaki gibidir -
1
Örnek 2
Bir dizin etiketi değerleri listesi kullanarak birden çok öğeyi alın.
import pandas as pd
s = pd.Series([1,2,3,4,5],index = ['a','b','c','d','e'])
#retrieve multiple elements
print s[['a','c','d']]
Onun output aşağıdaki gibidir -
a 1
c 3
d 4
dtype: int64
Örnek 3
Bir etiket yoksa, bir istisna ortaya çıkar.
import pandas as pd
s = pd.Series([1,2,3,4,5],index = ['a','b','c','d','e'])
#retrieve multiple elements
print s['f']
Onun output aşağıdaki gibidir -
…
KeyError: 'f'
Bir Veri çerçevesi, iki boyutlu bir veri yapısıdır, yani veriler, satırlar ve sütunlar halinde tablo şeklinde hizalanır.
DataFrame'in Özellikleri
- Potansiyel olarak sütunlar farklı türdendir
- Boyut - Değişebilir
- Etiketli eksenler (satırlar ve sütunlar)
- Satır ve sütunlarda Aritmetik işlemler gerçekleştirebilir
Yapısı
Öğrenci verileriyle bir veri çerçevesi oluşturduğumuzu varsayalım.
Bunu bir SQL tablosu veya elektronik tablo veri temsili olarak düşünebilirsiniz.
pandas.DataFrame
Pandas DataFrame, aşağıdaki yapıcı kullanılarak oluşturulabilir -
pandas.DataFrame( data, index, columns, dtype, copy)
Yapıcının parametreleri aşağıdaki gibidir -
Sr.No | Parametre ve Açıklama |
---|---|
1 | data veriler, ndarray, seri, harita, listeler, dikte, sabitler ve ayrıca başka bir DataFrame gibi çeşitli biçimleri alır. |
2 | index Satır etiketleri için, sonuçta ortaya çıkan çerçeve için kullanılacak Dizin, herhangi bir dizin geçilmezse İsteğe Bağlı Varsayılan np.arange (n) 'dir. |
3 | columns Sütun etiketleri için isteğe bağlı varsayılan sözdizimi - np.arange (n) şeklindedir. Bu yalnızca hiçbir dizin geçilmezse geçerlidir. |
4 | dtype Her sütunun veri türü. |
5 | copy Varsayılan False ise bu komut (veya her ne ise) verilerin kopyalanması için kullanılır. |
DataFrame oluştur
Pandaların DataFrame'i aşağıdakiler gibi çeşitli girdiler kullanılarak oluşturulabilir:
- Lists
- dict
- Series
- Numpy ndarrays
- Başka bir DataFrame
Bu bölümün sonraki bölümlerinde, bu girdileri kullanarak bir DataFrame'in nasıl oluşturulacağını göreceğiz.
Boş Bir DataFrame Oluşturun
Oluşturulabilen temel bir DataFrame, bir Boş Dataframe'dir.
Misal
#import the pandas library and aliasing as pd
import pandas as pd
df = pd.DataFrame()
print df
Onun output aşağıdaki gibidir -
Empty DataFrame
Columns: []
Index: []
Listelerden bir DataFrame oluşturun
DataFrame, tek bir liste veya bir liste listesi kullanılarak oluşturulabilir.
örnek 1
import pandas as pd
data = [1,2,3,4,5]
df = pd.DataFrame(data)
print df
Onun output aşağıdaki gibidir -
0
0 1
1 2
2 3
3 4
4 5
Örnek 2
import pandas as pd
data = [['Alex',10],['Bob',12],['Clarke',13]]
df = pd.DataFrame(data,columns=['Name','Age'])
print df
Onun output aşağıdaki gibidir -
Name Age
0 Alex 10
1 Bob 12
2 Clarke 13
Örnek 3
import pandas as pd
data = [['Alex',10],['Bob',12],['Clarke',13]]
df = pd.DataFrame(data,columns=['Name','Age'],dtype=float)
print df
Onun output aşağıdaki gibidir -
Name Age
0 Alex 10.0
1 Bob 12.0
2 Clarke 13.0
Note - Gözlemleyin, dtype parametresi, Yaş sütununun türünü kayan noktaya değiştirir.
Dict of ndarrays / Listelerden bir DataFrame oluşturun
Hepsi ndarraysaynı uzunlukta olmalıdır. Dizin geçilirse, dizinin uzunluğu dizilerin uzunluğuna eşit olmalıdır.
Hiçbir dizin geçilmezse, varsayılan olarak dizin aralık (n) olacaktır, burada n dizi uzunluğudur.
örnek 1
import pandas as pd
data = {'Name':['Tom', 'Jack', 'Steve', 'Ricky'],'Age':[28,34,29,42]}
df = pd.DataFrame(data)
print df
Onun output aşağıdaki gibidir -
Age Name
0 28 Tom
1 34 Jack
2 29 Steve
3 42 Ricky
Note- 0,1,2,3 değerlerine uyun. İşlev aralığı (n) kullanılarak her birine atanan varsayılan dizindir.
Örnek 2
Şimdi dizileri kullanarak indisli bir DataFrame oluşturalım.
import pandas as pd
data = {'Name':['Tom', 'Jack', 'Steve', 'Ricky'],'Age':[28,34,29,42]}
df = pd.DataFrame(data, index=['rank1','rank2','rank3','rank4'])
print df
Onun output aşağıdaki gibidir -
Age Name
rank1 28 Tom
rank2 34 Jack
rank3 29 Steve
rank4 42 Ricky
Note - Gözlemleyin, index parametresi her satıra bir dizin atar.
Dicts Listesinden bir DataFrame Oluşturun
Sözlük Listesi, bir DataFrame oluşturmak için girdi verileri olarak aktarılabilir. Sözlük tuşları varsayılan olarak sütun adları olarak alınır.
örnek 1
Aşağıdaki örnek, sözlüklerin bir listesini ileterek bir DataFrame'in nasıl oluşturulacağını gösterir.
import pandas as pd
data = [{'a': 1, 'b': 2},{'a': 5, 'b': 10, 'c': 20}]
df = pd.DataFrame(data)
print df
Onun output aşağıdaki gibidir -
a b c
0 1 2 NaN
1 5 10 20.0
Note - Eksik alanlara NaN (Sayı Değil) eklendiğini gözlemleyin.
Örnek 2
Aşağıdaki örnek, sözlüklerin bir listesini ve satır dizinlerini ileterek bir DataFrame'in nasıl oluşturulacağını gösterir.
import pandas as pd
data = [{'a': 1, 'b': 2},{'a': 5, 'b': 10, 'c': 20}]
df = pd.DataFrame(data, index=['first', 'second'])
print df
Onun output aşağıdaki gibidir -
a b c
first 1 2 NaN
second 5 10 20.0
Örnek 3
Aşağıdaki örnek, sözlükler, satır indeksleri ve sütun indeksleri listesiyle bir DataFrame'in nasıl oluşturulacağını gösterir.
import pandas as pd
data = [{'a': 1, 'b': 2},{'a': 5, 'b': 10, 'c': 20}]
#With two column indices, values same as dictionary keys
df1 = pd.DataFrame(data, index=['first', 'second'], columns=['a', 'b'])
#With two column indices with one index with other name
df2 = pd.DataFrame(data, index=['first', 'second'], columns=['a', 'b1'])
print df1
print df2
Onun output aşağıdaki gibidir -
#df1 output
a b
first 1 2
second 5 10
#df2 output
a b1
first 1 NaN
second 5 NaN
Note- Dikkat edin, df2 DataFrame sözlük anahtarı dışında bir sütun indeksi ile oluşturulur; böylece, NaN'leri yerine ekledi. Oysa df1, sözlük anahtarlarıyla aynı sütun indisleri ile oluşturulur, bu nedenle NaN eklenir.
Dict of Series'den bir DataFrame oluşturun
Seriler Sözlüğü, bir DataFrame oluşturmak için aktarılabilir. Ortaya çıkan dizin, geçirilen tüm dizi dizinlerinin birleşimidir.
Misal
import pandas as pd
d = {'one' : pd.Series([1, 2, 3], index=['a', 'b', 'c']),
'two' : pd.Series([1, 2, 3, 4], index=['a', 'b', 'c', 'd'])}
df = pd.DataFrame(d)
print df
Onun output aşağıdaki gibidir -
one two
a 1.0 1
b 2.0 2
c 3.0 3
d NaN 4
Note - Birinci seri için etiket olmadığını gözlemleyin ‘d’ geçti, ancak sonuçta d etiketinde NaN, NaN ile eklenir.
Şimdi anlayalım column selection, addition, ve deletion örnekler aracılığıyla.
Sütun Seçimi
Bunu DataFrame'den bir sütun seçerek anlayacağız.
Misal
import pandas as pd
d = {'one' : pd.Series([1, 2, 3], index=['a', 'b', 'c']),
'two' : pd.Series([1, 2, 3, 4], index=['a', 'b', 'c', 'd'])}
df = pd.DataFrame(d)
print df ['one']
Onun output aşağıdaki gibidir -
a 1.0
b 2.0
c 3.0
d NaN
Name: one, dtype: float64
Sütun Ekleme
Bunu, mevcut bir veri çerçevesine yeni bir sütun ekleyerek anlayacağız.
Misal
import pandas as pd
d = {'one' : pd.Series([1, 2, 3], index=['a', 'b', 'c']),
'two' : pd.Series([1, 2, 3, 4], index=['a', 'b', 'c', 'd'])}
df = pd.DataFrame(d)
# Adding a new column to an existing DataFrame object with column label by passing new series
print ("Adding a new column by passing as Series:")
df['three']=pd.Series([10,20,30],index=['a','b','c'])
print df
print ("Adding a new column using the existing columns in DataFrame:")
df['four']=df['one']+df['three']
print df
Onun output aşağıdaki gibidir -
Adding a new column by passing as Series:
one two three
a 1.0 1 10.0
b 2.0 2 20.0
c 3.0 3 30.0
d NaN 4 NaN
Adding a new column using the existing columns in DataFrame:
one two three four
a 1.0 1 10.0 11.0
b 2.0 2 20.0 22.0
c 3.0 3 30.0 33.0
d NaN 4 NaN NaN
Sütun Silme
Sütunlar silinebilir veya çıkarılabilir; nasıl olduğunu anlamak için bir örnek alalım.
Misal
# Using the previous DataFrame, we will delete a column
# using del function
import pandas as pd
d = {'one' : pd.Series([1, 2, 3], index=['a', 'b', 'c']),
'two' : pd.Series([1, 2, 3, 4], index=['a', 'b', 'c', 'd']),
'three' : pd.Series([10,20,30], index=['a','b','c'])}
df = pd.DataFrame(d)
print ("Our dataframe is:")
print df
# using del function
print ("Deleting the first column using DEL function:")
del df['one']
print df
# using pop function
print ("Deleting another column using POP function:")
df.pop('two')
print df
Onun output aşağıdaki gibidir -
Our dataframe is:
one three two
a 1.0 10.0 1
b 2.0 20.0 2
c 3.0 30.0 3
d NaN NaN 4
Deleting the first column using DEL function:
three two
a 10.0 1
b 20.0 2
c 30.0 3
d NaN 4
Deleting another column using POP function:
three
a 10.0
b 20.0
c 30.0
d NaN
Satır Seçimi, Toplama ve Silme
Şimdi satır seçimini, eklemeyi ve silmeyi örneklerle anlayacağız. Seçim kavramıyla başlayalım.
Etikete Göre Seçim
Satır etiketi bir satıra geçerek satırlar seçilebilir. loc işlevi.
import pandas as pd
d = {'one' : pd.Series([1, 2, 3], index=['a', 'b', 'c']),
'two' : pd.Series([1, 2, 3, 4], index=['a', 'b', 'c', 'd'])}
df = pd.DataFrame(d)
print df.loc['b']
Onun output aşağıdaki gibidir -
one 2.0
two 2.0
Name: b, dtype: float64
Sonuç, DataFrame'in sütun adları olarak etiketlere sahip bir seridir. Ve serinin Adı, birlikte alındığı etikettir.
Tamsayı konumuna göre seçim
Satırlar, tamsayı konumu bir iloc işlevi.
import pandas as pd
d = {'one' : pd.Series([1, 2, 3], index=['a', 'b', 'c']),
'two' : pd.Series([1, 2, 3, 4], index=['a', 'b', 'c', 'd'])}
df = pd.DataFrame(d)
print df.iloc[2]
Onun output aşağıdaki gibidir -
one 3.0
two 3.0
Name: c, dtype: float64
Satırları Dilimle
':' Operatörü kullanılarak birden çok satır seçilebilir.
import pandas as pd
d = {'one' : pd.Series([1, 2, 3], index=['a', 'b', 'c']),
'two' : pd.Series([1, 2, 3, 4], index=['a', 'b', 'c', 'd'])}
df = pd.DataFrame(d)
print df[2:4]
Onun output aşağıdaki gibidir -
one two
c 3.0 3
d NaN 4
Satırların Eklenmesi
Kullanarak bir DataFrame'e yeni satırlar ekleyin appendişlevi. Bu işlev satırları sonuna ekleyecektir.
import pandas as pd
df = pd.DataFrame([[1, 2], [3, 4]], columns = ['a','b'])
df2 = pd.DataFrame([[5, 6], [7, 8]], columns = ['a','b'])
df = df.append(df2)
print df
Onun output aşağıdaki gibidir -
a b
0 1 2
1 3 4
0 5 6
1 7 8
Satırların Silinmesi
DataFrame'den satırları silmek veya bırakmak için dizin etiketini kullanın. Etiket kopyalanırsa, birden çok satır atlanacaktır.
Yukarıdaki örnekte, etiketlerin çift olduğunu gözlemlerseniz. Bir etiket bırakalım ve bakalım kaç satır düşecek.
import pandas as pd
df = pd.DataFrame([[1, 2], [3, 4]], columns = ['a','b'])
df2 = pd.DataFrame([[5, 6], [7, 8]], columns = ['a','b'])
df = df.append(df2)
# Drop rows with label 0
df = df.drop(0)
print df
Onun output aşağıdaki gibidir -
a b
1 3 4
1 7 8
Yukarıdaki örnekte, bu ikisi aynı 0 etiketini içerdiğinden iki satır çıkarılmıştır.
Bir panel3B bir veri kabıdır. DönemPanel data ekonometriden türetilmiştir ve kısmen pandalar adından sorumludur - pan(el)-da(ta)-s.
3 eksenin adlarının, panel verilerini içeren işlemleri açıklamak için anlamsal bir anlam vermesi amaçlanmıştır. Onlar -
items - eksen 0, her öğe içinde bulunan bir DataFrame'e karşılık gelir.
major_axis - eksen 1, her bir DataFrame'in indeksidir (satırları).
minor_axis - 2. eksen, her bir Veri Çerçevesinin sütunudur.
pandas.Panel ()
Aşağıdaki yapıcı kullanılarak bir Panel oluşturulabilir -
pandas.Panel(data, items, major_axis, minor_axis, dtype, copy)
Yapıcının parametreleri aşağıdaki gibidir -
Parametre | Açıklama |
---|---|
veri | Veriler, ndarray, seri, harita, listeler, dikte, sabitler ve ayrıca başka bir DataFrame gibi çeşitli biçimler alır. |
öğeler | eksen = 0 |
ana eksen | eksen = 1 |
minor_axis | eksen = 2 |
dtype | Her sütunun veri türü |
kopya | Verileri kopyalayın. Varsayılan,false |
Panel Oluştur
Bir Panel aşağıdakiler gibi birden çok yol kullanılarak oluşturulabilir:
- Ndarrays'tan
- DataFrame diktinden
3D ndarray'den
# creating an empty panel
import pandas as pd
import numpy as np
data = np.random.rand(2,4,5)
p = pd.Panel(data)
print p
Onun output aşağıdaki gibidir -
<class 'pandas.core.panel.Panel'>
Dimensions: 2 (items) x 4 (major_axis) x 5 (minor_axis)
Items axis: 0 to 1
Major_axis axis: 0 to 3
Minor_axis axis: 0 to 4
Note - Boş panelin ve yukarıdaki panelin boyutlarına dikkat edin, tüm nesneler farklıdır.
DataFrame Nesnelerinin diktesinden
#creating an empty panel
import pandas as pd
import numpy as np
data = {'Item1' : pd.DataFrame(np.random.randn(4, 3)),
'Item2' : pd.DataFrame(np.random.randn(4, 2))}
p = pd.Panel(data)
print p
Onun output aşağıdaki gibidir -
Dimensions: 2 (items) x 4 (major_axis) x 3 (minor_axis)
Items axis: Item1 to Item2
Major_axis axis: 0 to 3
Minor_axis axis: 0 to 2
Boş Panel Oluşturun
Panel yapıcısı kullanılarak aşağıdaki gibi boş bir panel oluşturulabilir -
#creating an empty panel
import pandas as pd
p = pd.Panel()
print p
Onun output aşağıdaki gibidir -
<class 'pandas.core.panel.Panel'>
Dimensions: 0 (items) x 0 (major_axis) x 0 (minor_axis)
Items axis: None
Major_axis axis: None
Minor_axis axis: None
Panelden Verileri Seçme
Panelden verileri seçin -
- Items
- Major_axis
- Minor_axis
Öğeleri Kullanma
# creating an empty panel
import pandas as pd
import numpy as np
data = {'Item1' : pd.DataFrame(np.random.randn(4, 3)),
'Item2' : pd.DataFrame(np.random.randn(4, 2))}
p = pd.Panel(data)
print p['Item1']
Onun output aşağıdaki gibidir -
0 1 2
0 0.488224 -0.128637 0.930817
1 0.417497 0.896681 0.576657
2 -2.775266 0.571668 0.290082
3 -0.400538 -0.144234 1.110535
İki öğemiz var ve item1'i aldık. Sonuç, 4 satırlı ve 3 sütunlu bir DataFrame'dir.Major_axis ve Minor_axis boyutlar.
Major_axis kullanma
Verilere yöntem kullanılarak erişilebilir panel.major_axis(index).
# creating an empty panel
import pandas as pd
import numpy as np
data = {'Item1' : pd.DataFrame(np.random.randn(4, 3)),
'Item2' : pd.DataFrame(np.random.randn(4, 2))}
p = pd.Panel(data)
print p.major_xs(1)
Onun output aşağıdaki gibidir -
Item1 Item2
0 0.417497 0.748412
1 0.896681 -0.557322
2 0.576657 NaN
Minor_axis kullanma
Verilere yöntem kullanılarak erişilebilir panel.minor_axis(index).
# creating an empty panel
import pandas as pd
import numpy as np
data = {'Item1' : pd.DataFrame(np.random.randn(4, 3)),
'Item2' : pd.DataFrame(np.random.randn(4, 2))}
p = pd.Panel(data)
print p.minor_xs(1)
Onun output aşağıdaki gibidir -
Item1 Item2
0 -0.128637 -1.047032
1 0.896681 -0.557322
2 0.571668 0.431953
3 -0.144234 1.302466
Note - Boyutlardaki değişiklikleri gözlemleyin.
Şimdiye kadar, üç Pandas Veri Yapısını ve bunları nasıl yaratacağımızı öğrendik. Gerçek zamanlı veri işlemedeki önemi nedeniyle büyük ölçüde DataFrame nesnelerine odaklanacağız ve ayrıca birkaç başka DataStructures'ı tartışacağız.
Seri Temel İşlevsellik
Sr.No. | Nitelik veya Yöntem ve Açıklama |
---|---|
1 | axes Satır ekseni etiketlerinin bir listesini verir |
2 | dtype Nesnenin dtype değerini verir. |
3 | empty Seri boşsa True döndürür. |
4 | ndim Tanım 1'e göre temel alınan verilerin boyutlarının sayısını döndürür. |
5 | size Temel verilerdeki öğelerin sayısını döndürür. |
6 | values Seriyi ndarray olarak döndürür. |
7 | head() İlk n satırı döndürür. |
8 | tail() Son n satırı döndürür. |
Şimdi bir Seri oluşturalım ve yukarıdaki tablodaki tüm özniteliklerin çalışmasını görelim.
Misal
import pandas as pd
import numpy as np
#Create a series with 100 random numbers
s = pd.Series(np.random.randn(4))
print s
Onun output aşağıdaki gibidir -
0 0.967853
1 -0.148368
2 -1.395906
3 -1.758394
dtype: float64
eksenler
Serinin etiketlerinin listesini döndürür.
import pandas as pd
import numpy as np
#Create a series with 100 random numbers
s = pd.Series(np.random.randn(4))
print ("The axes are:")
print s.axes
Onun output aşağıdaki gibidir -
The axes are:
[RangeIndex(start=0, stop=4, step=1)]
Yukarıdaki sonuç, 0'dan 5'e kadar olan değerler listesinin kompakt bir biçimidir, yani [0,1,2,3,4].
boş
Object'in boş olup olmadığını belirten Boolean değerini döndürür. True, nesnenin boş olduğunu gösterir.
import pandas as pd
import numpy as np
#Create a series with 100 random numbers
s = pd.Series(np.random.randn(4))
print ("Is the Object empty?")
print s.empty
Onun output aşağıdaki gibidir -
Is the Object empty?
False
ndim
Nesnenin boyutlarının sayısını verir. Tanım olarak, bir Seri 1B veri yapısıdır, bu nedenle
import pandas as pd
import numpy as np
#Create a series with 4 random numbers
s = pd.Series(np.random.randn(4))
print s
print ("The dimensions of the object:")
print s.ndim
Onun output aşağıdaki gibidir -
0 0.175898
1 0.166197
2 -0.609712
3 -1.377000
dtype: float64
The dimensions of the object:
1
boyut
Serinin boyutunu (uzunluğunu) verir.
import pandas as pd
import numpy as np
#Create a series with 4 random numbers
s = pd.Series(np.random.randn(2))
print s
print ("The size of the object:")
print s.size
Onun output aşağıdaki gibidir -
0 3.078058
1 -1.207803
dtype: float64
The size of the object:
2
değerler
Dizideki gerçek verileri bir dizi olarak döndürür.
import pandas as pd
import numpy as np
#Create a series with 4 random numbers
s = pd.Series(np.random.randn(4))
print s
print ("The actual data series is:")
print s.values
Onun output aşağıdaki gibidir -
0 1.787373
1 -0.605159
2 0.180477
3 -0.140922
dtype: float64
The actual data series is:
[ 1.78737302 -0.60515881 0.18047664 -0.1409218 ]
Kuyruk
Bir Series veya DataFrame nesnesinin küçük bir örneğini görüntülemek için head () ve tail () yöntemlerini kullanın.
head() ilkini döndürür nsatırlar (dizin değerlerini dikkate alın). Görüntülenecek varsayılan öğe sayısı beştir, ancak özel bir sayı iletebilirsiniz.
import pandas as pd
import numpy as np
#Create a series with 4 random numbers
s = pd.Series(np.random.randn(4))
print ("The original series is:")
print s
print ("The first two rows of the data series:")
print s.head(2)
Onun output aşağıdaki gibidir -
The original series is:
0 0.720876
1 -0.765898
2 0.479221
3 -0.139547
dtype: float64
The first two rows of the data series:
0 0.720876
1 -0.765898
dtype: float64
tail() sonuncuyu döndürür nsatırlar (dizin değerlerini dikkate alın). Görüntülenecek varsayılan öğe sayısı beştir, ancak özel bir sayı iletebilirsiniz.
import pandas as pd
import numpy as np
#Create a series with 4 random numbers
s = pd.Series(np.random.randn(4))
print ("The original series is:")
print s
print ("The last two rows of the data series:")
print s.tail(2)
Onun output aşağıdaki gibidir -
The original series is:
0 -0.655091
1 -0.881407
2 -0.608592
3 -2.341413
dtype: float64
The last two rows of the data series:
2 -0.608592
3 -2.341413
dtype: float64
DataFrame Temel İşlevselliği
Şimdi DataFrame Temel İşlevselliğinin ne olduğunu anlayalım. Aşağıdaki tablolar, DataFrame Temel İşlevselliğine yardımcı olan önemli öznitelikleri veya yöntemleri listeler.
Sr.No. | Nitelik veya Yöntem ve Açıklama |
---|---|
1 | T Satırları ve sütunları ters çevirir. |
2 | axes Tek üye olarak satır ekseni etiketleri ve sütun ekseni etiketleri içeren bir liste döndürür. |
3 | dtypes Bu nesnedeki dtype'ları döndürür. |
4 | empty NDFrame tamamen boşsa doğrudur [öğe yok]; eksenlerden herhangi biri 0 uzunluğundaysa. |
5 | ndim Eksen sayısı / dizi boyutları. |
6 | shape DataFrame'in boyutluluğunu temsil eden bir demet döndürür. |
7 | size NDFrame'deki öğelerin sayısı. |
8 | values NDFrame'in numpy gösterimi. |
9 | head() İlk n satırı döndürür. |
10 | tail() Son n satırı döndürür. |
Şimdi bir DataFrame oluşturalım ve yukarıda bahsedilen özelliklerin nasıl çalıştığını görelim.
Misal
import pandas as pd
import numpy as np
#Create a Dictionary of series
d = {'Name':pd.Series(['Tom','James','Ricky','Vin','Steve','Smith','Jack']),
'Age':pd.Series([25,26,25,23,30,29,23]),
'Rating':pd.Series([4.23,3.24,3.98,2.56,3.20,4.6,3.8])}
#Create a DataFrame
df = pd.DataFrame(d)
print ("Our data series is:")
print df
Onun output aşağıdaki gibidir -
Our data series is:
Age Name Rating
0 25 Tom 4.23
1 26 James 3.24
2 25 Ricky 3.98
3 23 Vin 2.56
4 30 Steve 3.20
5 29 Smith 4.60
6 23 Jack 3.80
T (Transpoze)
DataFrame'in devrikini döndürür. Satırlar ve sütunlar birbirinin yerine geçecektir.
import pandas as pd
import numpy as np
# Create a Dictionary of series
d = {'Name':pd.Series(['Tom','James','Ricky','Vin','Steve','Smith','Jack']),
'Age':pd.Series([25,26,25,23,30,29,23]),
'Rating':pd.Series([4.23,3.24,3.98,2.56,3.20,4.6,3.8])}
# Create a DataFrame
df = pd.DataFrame(d)
print ("The transpose of the data series is:")
print df.T
Onun output aşağıdaki gibidir -
The transpose of the data series is:
0 1 2 3 4 5 6
Age 25 26 25 23 30 29 23
Name Tom James Ricky Vin Steve Smith Jack
Rating 4.23 3.24 3.98 2.56 3.2 4.6 3.8
eksenler
Satır ekseni etiketlerinin ve sütun ekseni etiketlerinin listesini döndürür.
import pandas as pd
import numpy as np
#Create a Dictionary of series
d = {'Name':pd.Series(['Tom','James','Ricky','Vin','Steve','Smith','Jack']),
'Age':pd.Series([25,26,25,23,30,29,23]),
'Rating':pd.Series([4.23,3.24,3.98,2.56,3.20,4.6,3.8])}
#Create a DataFrame
df = pd.DataFrame(d)
print ("Row axis labels and column axis labels are:")
print df.axes
Onun output aşağıdaki gibidir -
Row axis labels and column axis labels are:
[RangeIndex(start=0, stop=7, step=1), Index([u'Age', u'Name', u'Rating'],
dtype='object')]
tipler
Her sütunun veri türünü döndürür.
import pandas as pd
import numpy as np
#Create a Dictionary of series
d = {'Name':pd.Series(['Tom','James','Ricky','Vin','Steve','Smith','Jack']),
'Age':pd.Series([25,26,25,23,30,29,23]),
'Rating':pd.Series([4.23,3.24,3.98,2.56,3.20,4.6,3.8])}
#Create a DataFrame
df = pd.DataFrame(d)
print ("The data types of each column are:")
print df.dtypes
Onun output aşağıdaki gibidir -
The data types of each column are:
Age int64
Name object
Rating float64
dtype: object
boş
Object'in boş olup olmadığını belirten Boolean değerini döndürür; True, nesnenin boş olduğunu gösterir.
import pandas as pd
import numpy as np
#Create a Dictionary of series
d = {'Name':pd.Series(['Tom','James','Ricky','Vin','Steve','Smith','Jack']),
'Age':pd.Series([25,26,25,23,30,29,23]),
'Rating':pd.Series([4.23,3.24,3.98,2.56,3.20,4.6,3.8])}
#Create a DataFrame
df = pd.DataFrame(d)
print ("Is the object empty?")
print df.empty
Onun output aşağıdaki gibidir -
Is the object empty?
False
ndim
Nesnenin boyutlarının sayısını verir. DataFrame tanımı gereği 2B bir nesnedir.
import pandas as pd
import numpy as np
#Create a Dictionary of series
d = {'Name':pd.Series(['Tom','James','Ricky','Vin','Steve','Smith','Jack']),
'Age':pd.Series([25,26,25,23,30,29,23]),
'Rating':pd.Series([4.23,3.24,3.98,2.56,3.20,4.6,3.8])}
#Create a DataFrame
df = pd.DataFrame(d)
print ("Our object is:")
print df
print ("The dimension of the object is:")
print df.ndim
Onun output aşağıdaki gibidir -
Our object is:
Age Name Rating
0 25 Tom 4.23
1 26 James 3.24
2 25 Ricky 3.98
3 23 Vin 2.56
4 30 Steve 3.20
5 29 Smith 4.60
6 23 Jack 3.80
The dimension of the object is:
2
şekil
DataFrame'in boyutluluğunu temsil eden bir demet döndürür. Tuple (a, b), burada a satır sayısını temsil eder veb sütun sayısını temsil eder.
import pandas as pd
import numpy as np
#Create a Dictionary of series
d = {'Name':pd.Series(['Tom','James','Ricky','Vin','Steve','Smith','Jack']),
'Age':pd.Series([25,26,25,23,30,29,23]),
'Rating':pd.Series([4.23,3.24,3.98,2.56,3.20,4.6,3.8])}
#Create a DataFrame
df = pd.DataFrame(d)
print ("Our object is:")
print df
print ("The shape of the object is:")
print df.shape
Onun output aşağıdaki gibidir -
Our object is:
Age Name Rating
0 25 Tom 4.23
1 26 James 3.24
2 25 Ricky 3.98
3 23 Vin 2.56
4 30 Steve 3.20
5 29 Smith 4.60
6 23 Jack 3.80
The shape of the object is:
(7, 3)
boyut
DataFrame'deki öğelerin sayısını döndürür.
import pandas as pd
import numpy as np
#Create a Dictionary of series
d = {'Name':pd.Series(['Tom','James','Ricky','Vin','Steve','Smith','Jack']),
'Age':pd.Series([25,26,25,23,30,29,23]),
'Rating':pd.Series([4.23,3.24,3.98,2.56,3.20,4.6,3.8])}
#Create a DataFrame
df = pd.DataFrame(d)
print ("Our object is:")
print df
print ("The total number of elements in our object is:")
print df.size
Onun output aşağıdaki gibidir -
Our object is:
Age Name Rating
0 25 Tom 4.23
1 26 James 3.24
2 25 Ricky 3.98
3 23 Vin 2.56
4 30 Steve 3.20
5 29 Smith 4.60
6 23 Jack 3.80
The total number of elements in our object is:
21
değerler
DataFrame'deki gerçek verileri bir NDarray.
import pandas as pd
import numpy as np
#Create a Dictionary of series
d = {'Name':pd.Series(['Tom','James','Ricky','Vin','Steve','Smith','Jack']),
'Age':pd.Series([25,26,25,23,30,29,23]),
'Rating':pd.Series([4.23,3.24,3.98,2.56,3.20,4.6,3.8])}
#Create a DataFrame
df = pd.DataFrame(d)
print ("Our object is:")
print df
print ("The actual data in our data frame is:")
print df.values
Onun output aşağıdaki gibidir -
Our object is:
Age Name Rating
0 25 Tom 4.23
1 26 James 3.24
2 25 Ricky 3.98
3 23 Vin 2.56
4 30 Steve 3.20
5 29 Smith 4.60
6 23 Jack 3.80
The actual data in our data frame is:
[[25 'Tom' 4.23]
[26 'James' 3.24]
[25 'Ricky' 3.98]
[23 'Vin' 2.56]
[30 'Steve' 3.2]
[29 'Smith' 4.6]
[23 'Jack' 3.8]]
Kuyruk
Bir DataFrame nesnesinin küçük bir örneğini görüntülemek için, head() ve tail () yöntemleri. head() ilkini döndürür nsatırlar (dizin değerlerini dikkate alın). Görüntülenecek varsayılan öğe sayısı beştir, ancak özel bir sayı iletebilirsiniz.
import pandas as pd
import numpy as np
#Create a Dictionary of series
d = {'Name':pd.Series(['Tom','James','Ricky','Vin','Steve','Smith','Jack']),
'Age':pd.Series([25,26,25,23,30,29,23]),
'Rating':pd.Series([4.23,3.24,3.98,2.56,3.20,4.6,3.8])}
#Create a DataFrame
df = pd.DataFrame(d)
print ("Our data frame is:")
print df
print ("The first two rows of the data frame is:")
print df.head(2)
Onun output aşağıdaki gibidir -
Our data frame is:
Age Name Rating
0 25 Tom 4.23
1 26 James 3.24
2 25 Ricky 3.98
3 23 Vin 2.56
4 30 Steve 3.20
5 29 Smith 4.60
6 23 Jack 3.80
The first two rows of the data frame is:
Age Name Rating
0 25 Tom 4.23
1 26 James 3.24
tail() sonuncuyu döndürür nsatırlar (dizin değerlerini dikkate alın). Görüntülenecek varsayılan öğe sayısı beştir, ancak özel bir sayı iletebilirsiniz.
import pandas as pd
import numpy as np
#Create a Dictionary of series
d = {'Name':pd.Series(['Tom','James','Ricky','Vin','Steve','Smith','Jack']),
'Age':pd.Series([25,26,25,23,30,29,23]),
'Rating':pd.Series([4.23,3.24,3.98,2.56,3.20,4.6,3.8])}
#Create a DataFrame
df = pd.DataFrame(d)
print ("Our data frame is:")
print df
print ("The last two rows of the data frame is:")
print df.tail(2)
Onun output aşağıdaki gibidir -
Our data frame is:
Age Name Rating
0 25 Tom 4.23
1 26 James 3.24
2 25 Ricky 3.98
3 23 Vin 2.56
4 30 Steve 3.20
5 29 Smith 4.60
6 23 Jack 3.80
The last two rows of the data frame is:
Age Name Rating
5 29 Smith 4.6
6 23 Jack 3.8
Çok sayıda yöntem, DataFrame üzerinde tanımlayıcı istatistikleri ve diğer ilgili işlemleri toplu olarak hesaplar. Bunların çoğu gibi toplamalarsum(), mean(), ama bazıları gibi sumsum(), aynı boyutta bir nesne üretin. Genel olarak konuşursak, bu yöntemler biraxisbağımsız değişken, tıpkı ndarray gibi . {toplam, std, ...}, ancak eksen ad veya tamsayı ile belirtilebilir
DataFrame - "dizin" (eksen = 0, varsayılan), "sütunlar" (eksen = 1)
Bir DataFrame oluşturalım ve bu nesneyi bu bölüm boyunca tüm işlemler için kullanalım.
Misal
import pandas as pd
import numpy as np
#Create a Dictionary of series
d = {'Name':pd.Series(['Tom','James','Ricky','Vin','Steve','Smith','Jack',
'Lee','David','Gasper','Betina','Andres']),
'Age':pd.Series([25,26,25,23,30,29,23,34,40,30,51,46]),
'Rating':pd.Series([4.23,3.24,3.98,2.56,3.20,4.6,3.8,3.78,2.98,4.80,4.10,3.65])
}
#Create a DataFrame
df = pd.DataFrame(d)
print df
Onun output aşağıdaki gibidir -
Age Name Rating
0 25 Tom 4.23
1 26 James 3.24
2 25 Ricky 3.98
3 23 Vin 2.56
4 30 Steve 3.20
5 29 Smith 4.60
6 23 Jack 3.80
7 34 Lee 3.78
8 40 David 2.98
9 30 Gasper 4.80
10 51 Betina 4.10
11 46 Andres 3.65
toplam ()
İstenen eksen için değerlerin toplamını verir. Varsayılan olarak eksen dizindir (eksen = 0).
import pandas as pd
import numpy as np
#Create a Dictionary of series
d = {'Name':pd.Series(['Tom','James','Ricky','Vin','Steve','Smith','Jack',
'Lee','David','Gasper','Betina','Andres']),
'Age':pd.Series([25,26,25,23,30,29,23,34,40,30,51,46]),
'Rating':pd.Series([4.23,3.24,3.98,2.56,3.20,4.6,3.8,3.78,2.98,4.80,4.10,3.65])
}
#Create a DataFrame
df = pd.DataFrame(d)
print df.sum()
Onun output aşağıdaki gibidir -
Age 382
Name TomJamesRickyVinSteveSmithJackLeeDavidGasperBe...
Rating 44.92
dtype: object
Her bir sütun ayrı ayrı eklenir (Dizeler eklenir).
eksen = 1
Bu sözdizimi, çıktıyı aşağıda gösterildiği gibi verecektir.
import pandas as pd
import numpy as np
#Create a Dictionary of series
d = {'Name':pd.Series(['Tom','James','Ricky','Vin','Steve','Smith','Jack',
'Lee','David','Gasper','Betina','Andres']),
'Age':pd.Series([25,26,25,23,30,29,23,34,40,30,51,46]),
'Rating':pd.Series([4.23,3.24,3.98,2.56,3.20,4.6,3.8,3.78,2.98,4.80,4.10,3.65])
}
#Create a DataFrame
df = pd.DataFrame(d)
print df.sum(1)
Onun output aşağıdaki gibidir -
0 29.23
1 29.24
2 28.98
3 25.56
4 33.20
5 33.60
6 26.80
7 37.78
8 42.98
9 34.80
10 55.10
11 49.65
dtype: float64
anlamına gelmek()
Ortalama değeri verir
import pandas as pd
import numpy as np
#Create a Dictionary of series
d = {'Name':pd.Series(['Tom','James','Ricky','Vin','Steve','Smith','Jack',
'Lee','David','Gasper','Betina','Andres']),
'Age':pd.Series([25,26,25,23,30,29,23,34,40,30,51,46]),
'Rating':pd.Series([4.23,3.24,3.98,2.56,3.20,4.6,3.8,3.78,2.98,4.80,4.10,3.65])
}
#Create a DataFrame
df = pd.DataFrame(d)
print df.mean()
Onun output aşağıdaki gibidir -
Age 31.833333
Rating 3.743333
dtype: float64
std ()
Sayısal sütunların Bressel standart sapmasını döndürür.
import pandas as pd
import numpy as np
#Create a Dictionary of series
d = {'Name':pd.Series(['Tom','James','Ricky','Vin','Steve','Smith','Jack',
'Lee','David','Gasper','Betina','Andres']),
'Age':pd.Series([25,26,25,23,30,29,23,34,40,30,51,46]),
'Rating':pd.Series([4.23,3.24,3.98,2.56,3.20,4.6,3.8,3.78,2.98,4.80,4.10,3.65])
}
#Create a DataFrame
df = pd.DataFrame(d)
print df.std()
Onun output aşağıdaki gibidir -
Age 9.232682
Rating 0.661628
dtype: float64
Fonksiyonlar ve Açıklama
Şimdi Python Pandas'ta Betimleyici İstatistikler altındaki işlevleri anlayalım. Aşağıdaki tablo önemli işlevleri listelemektedir -
Sr.No. | Fonksiyon | Açıklama |
---|---|---|
1 | Miktar() | Boş olmayan gözlemlerin sayısı |
2 | toplam () | Değerlerin toplamı |
3 | anlamına gelmek() | Değerlerin Ortalaması |
4 | medyan() | Değerlerin Ortanca Değeri |
5 | mod () | Değerlerin modu |
6 | std () | Değerlerin Standart Sapması |
7 | dk () | Minimum değer |
8 | max () | Maksimum değer |
9 | abs () | Mutlak değer |
10 | prod () | Değerlerin Çarpımı |
11 | cumsum () | Kümülatif Toplam |
12 | cumprod () | Kümülatif Ürün |
Note- DataFrame Heterojen bir veri yapısı olduğundan. Genel işlemler tüm işlevlerle çalışmaz.
Gibi işlevler sum(), cumsum()hem sayısal hem de karakter (veya) dizisi veri öğeleriyle hatasız çalışır. Rağmenn pratikte, karakter kümelemeleri asla genel olarak kullanılmaz, bu işlevler herhangi bir istisna atmaz.
Gibi işlevler abs(), cumprod() DataFrame karakter veya dize verisi içerdiğinde istisna atar çünkü bu tür işlemler gerçekleştirilemez.
Verileri Özetleme
describe() işlevi, DataFrame sütunlarıyla ilgili istatistiklerin bir özetini hesaplar.
import pandas as pd
import numpy as np
#Create a Dictionary of series
d = {'Name':pd.Series(['Tom','James','Ricky','Vin','Steve','Smith','Jack',
'Lee','David','Gasper','Betina','Andres']),
'Age':pd.Series([25,26,25,23,30,29,23,34,40,30,51,46]),
'Rating':pd.Series([4.23,3.24,3.98,2.56,3.20,4.6,3.8,3.78,2.98,4.80,4.10,3.65])
}
#Create a DataFrame
df = pd.DataFrame(d)
print df.describe()
Onun output aşağıdaki gibidir -
Age Rating
count 12.000000 12.000000
mean 31.833333 3.743333
std 9.232682 0.661628
min 23.000000 2.560000
25% 25.000000 3.230000
50% 29.500000 3.790000
75% 35.500000 4.132500
max 51.000000 4.800000
Bu işlev, mean, std ve IQRdeğerler. Ve işlev, karakter sütunlarını hariç tutar ve sayısal sütunlarla ilgili özet verir.'include'özetleme için hangi sütunların dikkate alınması gerektiğine ilişkin gerekli bilgileri iletmek için kullanılan argümandır. Değerler listesini alır; varsayılan olarak 'sayı'.
- object - Dize sütunlarını özetler
- number - Sayısal sütunları özetler
- all - Tüm sütunları birlikte özetler (Liste değeri olarak geçmemelidir)
Şimdi, programda aşağıdaki ifadeyi kullanın ve çıktıyı kontrol edin -
import pandas as pd
import numpy as np
#Create a Dictionary of series
d = {'Name':pd.Series(['Tom','James','Ricky','Vin','Steve','Smith','Jack',
'Lee','David','Gasper','Betina','Andres']),
'Age':pd.Series([25,26,25,23,30,29,23,34,40,30,51,46]),
'Rating':pd.Series([4.23,3.24,3.98,2.56,3.20,4.6,3.8,3.78,2.98,4.80,4.10,3.65])
}
#Create a DataFrame
df = pd.DataFrame(d)
print df.describe(include=['object'])
Onun output aşağıdaki gibidir -
Name
count 12
unique 12
top Ricky
freq 1
Şimdi, aşağıdaki ifadeyi kullanın ve çıktıyı kontrol edin -
import pandas as pd
import numpy as np
#Create a Dictionary of series
d = {'Name':pd.Series(['Tom','James','Ricky','Vin','Steve','Smith','Jack',
'Lee','David','Gasper','Betina','Andres']),
'Age':pd.Series([25,26,25,23,30,29,23,34,40,30,51,46]),
'Rating':pd.Series([4.23,3.24,3.98,2.56,3.20,4.6,3.8,3.78,2.98,4.80,4.10,3.65])
}
#Create a DataFrame
df = pd.DataFrame(d)
print df. describe(include='all')
Onun output aşağıdaki gibidir -
Age Name Rating
count 12.000000 12 12.000000
unique NaN 12 NaN
top NaN Ricky NaN
freq NaN 1 NaN
mean 31.833333 NaN 3.743333
std 9.232682 NaN 0.661628
min 23.000000 NaN 2.560000
25% 25.000000 NaN 3.230000
50% 29.500000 NaN 3.790000
75% 35.500000 NaN 4.132500
max 51.000000 NaN 4.800000
Kendinizin veya başka bir kitaplığınızın işlevlerini Pandas nesnelerine uygulamak için, üç önemli yöntemin farkında olmalısınız. Yöntemler aşağıda tartışılmıştır. Kullanılacak uygun yöntem, işlevinizin tüm DataFrame üzerinde, satır veya sütun bazında veya öğe bazında çalışıp çalışmayacağına bağlıdır.
- Tablo bilge İşlev Uygulama: boru ()
- Satır veya Sütun Bilge İşlev Uygulaması: uygula ()
- Element wise Function Uygulaması: applymap ()
Masa Üstü İşlev Uygulaması
Özel işlemler, işlevi ve uygun sayıda parametreyi boru bağımsız değişkenleri olarak ileterek gerçekleştirilebilir. Böylece, tüm DataFrame üzerinde işlem gerçekleştirilir.
Örneğin, DataFrame'deki tüm öğelere 2 değeri ekleyin. Sonra,
toplayıcı işlevi
Toplayıcı işlevi, parametre olarak iki sayısal değer ekler ve toplamı döndürür.
def adder(ele1,ele2):
return ele1+ele2
Şimdi DataFrame üzerinde işlem yapmak için özel işlevi kullanacağız.
df = pd.DataFrame(np.random.randn(5,3),columns=['col1','col2','col3'])
df.pipe(adder,2)
Tam programı görelim -
import pandas as pd
import numpy as np
def adder(ele1,ele2):
return ele1+ele2
df = pd.DataFrame(np.random.randn(5,3),columns=['col1','col2','col3'])
df.pipe(adder,2)
print df.apply(np.mean)
Onun output aşağıdaki gibidir -
col1 col2 col3
0 2.176704 2.219691 1.509360
1 2.222378 2.422167 3.953921
2 2.241096 1.135424 2.696432
3 2.355763 0.376672 1.182570
4 2.308743 2.714767 2.130288
Satır veya Sütun Bilge Fonksiyon Uygulaması
Rasgele işlevler, bir DataFrame veya Panelin eksenleri boyunca, apply()tanımlayıcı istatistik yöntemleri gibi, isteğe bağlı bir eksen argümanı alan yöntem. Varsayılan olarak işlem, her sütunu bir dizi benzeri alarak sütun bazında gerçekleştirilir.
örnek 1
import pandas as pd
import numpy as np
df = pd.DataFrame(np.random.randn(5,3),columns=['col1','col2','col3'])
df.apply(np.mean)
print df.apply(np.mean)
Onun output aşağıdaki gibidir -
col1 -0.288022
col2 1.044839
col3 -0.187009
dtype: float64
Geçerek axis parametresinde işlemler satır bazında gerçekleştirilebilir.
Örnek 2
import pandas as pd
import numpy as np
df = pd.DataFrame(np.random.randn(5,3),columns=['col1','col2','col3'])
df.apply(np.mean,axis=1)
print df.apply(np.mean)
Onun output aşağıdaki gibidir -
col1 0.034093
col2 -0.152672
col3 -0.229728
dtype: float64
Örnek 3
import pandas as pd
import numpy as np
df = pd.DataFrame(np.random.randn(5,3),columns=['col1','col2','col3'])
df.apply(lambda x: x.max() - x.min())
print df.apply(np.mean)
Onun output aşağıdaki gibidir -
col1 -0.167413
col2 -0.370495
col3 -0.707631
dtype: float64
Element Wise Fonksiyon Uygulaması
Tüm işlevler vektörleştirilemez (ne başka bir dizi döndüren NumPy dizileri ne de herhangi bir değer), yöntemler applymap() DataFrame üzerinde ve analogously map() on Series, tek bir değer alıp tek bir değer döndüren herhangi bir Python işlevini kabul eder.
örnek 1
import pandas as pd
import numpy as np
df = pd.DataFrame(np.random.randn(5,3),columns=['col1','col2','col3'])
# My custom function
df['col1'].map(lambda x:x*100)
print df.apply(np.mean)
Onun output aşağıdaki gibidir -
col1 0.480742
col2 0.454185
col3 0.266563
dtype: float64
Örnek 2
import pandas as pd
import numpy as np
# My custom function
df = pd.DataFrame(np.random.randn(5,3),columns=['col1','col2','col3'])
df.applymap(lambda x:x*100)
print df.apply(np.mean)
Onun output aşağıdaki gibidir -
col1 0.395263
col2 0.204418
col3 -0.795188
dtype: float64
ReindexingDataFrame'in satır etiketlerini ve sütun etiketlerini değiştirir. Yeniden endekslemek , verileri belirli bir eksen boyunca belirli bir etiket kümesine uyacak şekilde uydurmak anlamına gelir.
İndeksleme yoluyla birden fazla işlem gerçekleştirilebilir -
Mevcut verileri yeni bir etiket kümesiyle eşleşecek şekilde yeniden sıralayın.
Etiket için hiçbir verinin bulunmadığı etiket konumlarına eksik değer (NA) işaretçileri ekleyin.
Misal
import pandas as pd
import numpy as np
N=20
df = pd.DataFrame({
'A': pd.date_range(start='2016-01-01',periods=N,freq='D'),
'x': np.linspace(0,stop=N-1,num=N),
'y': np.random.rand(N),
'C': np.random.choice(['Low','Medium','High'],N).tolist(),
'D': np.random.normal(100, 10, size=(N)).tolist()
})
#reindex the DataFrame
df_reindexed = df.reindex(index=[0,2,5], columns=['A', 'C', 'B'])
print df_reindexed
Onun output aşağıdaki gibidir -
A C B
0 2016-01-01 Low NaN
2 2016-01-03 High NaN
5 2016-01-06 Low NaN
Diğer Nesnelerle Hizalamak için Yeniden Dizin Oluştur
Bir nesneyi alıp eksenlerini başka bir nesneyle aynı şekilde etiketlemek için yeniden indekslemek isteyebilirsiniz. Aynısını anlamak için aşağıdaki örneği düşünün.
Misal
import pandas as pd
import numpy as np
df1 = pd.DataFrame(np.random.randn(10,3),columns=['col1','col2','col3'])
df2 = pd.DataFrame(np.random.randn(7,3),columns=['col1','col2','col3'])
df1 = df1.reindex_like(df2)
print df1
Onun output aşağıdaki gibidir -
col1 col2 col3
0 -2.467652 -1.211687 -0.391761
1 -0.287396 0.522350 0.562512
2 -0.255409 -0.483250 1.866258
3 -1.150467 -0.646493 -0.222462
4 0.152768 -2.056643 1.877233
5 -1.155997 1.528719 -1.343719
6 -1.015606 -1.245936 -0.295275
Note - İşte df1 DataFrame değiştirildi ve aşağıdaki gibi yeniden dizine alındı: df2. Sütun adları eşleşmelidir, aksi takdirde sütun etiketinin tamamı için NAN eklenir.
Yeniden İndeksleme Sırasında Doldurma
reindex() aşağıdaki gibi değerlerle doldurma yöntemi olan isteğe bağlı bir parametre yöntemini alır -
pad/ffill - Değerleri ileriye doğru doldurun
bfill/backfill - Değerleri geriye doğru doldurun
nearest - En yakın indeks değerlerinden doldurun
Misal
import pandas as pd
import numpy as np
df1 = pd.DataFrame(np.random.randn(6,3),columns=['col1','col2','col3'])
df2 = pd.DataFrame(np.random.randn(2,3),columns=['col1','col2','col3'])
# Padding NAN's
print df2.reindex_like(df1)
# Now Fill the NAN's with preceding Values
print ("Data Frame with Forward Fill:")
print df2.reindex_like(df1,method='ffill')
Onun output aşağıdaki gibidir -
col1 col2 col3
0 1.311620 -0.707176 0.599863
1 -0.423455 -0.700265 1.133371
2 NaN NaN NaN
3 NaN NaN NaN
4 NaN NaN NaN
5 NaN NaN NaN
Data Frame with Forward Fill:
col1 col2 col3
0 1.311620 -0.707176 0.599863
1 -0.423455 -0.700265 1.133371
2 -0.423455 -0.700265 1.133371
3 -0.423455 -0.700265 1.133371
4 -0.423455 -0.700265 1.133371
5 -0.423455 -0.700265 1.133371
Note - Son dört sıra doldurulur.
Yeniden Dizine Ekleme Sırasında Doldurma Sınırları
Sınır argümanı, yeniden indeksleme sırasında doldurma üzerinde ek kontrol sağlar. Sınır, ardışık eşleşmelerin maksimum sayısını belirtir. Aynısını anlamak için aşağıdaki örneği ele alalım -
Misal
import pandas as pd
import numpy as np
df1 = pd.DataFrame(np.random.randn(6,3),columns=['col1','col2','col3'])
df2 = pd.DataFrame(np.random.randn(2,3),columns=['col1','col2','col3'])
# Padding NAN's
print df2.reindex_like(df1)
# Now Fill the NAN's with preceding Values
print ("Data Frame with Forward Fill limiting to 1:")
print df2.reindex_like(df1,method='ffill',limit=1)
Onun output aşağıdaki gibidir -
col1 col2 col3
0 0.247784 2.128727 0.702576
1 -0.055713 -0.021732 -0.174577
2 NaN NaN NaN
3 NaN NaN NaN
4 NaN NaN NaN
5 NaN NaN NaN
Data Frame with Forward Fill limiting to 1:
col1 col2 col3
0 0.247784 2.128727 0.702576
1 -0.055713 -0.021732 -0.174577
2 -0.055713 -0.021732 -0.174577
3 NaN NaN NaN
4 NaN NaN NaN
5 NaN NaN NaN
Note- Sadece 7. sıranın önceki 6. sıra tarafından doldurulduğuna dikkat edin. Ardından satırlar olduğu gibi bırakılır.
Yeniden adlandırılıyor
Rename () yöntemi, bazı eşlemelere (bir dikt veya Seri) veya rastgele bir işleve dayalı olarak bir ekseni yeniden etiketlemenizi sağlar.
Bunu anlamak için aşağıdaki örneği ele alalım -
import pandas as pd
import numpy as np
df1 = pd.DataFrame(np.random.randn(6,3),columns=['col1','col2','col3'])
print df1
print ("After renaming the rows and columns:")
print df1.rename(columns={'col1' : 'c1', 'col2' : 'c2'},
index = {0 : 'apple', 1 : 'banana', 2 : 'durian'})
Onun output aşağıdaki gibidir -
col1 col2 col3
0 0.486791 0.105759 1.540122
1 -0.990237 1.007885 -0.217896
2 -0.483855 -1.645027 -1.194113
3 -0.122316 0.566277 -0.366028
4 -0.231524 -0.721172 -0.112007
5 0.438810 0.000225 0.435479
After renaming the rows and columns:
c1 c2 col3
apple 0.486791 0.105759 1.540122
banana -0.990237 1.007885 -0.217896
durian -0.483855 -1.645027 -1.194113
3 -0.122316 0.566277 -0.366028
4 -0.231524 -0.721172 -0.112007
5 0.438810 0.000225 0.435479
Rename () yöntemi bir inplacevarsayılan olarak False olan ve temel alınan verileri kopyalayan adlandırılmış parametre. Geçmekinplace=True Verileri yerinde yeniden adlandırmak için.
Pandas nesneleri üzerindeki temel yinelemenin davranışı türe bağlıdır. Bir Seri üzerinde yineleme yapıldığında, dizi benzeri kabul edilir ve temel yineleme değerleri üretir. DataFrame ve Panel gibi diğer veri yapıları,dict-like üzerinde yineleme sözleşmesi keys nesnelerin.
Kısacası, temel yineleme (için i nesnede) üretir -
Series - değerler
DataFrame - sütun etiketleri
Panel - ürün etiketleri
Bir DataFrame'i Yineleme
Bir DataFrame'i yinelemek sütun adları verir. Aynısını anlamak için aşağıdaki örneği ele alalım.
import pandas as pd
import numpy as np
N=20
df = pd.DataFrame({
'A': pd.date_range(start='2016-01-01',periods=N,freq='D'),
'x': np.linspace(0,stop=N-1,num=N),
'y': np.random.rand(N),
'C': np.random.choice(['Low','Medium','High'],N).tolist(),
'D': np.random.normal(100, 10, size=(N)).tolist()
})
for col in df:
print col
Onun output aşağıdaki gibidir -
A
C
D
x
y
DataFrame'in satırları üzerinde yineleme yapmak için aşağıdaki işlevleri kullanabiliriz -
iteritems() - (anahtar, değer) çiftleri üzerinde yinelemek için
iterrows() - satırlar üzerinde (dizin, seri) çiftleri olarak yineleme
itertuples() - adlandırılmış çiftler olarak satırlar üzerinde yineleme
iteritems ()
Anahtar olarak her sütunun üzerinde, anahtar olarak etiketle değer çifti ve bir Seri nesnesi olarak sütun değeriyle birlikte yineler.
import pandas as pd
import numpy as np
df = pd.DataFrame(np.random.randn(4,3),columns=['col1','col2','col3'])
for key,value in df.iteritems():
print key,value
Onun output aşağıdaki gibidir -
col1 0 0.802390
1 0.324060
2 0.256811
3 0.839186
Name: col1, dtype: float64
col2 0 1.624313
1 -1.033582
2 1.796663
3 1.856277
Name: col2, dtype: float64
col3 0 -0.022142
1 -0.230820
2 1.160691
3 -0.830279
Name: col3, dtype: float64
Her sütunun bir Serideki anahtar / değer çifti olarak ayrı ayrı yinelendiğine dikkat edin.
yinelemeler ()
iterrows (), her satırdaki verileri içeren bir dizi ile birlikte her dizin değerini veren yineleyiciyi döndürür.
import pandas as pd
import numpy as np
df = pd.DataFrame(np.random.randn(4,3),columns = ['col1','col2','col3'])
for row_index,row in df.iterrows():
print row_index,row
Onun output aşağıdaki gibidir -
0 col1 1.529759
col2 0.762811
col3 -0.634691
Name: 0, dtype: float64
1 col1 -0.944087
col2 1.420919
col3 -0.507895
Name: 1, dtype: float64
2 col1 -0.077287
col2 -0.858556
col3 -0.663385
Name: 2, dtype: float64
3 col1 -1.638578
col2 0.059866
col3 0.493482
Name: 3, dtype: float64
Note - Çünkü iterrows()satırlar üzerinde yineleyin, satır boyunca veri türünü korumaz. 0,1,2 satır indeksleridir ve col1, col2, col3 sütun indeksleridir.
yinelemeler ()
itertuples () yöntemi, DataFrame'deki her satır için adlandırılmış bir demet veren bir yineleyici döndürür. Demetin ilk öğesi, satırın karşılık gelen indeks değeri olurken, kalan değerler satır değerleridir.
import pandas as pd
import numpy as np
df = pd.DataFrame(np.random.randn(4,3),columns = ['col1','col2','col3'])
for row in df.itertuples():
print row
Onun output aşağıdaki gibidir -
Pandas(Index=0, col1=1.5297586201375899, col2=0.76281127433814944, col3=-
0.6346908238310438)
Pandas(Index=1, col1=-0.94408735763808649, col2=1.4209186418359423, col3=-
0.50789517967096232)
Pandas(Index=2, col1=-0.07728664756791935, col2=-0.85855574139699076, col3=-
0.6633852507207626)
Pandas(Index=3, col1=0.65734942534106289, col2=-0.95057710432604969,
col3=0.80344487462316527)
Note- Yineleme sırasında herhangi bir nesneyi değiştirmeye çalışmayın. Yineleme, okumak içindir ve yineleyici, orijinal nesnenin bir kopyasını (bir görünüm) döndürür, böylece değişiklikler orijinal nesneye yansımayacaktır.
import pandas as pd
import numpy as np
df = pd.DataFrame(np.random.randn(4,3),columns = ['col1','col2','col3'])
for index, row in df.iterrows():
row['a'] = 10
print df
Onun output aşağıdaki gibidir -
col1 col2 col3
0 -1.739815 0.735595 -0.295589
1 0.635485 0.106803 1.527922
2 -0.939064 0.547095 0.038585
3 -1.016509 -0.116580 -0.523158
Gözlemleyin, hiçbir değişiklik yansıtılmadı.
Pandalar'da iki tür sıralama vardır. Onlar -
- Etikete göre
- Gerçek Değere Göre
Çıktısı olan bir örneği ele alalım.
import pandas as pd
import numpy as np
unsorted_df=pd.DataFrame(np.random.randn(10,2),index=[1,4,6,2,3,5,9,8,0,7],colu
mns=['col2','col1'])
print unsorted_df
Onun output aşağıdaki gibidir -
col2 col1
1 -2.063177 0.537527
4 0.142932 -0.684884
6 0.012667 -0.389340
2 -0.548797 1.848743
3 -1.044160 0.837381
5 0.385605 1.300185
9 1.031425 -1.002967
8 -0.407374 -0.435142
0 2.237453 -1.067139
7 -1.445831 -1.701035
İçinde unsorted_df, labels ve valuessıralanmamış. Bakalım bunların nasıl sıralanabileceğini görelim.
Etikete Göre
Kullanmak sort_index()yönteminde, eksen bağımsız değişkenlerini ve sıralama sırasını ileterek DataFrame sıralanabilir. Varsayılan olarak sıralama, satır etiketlerinde artan sırada yapılır.
import pandas as pd
import numpy as np
unsorted_df = pd.DataFrame(np.random.randn(10,2),index=[1,4,6,2,3,5,9,8,0,7],colu
mns = ['col2','col1'])
sorted_df=unsorted_df.sort_index()
print sorted_df
Onun output aşağıdaki gibidir -
col2 col1
0 0.208464 0.627037
1 0.641004 0.331352
2 -0.038067 -0.464730
3 -0.638456 -0.021466
4 0.014646 -0.737438
5 -0.290761 -1.669827
6 -0.797303 -0.018737
7 0.525753 1.628921
8 -0.567031 0.775951
9 0.060724 -0.322425
Sıralama Düzeni
Boolean değerini artan parametreye geçirerek, sıralamanın sırası kontrol edilebilir. Aynısını anlamak için aşağıdaki örneği ele alalım.
import pandas as pd
import numpy as np
unsorted_df = pd.DataFrame(np.random.randn(10,2),index=[1,4,6,2,3,5,9,8,0,7],colu
mns = ['col2','col1'])
sorted_df = unsorted_df.sort_index(ascending=False)
print sorted_df
Onun output aşağıdaki gibidir -
col2 col1
9 0.825697 0.374463
8 -1.699509 0.510373
7 -0.581378 0.622958
6 -0.202951 0.954300
5 -1.289321 -1.551250
4 1.302561 0.851385
3 -0.157915 -0.388659
2 -1.222295 0.166609
1 0.584890 -0.291048
0 0.668444 -0.061294
Sütunları Sırala
0 veya 1 değerine sahip eksen bağımsız değişkenini ileterek, sütun etiketleri üzerinde sıralama yapılabilir. Varsayılan olarak, axis = 0, satıra göre sıralayın. Aynısını anlamak için aşağıdaki örneği ele alalım.
import pandas as pd
import numpy as np
unsorted_df = pd.DataFrame(np.random.randn(10,2),index=[1,4,6,2,3,5,9,8,0,7],colu
mns = ['col2','col1'])
sorted_df=unsorted_df.sort_index(axis=1)
print sorted_df
Onun output aşağıdaki gibidir -
col1 col2
1 -0.291048 0.584890
4 0.851385 1.302561
6 0.954300 -0.202951
2 0.166609 -1.222295
3 -0.388659 -0.157915
5 -1.551250 -1.289321
9 0.374463 0.825697
8 0.510373 -1.699509
0 -0.061294 0.668444
7 0.622958 -0.581378
Değere Göre
Dizin sıralaması gibi, sort_values()değerlere göre sıralama yöntemidir. Değerlerin sıralanacağı DataFrame'in sütun adını kullanacak bir 'by' argümanını kabul eder.
import pandas as pd
import numpy as np
unsorted_df = pd.DataFrame({'col1':[2,1,1,1],'col2':[1,3,2,4]})
sorted_df = unsorted_df.sort_values(by='col1')
print sorted_df
Onun output aşağıdaki gibidir -
col1 col2
1 1 3
2 1 2
3 1 4
0 2 1
Col1 değerlerinin sıralandığına ve ilgili col2 değerinin ve satır dizininin col1 ile birlikte değişeceğine dikkat edin. Böylece sıralanmamış görünüyorlar.
'by' argüman sütun değerlerinin bir listesini alır.
import pandas as pd
import numpy as np
unsorted_df = pd.DataFrame({'col1':[2,1,1,1],'col2':[1,3,2,4]})
sorted_df = unsorted_df.sort_values(by=['col1','col2'])
print sorted_df
Onun output aşağıdaki gibidir -
col1 col2
2 1 2
1 1 3
3 1 4
0 2 1
Sıralama Algoritması
sort_values()algoritmayı birleştirme sıralaması, yığın sıralaması ve hızlı sıralama arasından seçmek için bir hüküm sağlar. Mergesort tek kararlı algoritmadır.
import pandas as pd
import numpy as np
unsorted_df = pd.DataFrame({'col1':[2,1,1,1],'col2':[1,3,2,4]})
sorted_df = unsorted_df.sort_values(by='col1' ,kind='mergesort')
print sorted_df
Onun output aşağıdaki gibidir -
col1 col2
1 1 3
2 1 2
3 1 4
0 2 1
Bu bölümde, dizi işlemlerini temel Seri / Dizinimiz ile tartışacağız. Sonraki bölümlerde, bu dizi işlevlerini DataFrame'e nasıl uygulayacağımızı öğreneceğiz.
Pandas, dizi verileri üzerinde çalışmayı kolaylaştıran bir dizi dizi işlevi sağlar. En önemlisi, bu işlevler eksik / NaN değerlerini yok sayar (veya hariç tutar).
Neredeyse, bu yöntemlerin tümü Python dize işlevleriyle çalışır (bakın: https://docs.python.org/3/library/stdtypes.html#string-methods). Yani, Series Object'i String Object'e dönüştürün ve ardından işlemi gerçekleştirin.
Şimdi her işlemin nasıl performans gösterdiğini görelim.
Sr.No | İşlev ve Açıklama |
---|---|
1 | lower() Seri / Dizindeki dizeleri küçük harfe dönüştürür. |
2 | upper() Seri / Dizindeki dizeleri büyük harfe dönüştürür. |
3 | len() Dize uzunluğunu () hesaplar. |
4 | strip() Seri / dizindeki her dizeden her iki taraftan beyaz boşlukları (satırsonu dahil) çıkarmaya yardımcı olur. |
5 | split(' ') Her dizeyi verilen desenle böler. |
6 | cat(sep=' ') Seri / dizin öğelerini verilen ayırıcıyla birleştirir. |
7 | get_dummies() DataFrame'i One-Hot Encoded değerlerle döndürür. |
8 | contains(pattern) Alt dizge öğede içeriyorsa, her öğe için bir Boolean değeri True, aksi takdirde False döndürür. |
9 | replace(a,b) Değeri değiştirir a değeri ile b. |
10 | repeat(value) Her bir öğeyi belirtilen sayıda yineler. |
11 | count(pattern) Her öğede desenin görünme sayısını döndürür. |
12 | startswith(pattern) Seri / Dizindeki öğe desenle başlıyorsa doğru döndürür. |
13 | endswith(pattern) Seri / Dizin içindeki öğe desenle biterse doğru döndürür. |
14 | find(pattern) Desenin ilk oluşumunun ilk konumunu döndürür. |
15 | findall(pattern) Modelin tüm oluşumlarının bir listesini döndürür. |
16 | swapcase Küçük / büyük harfleri değiştirir. |
17 | islower() Seri / Dizin içindeki her dizedeki tüm karakterlerin küçük harf olup olmadığını kontrol eder. Boolean döndürür |
18 | isupper() Seri / Dizin içindeki her dizedeki tüm karakterlerin büyük harf olup olmadığını kontrol eder. Boolean'ı döndürür. |
19 | isnumeric() Seri / Dizindeki her dizedeki tüm karakterlerin sayısal olup olmadığını kontrol eder. Boolean'ı döndürür. |
Şimdi bir Seri oluşturalım ve yukarıdaki tüm fonksiyonların nasıl çalıştığını görelim.
import pandas as pd
import numpy as np
s = pd.Series(['Tom', 'William Rick', 'John', 'Alber@t', np.nan, '1234','SteveSmith'])
print s
Onun output aşağıdaki gibidir -
0 Tom
1 William Rick
2 John
3 Alber@t
4 NaN
5 1234
6 Steve Smith
dtype: object
daha düşük ()
import pandas as pd
import numpy as np
s = pd.Series(['Tom', 'William Rick', 'John', 'Alber@t', np.nan, '1234','SteveSmith'])
print s.str.lower()
Onun output aşağıdaki gibidir -
0 tom
1 william rick
2 john
3 alber@t
4 NaN
5 1234
6 steve smith
dtype: object
üst()
import pandas as pd
import numpy as np
s = pd.Series(['Tom', 'William Rick', 'John', 'Alber@t', np.nan, '1234','SteveSmith'])
print s.str.upper()
Onun output aşağıdaki gibidir -
0 TOM
1 WILLIAM RICK
2 JOHN
3 ALBER@T
4 NaN
5 1234
6 STEVE SMITH
dtype: object
len ()
import pandas as pd
import numpy as np
s = pd.Series(['Tom', 'William Rick', 'John', 'Alber@t', np.nan, '1234','SteveSmith'])
print s.str.len()
Onun output aşağıdaki gibidir -
0 3.0
1 12.0
2 4.0
3 7.0
4 NaN
5 4.0
6 10.0
dtype: float64
şerit ()
import pandas as pd
import numpy as np
s = pd.Series(['Tom ', ' William Rick', 'John', 'Alber@t'])
print s
print ("After Stripping:")
print s.str.strip()
Onun output aşağıdaki gibidir -
0 Tom
1 William Rick
2 John
3 Alber@t
dtype: object
After Stripping:
0 Tom
1 William Rick
2 John
3 Alber@t
dtype: object
bölünme (desen)
import pandas as pd
import numpy as np
s = pd.Series(['Tom ', ' William Rick', 'John', 'Alber@t'])
print s
print ("Split Pattern:")
print s.str.split(' ')
Onun output aşağıdaki gibidir -
0 Tom
1 William Rick
2 John
3 Alber@t
dtype: object
Split Pattern:
0 [Tom, , , , , , , , , , ]
1 [, , , , , William, Rick]
2 [John]
3 [Alber@t]
dtype: object
kedi (sep = desen)
import pandas as pd
import numpy as np
s = pd.Series(['Tom ', ' William Rick', 'John', 'Alber@t'])
print s.str.cat(sep='_')
Onun output aşağıdaki gibidir -
Tom _ William Rick_John_Alber@t
get_dummies ()
import pandas as pd
import numpy as np
s = pd.Series(['Tom ', ' William Rick', 'John', 'Alber@t'])
print s.str.get_dummies()
Onun output aşağıdaki gibidir -
William Rick Alber@t John Tom
0 0 0 0 1
1 1 0 0 0
2 0 0 1 0
3 0 1 0 0
içerir ()
import pandas as pd
s = pd.Series(['Tom ', ' William Rick', 'John', 'Alber@t'])
print s.str.contains(' ')
Onun output aşağıdaki gibidir -
0 True
1 True
2 False
3 False
dtype: bool
değiştir (a, b)
import pandas as pd
s = pd.Series(['Tom ', ' William Rick', 'John', 'Alber@t'])
print s
print ("After replacing @ with $:") print s.str.replace('@','$')
Onun output aşağıdaki gibidir -
0 Tom
1 William Rick
2 John
3 Alber@t
dtype: object
After replacing @ with $: 0 Tom 1 William Rick 2 John 3 Alber$t
dtype: object
tekrar (değer)
import pandas as pd
s = pd.Series(['Tom ', ' William Rick', 'John', 'Alber@t'])
print s.str.repeat(2)
Onun output aşağıdaki gibidir -
0 Tom Tom
1 William Rick William Rick
2 JohnJohn
3 Alber@tAlber@t
dtype: object
sayım (desen)
import pandas as pd
s = pd.Series(['Tom ', ' William Rick', 'John', 'Alber@t'])
print ("The number of 'm's in each string:")
print s.str.count('m')
Onun output aşağıdaki gibidir -
The number of 'm's in each string:
0 1
1 1
2 0
3 0
startswith (desen)
import pandas as pd
s = pd.Series(['Tom ', ' William Rick', 'John', 'Alber@t'])
print ("Strings that start with 'T':")
print s.str. startswith ('T')
Onun output aşağıdaki gibidir -
0 True
1 False
2 False
3 False
dtype: bool
endswith (desen)
import pandas as pd
s = pd.Series(['Tom ', ' William Rick', 'John', 'Alber@t'])
print ("Strings that end with 't':")
print s.str.endswith('t')
Onun output aşağıdaki gibidir -
Strings that end with 't':
0 False
1 False
2 False
3 True
dtype: bool
bul (desen)
import pandas as pd
s = pd.Series(['Tom ', ' William Rick', 'John', 'Alber@t'])
print s.str.find('e')
Onun output aşağıdaki gibidir -
0 -1
1 -1
2 -1
3 3
dtype: int64
"-1", öğede böyle bir model olmadığını gösterir.
findall (desen)
import pandas as pd
s = pd.Series(['Tom ', ' William Rick', 'John', 'Alber@t'])
print s.str.findall('e')
Onun output aşağıdaki gibidir -
0 []
1 []
2 []
3 [e]
dtype: object
Boş liste ([]), öğede böyle bir model olmadığını gösterir.
takas kutusu ()
import pandas as pd
s = pd.Series(['Tom', 'William Rick', 'John', 'Alber@t'])
print s.str.swapcase()
Onun output aşağıdaki gibidir -
0 tOM
1 wILLIAM rICK
2 jOHN
3 aLBER@T
dtype: object
islower ()
import pandas as pd
s = pd.Series(['Tom', 'William Rick', 'John', 'Alber@t'])
print s.str.islower()
Onun output aşağıdaki gibidir -
0 False
1 False
2 False
3 False
dtype: bool
isupper ()
import pandas as pd
s = pd.Series(['Tom', 'William Rick', 'John', 'Alber@t'])
print s.str.isupper()
Onun output aşağıdaki gibidir -
0 False
1 False
2 False
3 False
dtype: bool
isnumeric ()
import pandas as pd
s = pd.Series(['Tom', 'William Rick', 'John', 'Alber@t'])
print s.str.isnumeric()
Onun output aşağıdaki gibidir -
0 False
1 False
2 False
3 False
dtype: bool
Pandalar, davranışının bazı yönlerini özelleştirmek için API sağlar, ekran çoğunlukla kullanılmaktadır.
API, beş ilgili işlevden oluşur. Onlar -
- get_option()
- set_option()
- reset_option()
- describe_option()
- option_context()
Şimdi fonksiyonların nasıl çalıştığını anlayalım.
get_option (param)
get_option tek bir parametre alır ve aşağıdaki çıktıda verilen değeri döndürür -
display.max_rows
Varsayılan değer sayısını görüntüler. Yorumlayıcı bu değeri okur ve bu değere sahip satırları görüntülenecek üst sınır olarak görüntüler.
import pandas as pd
print pd.get_option("display.max_rows")
Onun output aşağıdaki gibidir -
60
display.max_columns
Varsayılan değer sayısını görüntüler. Yorumlayıcı bu değeri okur ve bu değere sahip satırları görüntülenecek üst sınır olarak görüntüler.
import pandas as pd
print pd.get_option("display.max_columns")
Onun output aşağıdaki gibidir -
20
Burada, 60 ve 20 varsayılan yapılandırma parametresi değerleridir.
set_option (param, değer)
set_option iki argüman alır ve değeri aşağıda gösterildiği gibi parametreye ayarlar -
display.max_rows
Kullanma set_option(), görüntülenecek varsayılan satır sayısını değiştirebiliriz.
import pandas as pd
pd.set_option("display.max_rows",80)
print pd.get_option("display.max_rows")
Onun output aşağıdaki gibidir -
80
display.max_columns
Kullanma set_option(), görüntülenecek varsayılan satır sayısını değiştirebiliriz.
import pandas as pd
pd.set_option("display.max_columns",30)
print pd.get_option("display.max_columns")
Onun output aşağıdaki gibidir -
30
reset_option (param)
reset_option bir bağımsız değişken alır ve değeri varsayılan değere geri ayarlar.
display.max_rows
Reset_option () kullanarak, değeri görüntülenecek varsayılan satır sayısına geri döndürebiliriz.
import pandas as pd
pd.reset_option("display.max_rows")
print pd.get_option("display.max_rows")
Onun output aşağıdaki gibidir -
60
define_option (param)
describe_option bağımsız değişkenin açıklamasını yazdırır.
display.max_rows
Reset_option () kullanarak, değeri görüntülenecek varsayılan satır sayısına geri döndürebiliriz.
import pandas as pd
pd.describe_option("display.max_rows")
Onun output aşağıdaki gibidir -
display.max_rows : int
If max_rows is exceeded, switch to truncate view. Depending on
'large_repr', objects are either centrally truncated or printed as
a summary view. 'None' value means unlimited.
In case python/IPython is running in a terminal and `large_repr`
equals 'truncate' this can be set to 0 and pandas will auto-detect
the height of the terminal and print a truncated object which fits
the screen height. The IPython notebook, IPython qtconsole, or
IDLE do not run in a terminal and hence it is not possible to do
correct auto-detection.
[default: 60] [currently: 60]
option_context ()
option_context bağlam yöneticisi, seçeneği ayarlamak için kullanılır with statementgeçici. Opsiyon değerleri otomatik olarak geri yüklenir.with block -
display.max_rows
Option_context () kullanarak değeri geçici olarak ayarlayabiliriz.
import pandas as pd
with pd.option_context("display.max_rows",10):
print(pd.get_option("display.max_rows"))
print(pd.get_option("display.max_rows"))
Onun output aşağıdaki gibidir -
10
10
Birinci ve ikinci baskı ifadeleri arasındaki farka bakın. İlk ifade, tarafından ayarlanan değeri yazdırıroption_context() içinde geçici olan with contextkendisi. Sonrawith contextikinci print deyimi, yapılandırılan değeri yazdırır.
Sık kullanılan Parametreler
Sr.No | Parametre ve Açıklama |
---|---|
1 | display.max_rows Görüntülenecek maksimum satır sayısını görüntüler |
2 | 2 display.max_columns Görüntülenecek maksimum sütun sayısını görüntüler |
3 | display.expand_frame_repr Sayfaları Uzatmak için DataFrame'leri görüntüler |
4 | display.max_colwidth Maksimum sütun genişliğini görüntüler |
5 | display.precision Ondalık sayıların hassasiyetini görüntüler |
Bu bölümde, tarihin nasıl dilimlenip bölüneceğini ve genel olarak pandas nesnesinin alt kümesini nasıl alacağımızı tartışacağız.
Python ve NumPy indeksleme operatörleri "[]" ve öznitelik operatörü "." Çok çeşitli kullanım durumlarında Pandalar veri yapılarına hızlı ve kolay erişim sağlar. Bununla birlikte, erişilecek verilerin türü önceden bilinmediğinden, doğrudan standart operatörlerin kullanılması bazı optimizasyon sınırlarına sahiptir. Üretim kodu için, bu bölümde açıklanan optimize edilmiş pandalar veri erişim yöntemlerinden yararlanmanızı öneririz.
Pandalar artık üç tür Çok eksenli indekslemeyi destekliyor; üç tür aşağıdaki tabloda belirtilmiştir -
Sr.No | Endeksleme ve Açıklama |
---|---|
1 | .loc() Etikete dayalı |
2 | .iloc() Tam sayıya dayalı |
3 | .ix() Hem Etiket hem de Tamsayı tabanlı |
.loc ()
Pandalar, yalnızca sahip olmak için çeşitli yöntemler sağlar. label based indexing. Dilimleme sırasında başlangıç sınırı da dahil edilir. Tam sayılar geçerli etiketlerdir, ancak konumu değil etikete atıfta bulunurlar.
.loc() birden çok erişim yöntemine sahiptir -
- Tek bir skaler etiket
- Etiket listesi
- Bir dilim nesnesi
- Bir Boole dizisi
loc',' ile ayrılmış iki tek / liste / aralık operatörünü alır. Birincisi satırı, ikincisi sütunları gösterir.
örnek 1
#import the pandas library and aliasing as pd
import pandas as pd
import numpy as np
df = pd.DataFrame(np.random.randn(8, 4),
index = ['a','b','c','d','e','f','g','h'], columns = ['A', 'B', 'C', 'D'])
#select all rows for a specific column
print df.loc[:,'A']
Onun output aşağıdaki gibidir -
a 0.391548
b -0.070649
c -0.317212
d -2.162406
e 2.202797
f 0.613709
g 1.050559
h 1.122680
Name: A, dtype: float64
Örnek 2
# import the pandas library and aliasing as pd
import pandas as pd
import numpy as np
df = pd.DataFrame(np.random.randn(8, 4),
index = ['a','b','c','d','e','f','g','h'], columns = ['A', 'B', 'C', 'D'])
# Select all rows for multiple columns, say list[]
print df.loc[:,['A','C']]
Onun output aşağıdaki gibidir -
A C
a 0.391548 0.745623
b -0.070649 1.620406
c -0.317212 1.448365
d -2.162406 -0.873557
e 2.202797 0.528067
f 0.613709 0.286414
g 1.050559 0.216526
h 1.122680 -1.621420
Örnek 3
# import the pandas library and aliasing as pd
import pandas as pd
import numpy as np
df = pd.DataFrame(np.random.randn(8, 4),
index = ['a','b','c','d','e','f','g','h'], columns = ['A', 'B', 'C', 'D'])
# Select few rows for multiple columns, say list[]
print df.loc[['a','b','f','h'],['A','C']]
Onun output aşağıdaki gibidir -
A C
a 0.391548 0.745623
b -0.070649 1.620406
f 0.613709 0.286414
h 1.122680 -1.621420
Örnek 4
# import the pandas library and aliasing as pd
import pandas as pd
import numpy as np
df = pd.DataFrame(np.random.randn(8, 4),
index = ['a','b','c','d','e','f','g','h'], columns = ['A', 'B', 'C', 'D'])
# Select range of rows for all columns
print df.loc['a':'h']
Onun output aşağıdaki gibidir -
A B C D
a 0.391548 -0.224297 0.745623 0.054301
b -0.070649 -0.880130 1.620406 1.419743
c -0.317212 -1.929698 1.448365 0.616899
d -2.162406 0.614256 -0.873557 1.093958
e 2.202797 -2.315915 0.528067 0.612482
f 0.613709 -0.157674 0.286414 -0.500517
g 1.050559 -2.272099 0.216526 0.928449
h 1.122680 0.324368 -1.621420 -0.741470
Örnek 5
# import the pandas library and aliasing as pd
import pandas as pd
import numpy as np
df = pd.DataFrame(np.random.randn(8, 4),
index = ['a','b','c','d','e','f','g','h'], columns = ['A', 'B', 'C', 'D'])
# for getting values with a boolean array
print df.loc['a']>0
Onun output aşağıdaki gibidir -
A False
B True
C False
D False
Name: a, dtype: bool
.iloc ()
Pandalar, tamamen tamsayı tabanlı indeksleme elde etmek için çeşitli yöntemler sağlar. Python ve numpy gibi, bunlar0-based indeksleme.
Çeşitli erişim yöntemleri aşağıdaki gibidir -
- Bir tam sayı
- Tam sayıların listesi
- Bir dizi değer
örnek 1
# import the pandas library and aliasing as pd
import pandas as pd
import numpy as np
df = pd.DataFrame(np.random.randn(8, 4), columns = ['A', 'B', 'C', 'D'])
# select all rows for a specific column
print df.iloc[:4]
Onun output aşağıdaki gibidir -
A B C D
0 0.699435 0.256239 -1.270702 -0.645195
1 -0.685354 0.890791 -0.813012 0.631615
2 -0.783192 -0.531378 0.025070 0.230806
3 0.539042 -1.284314 0.826977 -0.026251
Örnek 2
import pandas as pd
import numpy as np
df = pd.DataFrame(np.random.randn(8, 4), columns = ['A', 'B', 'C', 'D'])
# Integer slicing
print df.iloc[:4]
print df.iloc[1:5, 2:4]
Onun output aşağıdaki gibidir -
A B C D
0 0.699435 0.256239 -1.270702 -0.645195
1 -0.685354 0.890791 -0.813012 0.631615
2 -0.783192 -0.531378 0.025070 0.230806
3 0.539042 -1.284314 0.826977 -0.026251
C D
1 -0.813012 0.631615
2 0.025070 0.230806
3 0.826977 -0.026251
4 1.423332 1.130568
Örnek 3
import pandas as pd
import numpy as np
df = pd.DataFrame(np.random.randn(8, 4), columns = ['A', 'B', 'C', 'D'])
# Slicing through list of values
print df.iloc[[1, 3, 5], [1, 3]]
print df.iloc[1:3, :]
print df.iloc[:,1:3]
Onun output aşağıdaki gibidir -
B D
1 0.890791 0.631615
3 -1.284314 -0.026251
5 -0.512888 -0.518930
A B C D
1 -0.685354 0.890791 -0.813012 0.631615
2 -0.783192 -0.531378 0.025070 0.230806
B C
0 0.256239 -1.270702
1 0.890791 -0.813012
2 -0.531378 0.025070
3 -1.284314 0.826977
4 -0.460729 1.423332
5 -0.512888 0.581409
6 -1.204853 0.098060
7 -0.947857 0.641358
.ix ()
Saf etiket tabanlı ve tamsayı tabanlı olmanın yanı sıra, Pandalar .ix () operatörünü kullanarak nesnenin seçilmesi ve alt kümelenmesi için karma bir yöntem sağlar.
örnek 1
import pandas as pd
import numpy as np
df = pd.DataFrame(np.random.randn(8, 4), columns = ['A', 'B', 'C', 'D'])
# Integer slicing
print df.ix[:4]
Onun output aşağıdaki gibidir -
A B C D
0 0.699435 0.256239 -1.270702 -0.645195
1 -0.685354 0.890791 -0.813012 0.631615
2 -0.783192 -0.531378 0.025070 0.230806
3 0.539042 -1.284314 0.826977 -0.026251
Örnek 2
import pandas as pd
import numpy as np
df = pd.DataFrame(np.random.randn(8, 4), columns = ['A', 'B', 'C', 'D'])
# Index slicing
print df.ix[:,'A']
Onun output aşağıdaki gibidir -
0 0.699435
1 -0.685354
2 -0.783192
3 0.539042
4 -1.044209
5 -1.415411
6 1.062095
7 0.994204
Name: A, dtype: float64
Notasyonların Kullanımı
Çoklu eksen indeksleme ile Pandas nesnesinden değerler almak aşağıdaki gösterimi kullanır -
Nesne | Dizin oluşturucular | Dönüş Tipi |
---|---|---|
Dizi | s.loc [dizinleyici] | Skaler değer |
Veri çerçevesi | df.loc [row_index, col_index] | Seri nesnesi |
Panel | p.loc [item_index, major_index, minor_index] | p.loc [item_index, major_index, minor_index] |
Note − .iloc() & .ix() aynı indeksleme seçeneklerini ve Dönüş değerini uygular.
Şimdi her bir işlemin DataFrame nesnesinde nasıl gerçekleştirilebileceğini görelim. Temel indeksleme operatörünü '[]' kullanacağız -
örnek 1
import pandas as pd
import numpy as np
df = pd.DataFrame(np.random.randn(8, 4), columns = ['A', 'B', 'C', 'D'])
print df['A']
Onun output aşağıdaki gibidir -
0 -0.478893
1 0.391931
2 0.336825
3 -1.055102
4 -0.165218
5 -0.328641
6 0.567721
7 -0.759399
Name: A, dtype: float64
Note - Bu sütunları seçmek için [] 'e bir değer listesi geçirebiliriz.
Örnek 2
import pandas as pd
import numpy as np
df = pd.DataFrame(np.random.randn(8, 4), columns = ['A', 'B', 'C', 'D'])
print df[['A','B']]
Onun output aşağıdaki gibidir -
A B
0 -0.478893 -0.606311
1 0.391931 -0.949025
2 0.336825 0.093717
3 -1.055102 -0.012944
4 -0.165218 1.550310
5 -0.328641 -0.226363
6 0.567721 -0.312585
7 -0.759399 -0.372696
Örnek 3
import pandas as pd
import numpy as np
df = pd.DataFrame(np.random.randn(8, 4), columns = ['A', 'B', 'C', 'D'])
print df[2:2]
Onun output aşağıdaki gibidir -
Columns: [A, B, C, D]
Index: []
Öznitelik Erişimi
Sütunlar, özellik operatörü '.' Kullanılarak seçilebilir.
Misal
import pandas as pd
import numpy as np
df = pd.DataFrame(np.random.randn(8, 4), columns = ['A', 'B', 'C', 'D'])
print df.A
Onun output aşağıdaki gibidir -
0 -0.478893
1 0.391931
2 0.336825
3 -1.055102
4 -0.165218
5 -0.328641
6 0.567721
7 -0.759399
Name: A, dtype: float64
İstatistiksel yöntemler, verilerin davranışının anlaşılmasına ve analiz edilmesine yardımcı olur. Şimdi Pandas nesnelerine uygulayabileceğimiz birkaç istatistiksel işlevi öğreneceğiz.
Yüzde değişimi
Seriler, DatFrame'ler ve Panel, hepsi işleve sahiptir pct_change(). Bu işlev, her öğeyi önceki öğesiyle karşılaştırır ve değişim yüzdesini hesaplar.
import pandas as pd
import numpy as np
s = pd.Series([1,2,3,4,5,4])
print s.pct_change()
df = pd.DataFrame(np.random.randn(5, 2))
print df.pct_change()
Onun output aşağıdaki gibidir -
0 NaN
1 1.000000
2 0.500000
3 0.333333
4 0.250000
5 -0.200000
dtype: float64
0 1
0 NaN NaN
1 -15.151902 0.174730
2 -0.746374 -1.449088
3 -3.582229 -3.165836
4 15.601150 -1.860434
Varsayılan olarak, pct_change()sütunlar üzerinde çalışır; aynı satırı akıllıca uygulamak istiyorsanız, o zaman kullanınaxis=1() argüman.
Kovaryans
Kovaryans, seri verilere uygulanır. Series nesnesi, seri nesneler arasındaki kovaryansı hesaplamak için bir yöntem koduna sahiptir. NA otomatik olarak hariç tutulacaktır.
Cov Serisi
import pandas as pd
import numpy as np
s1 = pd.Series(np.random.randn(10))
s2 = pd.Series(np.random.randn(10))
print s1.cov(s2)
Onun output aşağıdaki gibidir -
-0.12978405324
Bir DataFrame'e uygulandığında kovaryans yöntemi hesaplar cov tüm sütunlar arasında.
import pandas as pd
import numpy as np
frame = pd.DataFrame(np.random.randn(10, 5), columns=['a', 'b', 'c', 'd', 'e'])
print frame['a'].cov(frame['b'])
print frame.cov()
Onun output aşağıdaki gibidir -
-0.58312921152741437
a b c d e
a 1.780628 -0.583129 -0.185575 0.003679 -0.136558
b -0.583129 1.297011 0.136530 -0.523719 0.251064
c -0.185575 0.136530 0.915227 -0.053881 -0.058926
d 0.003679 -0.523719 -0.053881 1.521426 -0.487694
e -0.136558 0.251064 -0.058926 -0.487694 0.960761
Note - cov arasında a ve b İlk ifadedeki sütun ve aynı DataFrame'de cov tarafından döndürülen değerdir.
Korelasyon
Korelasyon, herhangi iki değer dizisi (seri) arasındaki doğrusal ilişkiyi gösterir. Korelasyonu hesaplamak için pearson (varsayılan), spearman ve kendall gibi birden fazla yöntem vardır.
import pandas as pd
import numpy as np
frame = pd.DataFrame(np.random.randn(10, 5), columns=['a', 'b', 'c', 'd', 'e'])
print frame['a'].corr(frame['b'])
print frame.corr()
Onun output aşağıdaki gibidir -
-0.383712785514
a b c d e
a 1.000000 -0.383713 -0.145368 0.002235 -0.104405
b -0.383713 1.000000 0.125311 -0.372821 0.224908
c -0.145368 0.125311 1.000000 -0.045661 -0.062840
d 0.002235 -0.372821 -0.045661 1.000000 -0.403380
e -0.104405 0.224908 -0.062840 -0.403380 1.000000
DataFrame'de sayısal olmayan herhangi bir sütun varsa, otomatik olarak hariç tutulur.
Veri Sıralaması
Veri Sıralaması, öğeler dizisindeki her öğe için sıralama üretir. Beraberlik durumunda, ortalama sırayı belirler.
import pandas as pd
import numpy as np
s = pd.Series(np.random.np.random.randn(5), index=list('abcde'))
s['d'] = s['b'] # so there's a tie
print s.rank()
Onun output aşağıdaki gibidir -
a 1.0
b 3.5
c 2.0
d 3.5
e 5.0
dtype: float64
Sıra isteğe bağlı olarak, varsayılan olarak doğru olan artan bir parametre alır; yanlış olduğunda, veriler ters sıralanır ve daha büyük değerlere daha küçük bir sıra atanır.
Rank, method parametresiyle belirtilen farklı bağ bozma yöntemlerini destekler -
average - bağlı grubun ortalama sıralaması
min - gruptaki en düşük rütbe
max - gruptaki en yüksek rütbe
first - dizide göründükleri sırayla atanan sıralar
Sayısal veriler üzerinde çalışmak için Pandalar, pencere istatistikleri için yuvarlanma, genişletme ve katlanarak hareket ettirme gibi birkaç değişken sağlar. Bunlar arasındasum, mean, median, variance, covariance, correlation, vb.
Şimdi bunların her birinin DataFrame nesnelerine nasıl uygulanabileceğini öğreneceğiz.
.rolling () Fonksiyonu
Bu işlev bir dizi veriye uygulanabilir. Belirtinwindow=n argüman ve bunun üzerine uygun istatistiksel işlevi uygulayın.
import pandas as pd
import numpy as np
df = pd.DataFrame(np.random.randn(10, 4),
index = pd.date_range('1/1/2000', periods=10),
columns = ['A', 'B', 'C', 'D'])
print df.rolling(window=3).mean()
Onun output aşağıdaki gibidir -
A B C D
2000-01-01 NaN NaN NaN NaN
2000-01-02 NaN NaN NaN NaN
2000-01-03 0.434553 -0.667940 -1.051718 -0.826452
2000-01-04 0.628267 -0.047040 -0.287467 -0.161110
2000-01-05 0.398233 0.003517 0.099126 -0.405565
2000-01-06 0.641798 0.656184 -0.322728 0.428015
2000-01-07 0.188403 0.010913 -0.708645 0.160932
2000-01-08 0.188043 -0.253039 -0.818125 -0.108485
2000-01-09 0.682819 -0.606846 -0.178411 -0.404127
2000-01-10 0.688583 0.127786 0.513832 -1.067156
Note - Pencere boyutu 3 olduğundan, ilk iki öğe için boş değerler vardır ve üçüncüsünden değer, n, n-1 ve n-2elementler. Böylece yukarıda belirtildiği gibi çeşitli işlevleri de uygulayabiliriz.
.expanding () İşlevi
Bu işlev bir dizi veriye uygulanabilir. Belirtinmin_periods=n argüman ve bunun üzerine uygun istatistiksel işlevi uygulayın.
import pandas as pd
import numpy as np
df = pd.DataFrame(np.random.randn(10, 4),
index = pd.date_range('1/1/2000', periods=10),
columns = ['A', 'B', 'C', 'D'])
print df.expanding(min_periods=3).mean()
Onun output aşağıdaki gibidir -
A B C D
2000-01-01 NaN NaN NaN NaN
2000-01-02 NaN NaN NaN NaN
2000-01-03 0.434553 -0.667940 -1.051718 -0.826452
2000-01-04 0.743328 -0.198015 -0.852462 -0.262547
2000-01-05 0.614776 -0.205649 -0.583641 -0.303254
2000-01-06 0.538175 -0.005878 -0.687223 -0.199219
2000-01-07 0.505503 -0.108475 -0.790826 -0.081056
2000-01-08 0.454751 -0.223420 -0.671572 -0.230215
2000-01-09 0.586390 -0.206201 -0.517619 -0.267521
2000-01-10 0.560427 -0.037597 -0.399429 -0.376886
.ewm () Fonksiyonu
ewmbir dizi veriye uygulanır. Com, span,halflifeargüman ve bunun üzerine uygun istatistiksel işlevi uygulayın. Ağırlıkları üssel olarak atar.
import pandas as pd
import numpy as np
df = pd.DataFrame(np.random.randn(10, 4),
index = pd.date_range('1/1/2000', periods=10),
columns = ['A', 'B', 'C', 'D'])
print df.ewm(com=0.5).mean()
Onun output aşağıdaki gibidir -
A B C D
2000-01-01 1.088512 -0.650942 -2.547450 -0.566858
2000-01-02 0.865131 -0.453626 -1.137961 0.058747
2000-01-03 -0.132245 -0.807671 -0.308308 -1.491002
2000-01-04 1.084036 0.555444 -0.272119 0.480111
2000-01-05 0.425682 0.025511 0.239162 -0.153290
2000-01-06 0.245094 0.671373 -0.725025 0.163310
2000-01-07 0.288030 -0.259337 -1.183515 0.473191
2000-01-08 0.162317 -0.771884 -0.285564 -0.692001
2000-01-09 1.147156 -0.302900 0.380851 -0.607976
2000-01-10 0.600216 0.885614 0.569808 -1.110113
Pencere fonksiyonları, eğriyi düzleştirerek verilerdeki eğilimleri grafik olarak bulmada büyük ölçüde kullanılır. Günlük verilerde çok fazla varyasyon varsa ve çok sayıda veri noktası mevcutsa, örnekleri almak ve çizim yapmak bir yöntemdir ve pencere hesaplamalarını uygulamak ve sonuçların üzerine grafiği çizmek başka bir yöntemdir. Bu yöntemlerle eğriyi veya eğilimi düzeltebiliriz.
Bir kez yuvarlanır, genişler ve ewm nesneler oluşturulur, veriler üzerinde toplamalar gerçekleştirmek için çeşitli yöntemler mevcuttur.
DataFrame'de Toplamaları Uygulama
Bir DataFrame oluşturalım ve üzerine toplamalar uygulayalım.
import pandas as pd
import numpy as np
df = pd.DataFrame(np.random.randn(10, 4),
index = pd.date_range('1/1/2000', periods=10),
columns = ['A', 'B', 'C', 'D'])
print df
r = df.rolling(window=3,min_periods=1)
print r
Onun output aşağıdaki gibidir -
A B C D
2000-01-01 1.088512 -0.650942 -2.547450 -0.566858
2000-01-02 0.790670 -0.387854 -0.668132 0.267283
2000-01-03 -0.575523 -0.965025 0.060427 -2.179780
2000-01-04 1.669653 1.211759 -0.254695 1.429166
2000-01-05 0.100568 -0.236184 0.491646 -0.466081
2000-01-06 0.155172 0.992975 -1.205134 0.320958
2000-01-07 0.309468 -0.724053 -1.412446 0.627919
2000-01-08 0.099489 -1.028040 0.163206 -1.274331
2000-01-09 1.639500 -0.068443 0.714008 -0.565969
2000-01-10 0.326761 1.479841 0.664282 -1.361169
Rolling [window=3,min_periods=1,center=False,axis=0]
DataFrame'in tamamına bir işlev ileterek toplayabiliriz veya standart aracılığıyla bir sütun seçebiliriz get item yöntem.
Tüm Veri Çerçevesine Toplama Uygulama
import pandas as pd
import numpy as np
df = pd.DataFrame(np.random.randn(10, 4),
index = pd.date_range('1/1/2000', periods=10),
columns = ['A', 'B', 'C', 'D'])
print df
r = df.rolling(window=3,min_periods=1)
print r.aggregate(np.sum)
Onun output aşağıdaki gibidir -
A B C D
2000-01-01 1.088512 -0.650942 -2.547450 -0.566858
2000-01-02 1.879182 -1.038796 -3.215581 -0.299575
2000-01-03 1.303660 -2.003821 -3.155154 -2.479355
2000-01-04 1.884801 -0.141119 -0.862400 -0.483331
2000-01-05 1.194699 0.010551 0.297378 -1.216695
2000-01-06 1.925393 1.968551 -0.968183 1.284044
2000-01-07 0.565208 0.032738 -2.125934 0.482797
2000-01-08 0.564129 -0.759118 -2.454374 -0.325454
2000-01-09 2.048458 -1.820537 -0.535232 -1.212381
2000-01-10 2.065750 0.383357 1.541496 -3.201469
A B C D
2000-01-01 1.088512 -0.650942 -2.547450 -0.566858
2000-01-02 1.879182 -1.038796 -3.215581 -0.299575
2000-01-03 1.303660 -2.003821 -3.155154 -2.479355
2000-01-04 1.884801 -0.141119 -0.862400 -0.483331
2000-01-05 1.194699 0.010551 0.297378 -1.216695
2000-01-06 1.925393 1.968551 -0.968183 1.284044
2000-01-07 0.565208 0.032738 -2.125934 0.482797
2000-01-08 0.564129 -0.759118 -2.454374 -0.325454
2000-01-09 2.048458 -1.820537 -0.535232 -1.212381
2000-01-10 2.065750 0.383357 1.541496 -3.201469
Bir Veri Çerçevesinin Tek Sütununa Toplama Uygulama
import pandas as pd
import numpy as np
df = pd.DataFrame(np.random.randn(10, 4),
index = pd.date_range('1/1/2000', periods=10),
columns = ['A', 'B', 'C', 'D'])
print df
r = df.rolling(window=3,min_periods=1)
print r['A'].aggregate(np.sum)
Onun output aşağıdaki gibidir -
A B C D
2000-01-01 1.088512 -0.650942 -2.547450 -0.566858
2000-01-02 1.879182 -1.038796 -3.215581 -0.299575
2000-01-03 1.303660 -2.003821 -3.155154 -2.479355
2000-01-04 1.884801 -0.141119 -0.862400 -0.483331
2000-01-05 1.194699 0.010551 0.297378 -1.216695
2000-01-06 1.925393 1.968551 -0.968183 1.284044
2000-01-07 0.565208 0.032738 -2.125934 0.482797
2000-01-08 0.564129 -0.759118 -2.454374 -0.325454
2000-01-09 2.048458 -1.820537 -0.535232 -1.212381
2000-01-10 2.065750 0.383357 1.541496 -3.201469
2000-01-01 1.088512
2000-01-02 1.879182
2000-01-03 1.303660
2000-01-04 1.884801
2000-01-05 1.194699
2000-01-06 1.925393
2000-01-07 0.565208
2000-01-08 0.564129
2000-01-09 2.048458
2000-01-10 2.065750
Freq: D, Name: A, dtype: float64
Bir DataFrame'in Birden Çok Sütununa Toplama Uygulama
import pandas as pd
import numpy as np
df = pd.DataFrame(np.random.randn(10, 4),
index = pd.date_range('1/1/2000', periods=10),
columns = ['A', 'B', 'C', 'D'])
print df
r = df.rolling(window=3,min_periods=1)
print r[['A','B']].aggregate(np.sum)
Onun output aşağıdaki gibidir -
A B C D
2000-01-01 1.088512 -0.650942 -2.547450 -0.566858
2000-01-02 1.879182 -1.038796 -3.215581 -0.299575
2000-01-03 1.303660 -2.003821 -3.155154 -2.479355
2000-01-04 1.884801 -0.141119 -0.862400 -0.483331
2000-01-05 1.194699 0.010551 0.297378 -1.216695
2000-01-06 1.925393 1.968551 -0.968183 1.284044
2000-01-07 0.565208 0.032738 -2.125934 0.482797
2000-01-08 0.564129 -0.759118 -2.454374 -0.325454
2000-01-09 2.048458 -1.820537 -0.535232 -1.212381
2000-01-10 2.065750 0.383357 1.541496 -3.201469
A B
2000-01-01 1.088512 -0.650942
2000-01-02 1.879182 -1.038796
2000-01-03 1.303660 -2.003821
2000-01-04 1.884801 -0.141119
2000-01-05 1.194699 0.010551
2000-01-06 1.925393 1.968551
2000-01-07 0.565208 0.032738
2000-01-08 0.564129 -0.759118
2000-01-09 2.048458 -1.820537
2000-01-10 2.065750 0.383357
Bir DataFrame'in Tek Bir Sütununa Birden Çok İşlev Uygulama
import pandas as pd
import numpy as np
df = pd.DataFrame(np.random.randn(10, 4),
index = pd.date_range('1/1/2000', periods=10),
columns = ['A', 'B', 'C', 'D'])
print df
r = df.rolling(window=3,min_periods=1)
print r['A'].aggregate([np.sum,np.mean])
Onun output aşağıdaki gibidir -
A B C D
2000-01-01 1.088512 -0.650942 -2.547450 -0.566858
2000-01-02 1.879182 -1.038796 -3.215581 -0.299575
2000-01-03 1.303660 -2.003821 -3.155154 -2.479355
2000-01-04 1.884801 -0.141119 -0.862400 -0.483331
2000-01-05 1.194699 0.010551 0.297378 -1.216695
2000-01-06 1.925393 1.968551 -0.968183 1.284044
2000-01-07 0.565208 0.032738 -2.125934 0.482797
2000-01-08 0.564129 -0.759118 -2.454374 -0.325454
2000-01-09 2.048458 -1.820537 -0.535232 -1.212381
2000-01-10 2.065750 0.383357 1.541496 -3.201469
sum mean
2000-01-01 1.088512 1.088512
2000-01-02 1.879182 0.939591
2000-01-03 1.303660 0.434553
2000-01-04 1.884801 0.628267
2000-01-05 1.194699 0.398233
2000-01-06 1.925393 0.641798
2000-01-07 0.565208 0.188403
2000-01-08 0.564129 0.188043
2000-01-09 2.048458 0.682819
2000-01-10 2.065750 0.688583
Bir DataFrame'in Birden Çok Sütununa Birden Çok İşlev Uygulama
import pandas as pd
import numpy as np
df = pd.DataFrame(np.random.randn(10, 4),
index = pd.date_range('1/1/2000', periods=10),
columns = ['A', 'B', 'C', 'D'])
print df
r = df.rolling(window=3,min_periods=1)
print r[['A','B']].aggregate([np.sum,np.mean])
Onun output aşağıdaki gibidir -
A B C D
2000-01-01 1.088512 -0.650942 -2.547450 -0.566858
2000-01-02 1.879182 -1.038796 -3.215581 -0.299575
2000-01-03 1.303660 -2.003821 -3.155154 -2.479355
2000-01-04 1.884801 -0.141119 -0.862400 -0.483331
2000-01-05 1.194699 0.010551 0.297378 -1.216695
2000-01-06 1.925393 1.968551 -0.968183 1.284044
2000-01-07 0.565208 0.032738 -2.125934 0.482797
2000-01-08 0.564129 -0.759118 -2.454374 -0.325454
2000-01-09 2.048458 -1.820537 -0.535232 -1.212381
2000-01-10 2.065750 0.383357 1.541496 -3.201469
A B
sum mean sum mean
2000-01-01 1.088512 1.088512 -0.650942 -0.650942
2000-01-02 1.879182 0.939591 -1.038796 -0.519398
2000-01-03 1.303660 0.434553 -2.003821 -0.667940
2000-01-04 1.884801 0.628267 -0.141119 -0.047040
2000-01-05 1.194699 0.398233 0.010551 0.003517
2000-01-06 1.925393 0.641798 1.968551 0.656184
2000-01-07 0.565208 0.188403 0.032738 0.010913
2000-01-08 0.564129 0.188043 -0.759118 -0.253039
2000-01-09 2.048458 0.682819 -1.820537 -0.606846
2000-01-10 2.065750 0.688583 0.383357 0.127786
Veri Çerçevesinin Farklı Sütunlarına Farklı İşlevler Uygulama
import pandas as pd
import numpy as np
df = pd.DataFrame(np.random.randn(3, 4),
index = pd.date_range('1/1/2000', periods=3),
columns = ['A', 'B', 'C', 'D'])
print df
r = df.rolling(window=3,min_periods=1)
print r.aggregate({'A' : np.sum,'B' : np.mean})
Onun output aşağıdaki gibidir -
A B C D
2000-01-01 -1.575749 -1.018105 0.317797 0.545081
2000-01-02 -0.164917 -1.361068 0.258240 1.113091
2000-01-03 1.258111 1.037941 -0.047487 0.867371
A B
2000-01-01 -1.575749 -1.018105
2000-01-02 -1.740666 -1.189587
2000-01-03 -0.482555 -0.447078
Eksik veriler, gerçek hayat senaryolarında her zaman bir sorundur. Makine öğrenimi ve veri madenciliği gibi alanlar, eksik değerlerin neden olduğu düşük kaliteli veri nedeniyle model tahminlerinin doğruluğunda ciddi sorunlarla karşı karşıyadır. Bu alanlarda, eksik değer işleme, modellerini daha doğru ve geçerli kılmak için ana odak noktasıdır.
Veriler Ne Zaman ve Neden Kaçırılır?
Bir ürün için çevrimiçi bir anket düşünelim. Çoğu zaman insanlar kendileriyle ilgili tüm bilgileri paylaşmazlar. Çok az kişi deneyimlerini paylaşıyor, ancak ürünü ne kadar süre kullandıklarını bilmiyor; çok az kişi ürünü ne kadar süreyle kullandıklarını, deneyimlerini paylaşır ancak iletişim bilgilerini paylaşmaz. Bu nedenle, bir şekilde veya başka bir şekilde verilerin bir kısmı her zaman eksiktir ve bu gerçek zamanlı olarak çok yaygındır.
Şimdi Pandaları kullanarak eksik değerleri (örneğin NA veya NaN) nasıl ele alabileceğimize bakalım.
# import the pandas library
import pandas as pd
import numpy as np
df = pd.DataFrame(np.random.randn(5, 3), index=['a', 'c', 'e', 'f',
'h'],columns=['one', 'two', 'three'])
df = df.reindex(['a', 'b', 'c', 'd', 'e', 'f', 'g', 'h'])
print df
Onun output aşağıdaki gibidir -
one two three
a 0.077988 0.476149 0.965836
b NaN NaN NaN
c -0.390208 -0.551605 -2.301950
d NaN NaN NaN
e -2.000303 -0.788201 1.510072
f -0.930230 -0.670473 1.146615
g NaN NaN NaN
h 0.085100 0.532791 0.887415
Yeniden indekslemeyi kullanarak, eksik değerlere sahip bir DataFrame oluşturduk. Çıktıda,NaN anlamına geliyor Not a Number.
Eksik Değerleri Kontrol Edin
Eksik değerlerin tespit edilmesini kolaylaştırmak için (ve farklı dizi tipleri arasında) Pandalar, isnull() ve notnull() Series ve DataFrame nesnelerindeki yöntemler olan işlevler -
örnek 1
import pandas as pd
import numpy as np
df = pd.DataFrame(np.random.randn(5, 3), index=['a', 'c', 'e', 'f',
'h'],columns=['one', 'two', 'three'])
df = df.reindex(['a', 'b', 'c', 'd', 'e', 'f', 'g', 'h'])
print df['one'].isnull()
Onun output aşağıdaki gibidir -
a False
b True
c False
d True
e False
f False
g True
h False
Name: one, dtype: bool
Örnek 2
import pandas as pd
import numpy as np
df = pd.DataFrame(np.random.randn(5, 3), index=['a', 'c', 'e', 'f',
'h'],columns=['one', 'two', 'three'])
df = df.reindex(['a', 'b', 'c', 'd', 'e', 'f', 'g', 'h'])
print df['one'].notnull()
Onun output aşağıdaki gibidir -
a True
b False
c True
d False
e True
f True
g False
h True
Name: one, dtype: bool
Eksik Verilerle Hesaplamalar
- Veriler toplanırken NA, Sıfır olarak değerlendirilecektir.
- Verilerin tümü NA ise, sonuç NA olacaktır
örnek 1
import pandas as pd
import numpy as np
df = pd.DataFrame(np.random.randn(5, 3), index=['a', 'c', 'e', 'f',
'h'],columns=['one', 'two', 'three'])
df = df.reindex(['a', 'b', 'c', 'd', 'e', 'f', 'g', 'h'])
print df['one'].sum()
Onun output aşağıdaki gibidir -
2.02357685917
Örnek 2
import pandas as pd
import numpy as np
df = pd.DataFrame(index=[0,1,2,3,4,5],columns=['one','two'])
print df['one'].sum()
Onun output aşağıdaki gibidir -
nan
Eksik Verileri Temizleme / Doldurma
Pandalar, eksik değerleri temizlemek için çeşitli yöntemler sunar. Fillna işlevi, aşağıdaki bölümlerde açıkladığımız gibi, NA değerlerini boş olmayan verilerle birkaç şekilde "doldurabilir".
NaN'yi Skaler Bir Değer ile Değiştirin
Aşağıdaki program "NaN" yi nasıl "0" ile değiştirebileceğinizi göstermektedir.
import pandas as pd
import numpy as np
df = pd.DataFrame(np.random.randn(3, 3), index=['a', 'c', 'e'],columns=['one',
'two', 'three'])
df = df.reindex(['a', 'b', 'c'])
print df
print ("NaN replaced with '0':")
print df.fillna(0)
Onun output aşağıdaki gibidir -
one two three
a -0.576991 -0.741695 0.553172
b NaN NaN NaN
c 0.744328 -1.735166 1.749580
NaN replaced with '0':
one two three
a -0.576991 -0.741695 0.553172
b 0.000000 0.000000 0.000000
c 0.744328 -1.735166 1.749580
Burada sıfır değeri ile dolduruyoruz; bunun yerine başka herhangi bir değerle de doldurabiliriz.
NA İleri ve Geri Doldurun
Yeniden İndeksleme Bölümünde tartışılan doldurma kavramlarını kullanarak eksik değerleri dolduracağız.
Sr.No | Yöntem ve Eylem |
---|---|
1 | pad/fill Doldurma yöntemleri İleri |
2 | bfill/backfill Yöntemleri Geriye Doldur |
örnek 1
import pandas as pd
import numpy as np
df = pd.DataFrame(np.random.randn(5, 3), index=['a', 'c', 'e', 'f',
'h'],columns=['one', 'two', 'three'])
df = df.reindex(['a', 'b', 'c', 'd', 'e', 'f', 'g', 'h'])
print df.fillna(method='pad')
Onun output aşağıdaki gibidir -
one two three
a 0.077988 0.476149 0.965836
b 0.077988 0.476149 0.965836
c -0.390208 -0.551605 -2.301950
d -0.390208 -0.551605 -2.301950
e -2.000303 -0.788201 1.510072
f -0.930230 -0.670473 1.146615
g -0.930230 -0.670473 1.146615
h 0.085100 0.532791 0.887415
Örnek 2
import pandas as pd
import numpy as np
df = pd.DataFrame(np.random.randn(5, 3), index=['a', 'c', 'e', 'f',
'h'],columns=['one', 'two', 'three'])
df = df.reindex(['a', 'b', 'c', 'd', 'e', 'f', 'g', 'h'])
print df.fillna(method='backfill')
Onun output aşağıdaki gibidir -
one two three
a 0.077988 0.476149 0.965836
b -0.390208 -0.551605 -2.301950
c -0.390208 -0.551605 -2.301950
d -2.000303 -0.788201 1.510072
e -2.000303 -0.788201 1.510072
f -0.930230 -0.670473 1.146615
g 0.085100 0.532791 0.887415
h 0.085100 0.532791 0.887415
Eksik Değerleri Bırak
Eksik değerleri hariç tutmak istiyorsanız, o zaman dropna ile birlikte işlev axisargüman. Varsayılan olarak, axis = 0, yani satır boyunca, yani bir satırdaki herhangi bir değer NA ise tüm satır hariç tutulur.
örnek 1
import pandas as pd
import numpy as np
df = pd.DataFrame(np.random.randn(5, 3), index=['a', 'c', 'e', 'f',
'h'],columns=['one', 'two', 'three'])
df = df.reindex(['a', 'b', 'c', 'd', 'e', 'f', 'g', 'h'])
print df.dropna()
Onun output aşağıdaki gibidir -
one two three
a 0.077988 0.476149 0.965836
c -0.390208 -0.551605 -2.301950
e -2.000303 -0.788201 1.510072
f -0.930230 -0.670473 1.146615
h 0.085100 0.532791 0.887415
Örnek 2
import pandas as pd
import numpy as np
df = pd.DataFrame(np.random.randn(5, 3), index=['a', 'c', 'e', 'f',
'h'],columns=['one', 'two', 'three'])
df = df.reindex(['a', 'b', 'c', 'd', 'e', 'f', 'g', 'h'])
print df.dropna(axis=1)
Onun output aşağıdaki gibidir -
Empty DataFrame
Columns: [ ]
Index: [a, b, c, d, e, f, g, h]
Eksik (veya) Genel Değerleri Değiştirin
Çoğu zaman, genel bir değeri belirli bir değerle değiştirmemiz gerekir. Bunu değiştirme yöntemini uygulayarak başarabiliriz.
NA'yı skaler bir değerle değiştirmek, fillna() işlevi.
örnek 1
import pandas as pd
import numpy as np
df = pd.DataFrame({'one':[10,20,30,40,50,2000], 'two':[1000,0,30,40,50,60]})
print df.replace({1000:10,2000:60})
Onun output aşağıdaki gibidir -
one two
0 10 10
1 20 0
2 30 30
3 40 40
4 50 50
5 60 60
Örnek 2
import pandas as pd
import numpy as np
df = pd.DataFrame({'one':[10,20,30,40,50,2000], 'two':[1000,0,30,40,50,60]})
print df.replace({1000:10,2000:60})
Onun output aşağıdaki gibidir -
one two
0 10 10
1 20 0
2 30 30
3 40 40
4 50 50
5 60 60
Hiç groupbyişlem, orijinal nesne üzerinde aşağıdaki işlemlerden birini içerir. Onlar -
Splitting nesne
Applying bir işlev
Combining sonuçlar
Çoğu durumda, verileri kümelere ayırırız ve her alt kümeye bazı işlevler uygularız. Uygulama işlevinde aşağıdaki işlemleri gerçekleştirebiliriz -
Aggregation - bir özet istatistiği hesaplama
Transformation - gruba özgü bazı işlemler gerçekleştirin
Filtration - bazı koşullara sahip verilerin atılması
Şimdi bir DataFrame nesnesi oluşturalım ve üzerinde tüm işlemleri gerçekleştirelim -
#import the pandas library
import pandas as pd
ipl_data = {'Team': ['Riders', 'Riders', 'Devils', 'Devils', 'Kings',
'kings', 'Kings', 'Kings', 'Riders', 'Royals', 'Royals', 'Riders'],
'Rank': [1, 2, 2, 3, 3,4 ,1 ,1,2 , 4,1,2],
'Year': [2014,2015,2014,2015,2014,2015,2016,2017,2016,2014,2015,2017],
'Points':[876,789,863,673,741,812,756,788,694,701,804,690]}
df = pd.DataFrame(ipl_data)
print df
Onun output aşağıdaki gibidir -
Points Rank Team Year
0 876 1 Riders 2014
1 789 2 Riders 2015
2 863 2 Devils 2014
3 673 3 Devils 2015
4 741 3 Kings 2014
5 812 4 kings 2015
6 756 1 Kings 2016
7 788 1 Kings 2017
8 694 2 Riders 2016
9 701 4 Royals 2014
10 804 1 Royals 2015
11 690 2 Riders 2017
Verileri Gruplara Böl
Pandalar nesnesi, nesnelerinden herhangi birine bölünebilir. Bir nesneyi bölmenin birden çok yolu vardır.
- obj.groupby('key')
- obj.groupby(['key1','key2'])
- obj.groupby(key,axis=1)
Şimdi, gruplama nesnelerinin DataFrame nesnesine nasıl uygulanabileceğini görelim
Misal
# import the pandas library
import pandas as pd
ipl_data = {'Team': ['Riders', 'Riders', 'Devils', 'Devils', 'Kings',
'kings', 'Kings', 'Kings', 'Riders', 'Royals', 'Royals', 'Riders'],
'Rank': [1, 2, 2, 3, 3,4 ,1 ,1,2 , 4,1,2],
'Year': [2014,2015,2014,2015,2014,2015,2016,2017,2016,2014,2015,2017],
'Points':[876,789,863,673,741,812,756,788,694,701,804,690]}
df = pd.DataFrame(ipl_data)
print df.groupby('Team')
Onun output aşağıdaki gibidir -
<pandas.core.groupby.DataFrameGroupBy object at 0x7fa46a977e50>
Grupları Görüntüle
# import the pandas library
import pandas as pd
ipl_data = {'Team': ['Riders', 'Riders', 'Devils', 'Devils', 'Kings',
'kings', 'Kings', 'Kings', 'Riders', 'Royals', 'Royals', 'Riders'],
'Rank': [1, 2, 2, 3, 3,4 ,1 ,1,2 , 4,1,2],
'Year': [2014,2015,2014,2015,2014,2015,2016,2017,2016,2014,2015,2017],
'Points':[876,789,863,673,741,812,756,788,694,701,804,690]}
df = pd.DataFrame(ipl_data)
print df.groupby('Team').groups
Onun output aşağıdaki gibidir -
{'Kings': Int64Index([4, 6, 7], dtype='int64'),
'Devils': Int64Index([2, 3], dtype='int64'),
'Riders': Int64Index([0, 1, 8, 11], dtype='int64'),
'Royals': Int64Index([9, 10], dtype='int64'),
'kings' : Int64Index([5], dtype='int64')}
Misal
Group by birden çok sütunlu -
# import the pandas library
import pandas as pd
ipl_data = {'Team': ['Riders', 'Riders', 'Devils', 'Devils', 'Kings',
'kings', 'Kings', 'Kings', 'Riders', 'Royals', 'Royals', 'Riders'],
'Rank': [1, 2, 2, 3, 3,4 ,1 ,1,2 , 4,1,2],
'Year': [2014,2015,2014,2015,2014,2015,2016,2017,2016,2014,2015,2017],
'Points':[876,789,863,673,741,812,756,788,694,701,804,690]}
df = pd.DataFrame(ipl_data)
print df.groupby(['Team','Year']).groups
Onun output aşağıdaki gibidir -
{('Kings', 2014): Int64Index([4], dtype='int64'),
('Royals', 2014): Int64Index([9], dtype='int64'),
('Riders', 2014): Int64Index([0], dtype='int64'),
('Riders', 2015): Int64Index([1], dtype='int64'),
('Kings', 2016): Int64Index([6], dtype='int64'),
('Riders', 2016): Int64Index([8], dtype='int64'),
('Riders', 2017): Int64Index([11], dtype='int64'),
('Devils', 2014): Int64Index([2], dtype='int64'),
('Devils', 2015): Int64Index([3], dtype='int64'),
('kings', 2015): Int64Index([5], dtype='int64'),
('Royals', 2015): Int64Index([10], dtype='int64'),
('Kings', 2017): Int64Index([7], dtype='int64')}
Gruplar arasında yineleme
İle groupby elimizdeki nesneyi, itertools.obj'ye benzer nesneyi yineleyebiliriz.
# import the pandas library
import pandas as pd
ipl_data = {'Team': ['Riders', 'Riders', 'Devils', 'Devils', 'Kings',
'kings', 'Kings', 'Kings', 'Riders', 'Royals', 'Royals', 'Riders'],
'Rank': [1, 2, 2, 3, 3,4 ,1 ,1,2 , 4,1,2],
'Year': [2014,2015,2014,2015,2014,2015,2016,2017,2016,2014,2015,2017],
'Points':[876,789,863,673,741,812,756,788,694,701,804,690]}
df = pd.DataFrame(ipl_data)
grouped = df.groupby('Year')
for name,group in grouped:
print name
print group
Onun output aşağıdaki gibidir -
2014
Points Rank Team Year
0 876 1 Riders 2014
2 863 2 Devils 2014
4 741 3 Kings 2014
9 701 4 Royals 2014
2015
Points Rank Team Year
1 789 2 Riders 2015
3 673 3 Devils 2015
5 812 4 kings 2015
10 804 1 Royals 2015
2016
Points Rank Team Year
6 756 1 Kings 2016
8 694 2 Riders 2016
2017
Points Rank Team Year
7 788 1 Kings 2017
11 690 2 Riders 2017
Varsayılan olarak, groupby nesne, grup adıyla aynı etiket adına sahip.
Bir Grup Seçin
Kullanmak get_group() yöntemle tek bir grup seçebiliriz.
# import the pandas library
import pandas as pd
ipl_data = {'Team': ['Riders', 'Riders', 'Devils', 'Devils', 'Kings',
'kings', 'Kings', 'Kings', 'Riders', 'Royals', 'Royals', 'Riders'],
'Rank': [1, 2, 2, 3, 3,4 ,1 ,1,2 , 4,1,2],
'Year': [2014,2015,2014,2015,2014,2015,2016,2017,2016,2014,2015,2017],
'Points':[876,789,863,673,741,812,756,788,694,701,804,690]}
df = pd.DataFrame(ipl_data)
grouped = df.groupby('Year')
print grouped.get_group(2014)
Onun output aşağıdaki gibidir -
Points Rank Team Year
0 876 1 Riders 2014
2 863 2 Devils 2014
4 741 3 Kings 2014
9 701 4 Royals 2014
Toplamalar
Birleştirilmiş bir işlev, her grup için tek bir toplu değer döndürür. Bir keregroup by nesne oluşturulursa, gruplanmış veriler üzerinde birkaç toplama işlemi gerçekleştirilebilir.
Açık olanı, toplu veya eşdeğeri yoluyla kümelemedir agg yöntem -
# import the pandas library
import pandas as pd
import numpy as np
ipl_data = {'Team': ['Riders', 'Riders', 'Devils', 'Devils', 'Kings',
'kings', 'Kings', 'Kings', 'Riders', 'Royals', 'Royals', 'Riders'],
'Rank': [1, 2, 2, 3, 3,4 ,1 ,1,2 , 4,1,2],
'Year': [2014,2015,2014,2015,2014,2015,2016,2017,2016,2014,2015,2017],
'Points':[876,789,863,673,741,812,756,788,694,701,804,690]}
df = pd.DataFrame(ipl_data)
grouped = df.groupby('Year')
print grouped['Points'].agg(np.mean)
Onun output aşağıdaki gibidir -
Year
2014 795.25
2015 769.50
2016 725.00
2017 739.00
Name: Points, dtype: float64
Her grubun boyutunu görmenin başka bir yolu da size () işlevini uygulamaktır -
import pandas as pd
import numpy as np
ipl_data = {'Team': ['Riders', 'Riders', 'Devils', 'Devils', 'Kings',
'kings', 'Kings', 'Kings', 'Riders', 'Royals', 'Royals', 'Riders'],
'Rank': [1, 2, 2, 3, 3,4 ,1 ,1,2 , 4,1,2],
'Year': [2014,2015,2014,2015,2014,2015,2016,2017,2016,2014,2015,2017],
'Points':[876,789,863,673,741,812,756,788,694,701,804,690]}
df = pd.DataFrame(ipl_data)
Attribute Access in Python Pandas
grouped = df.groupby('Team')
print grouped.agg(np.size)
Onun output aşağıdaki gibidir -
Points Rank Year
Team
Devils 2 2 2
Kings 3 3 3
Riders 4 4 4
Royals 2 2 2
kings 1 1 1
Aynı Anda Birden Çok Toplama İşlevi Uygulama
Gruplandırılmış Seriler ile ayrıca bir list veya dict of functions DataFrame ile toplama yapmak ve çıktı olarak DataFrame oluşturmak için -
# import the pandas library
import pandas as pd
import numpy as np
ipl_data = {'Team': ['Riders', 'Riders', 'Devils', 'Devils', 'Kings',
'kings', 'Kings', 'Kings', 'Riders', 'Royals', 'Royals', 'Riders'],
'Rank': [1, 2, 2, 3, 3,4 ,1 ,1,2 , 4,1,2],
'Year': [2014,2015,2014,2015,2014,2015,2016,2017,2016,2014,2015,2017],
'Points':[876,789,863,673,741,812,756,788,694,701,804,690]}
df = pd.DataFrame(ipl_data)
grouped = df.groupby('Team')
print grouped['Points'].agg([np.sum, np.mean, np.std])
Onun output aşağıdaki gibidir -
Team sum mean std
Devils 1536 768.000000 134.350288
Kings 2285 761.666667 24.006943
Riders 3049 762.250000 88.567771
Royals 1505 752.500000 72.831998
kings 812 812.000000 NaN
Dönüşümler
Bir grup veya bir sütundaki dönüştürme, gruplanmakta olanla aynı boyutta dizine alınmış bir nesne döndürür. Bu nedenle, dönüşüm bir grup öbeğiyle aynı boyutta bir sonuç döndürmelidir.
# import the pandas library
import pandas as pd
import numpy as np
ipl_data = {'Team': ['Riders', 'Riders', 'Devils', 'Devils', 'Kings',
'kings', 'Kings', 'Kings', 'Riders', 'Royals', 'Royals', 'Riders'],
'Rank': [1, 2, 2, 3, 3,4 ,1 ,1,2 , 4,1,2],
'Year': [2014,2015,2014,2015,2014,2015,2016,2017,2016,2014,2015,2017],
'Points':[876,789,863,673,741,812,756,788,694,701,804,690]}
df = pd.DataFrame(ipl_data)
grouped = df.groupby('Team')
score = lambda x: (x - x.mean()) / x.std()*10
print grouped.transform(score)
Onun output aşağıdaki gibidir -
Points Rank Year
0 12.843272 -15.000000 -11.618950
1 3.020286 5.000000 -3.872983
2 7.071068 -7.071068 -7.071068
3 -7.071068 7.071068 7.071068
4 -8.608621 11.547005 -10.910895
5 NaN NaN NaN
6 -2.360428 -5.773503 2.182179
7 10.969049 -5.773503 8.728716
8 -7.705963 5.000000 3.872983
9 -7.071068 7.071068 -7.071068
10 7.071068 -7.071068 7.071068
11 -8.157595 5.000000 11.618950
Filtrasyon
Filtreleme, verileri tanımlanmış bir kritere göre filtreler ve verilerin alt kümesini döndürür. filter() işlevi verileri filtrelemek için kullanılır.
import pandas as pd
import numpy as np
ipl_data = {'Team': ['Riders', 'Riders', 'Devils', 'Devils', 'Kings',
'kings', 'Kings', 'Kings', 'Riders', 'Royals', 'Royals', 'Riders'],
'Rank': [1, 2, 2, 3, 3,4 ,1 ,1,2 , 4,1,2],
'Year': [2014,2015,2014,2015,2014,2015,2016,2017,2016,2014,2015,2017],
'Points':[876,789,863,673,741,812,756,788,694,701,804,690]}
df = pd.DataFrame(ipl_data)
print df.groupby('Team').filter(lambda x: len(x) >= 3)
Onun output aşağıdaki gibidir -
Points Rank Team Year
0 876 1 Riders 2014
1 789 2 Riders 2015
4 741 3 Kings 2014
6 756 1 Kings 2016
7 788 1 Kings 2017
8 694 2 Riders 2016
11 690 2 Riders 2017
Yukarıdaki filtre koşulunda, IPL'ye üç veya daha fazla katılmış olan takımların iade edilmesini istiyoruz.
Pandalar, tam özellikli, yüksek performanslı bellek içi birleştirme işlemlerine deyimsel olarak SQL gibi ilişkisel veritabanlarına çok benzer.
Pandalar tek bir işlev sağlar, merge, DataFrame nesneleri arasındaki tüm standart veritabanı birleştirme işlemleri için giriş noktası olarak -
pd.merge(left, right, how='inner', on=None, left_on=None, right_on=None,
left_index=False, right_index=False, sort=True)
Burada aşağıdaki parametreleri kullandık -
left - Bir DataFrame nesnesi.
right - Başka bir DataFrame nesnesi.
on- Katılmak için sütunlar (isimler). Hem sol hem de sağ DataFrame nesnelerinde bulunmalıdır.
left_on- Anahtar olarak kullanmak için soldaki DataFrame'den sütunlar. DataFrame'in uzunluğuna eşit uzunlukta sütun adları veya diziler olabilir.
right_on- Anahtar olarak kullanmak için sağ DataFrame'den sütunlar. DataFrame'in uzunluğuna eşit uzunlukta sütun adları veya diziler olabilir.
left_index - eğer True,sol DataFrame'deki dizini (satır etiketleri) birleştirme anahtarları olarak kullanın. MultiIndex (hiyerarşik) içeren bir DataFrame olması durumunda, düzeylerin sayısı, sağ DataFrame'deki birleştirme anahtarlarının sayısıyla eşleşmelidir.
right_index - Aynı kullanım left_index Doğru DataFrame için.
how- "Sol", "sağ", "dış", "iç" ten biri. İç varsayılan. Her yöntem aşağıda açıklanmıştır.
sort- Sonuç DataFrame'i birleştirme anahtarlarına göre sözlüksel sırayla sıralayın. Varsayılan olarak True, False olarak ayarlamak çoğu durumda performansı önemli ölçüde artıracaktır.
Şimdi iki farklı DataFrame oluşturalım ve üzerinde birleştirme işlemlerini gerçekleştirelim.
# import the pandas library
import pandas as pd
left = pd.DataFrame({
'id':[1,2,3,4,5],
'Name': ['Alex', 'Amy', 'Allen', 'Alice', 'Ayoung'],
'subject_id':['sub1','sub2','sub4','sub6','sub5']})
right = pd.DataFrame(
{'id':[1,2,3,4,5],
'Name': ['Billy', 'Brian', 'Bran', 'Bryce', 'Betty'],
'subject_id':['sub2','sub4','sub3','sub6','sub5']})
print left
print right
Onun output aşağıdaki gibidir -
Name id subject_id
0 Alex 1 sub1
1 Amy 2 sub2
2 Allen 3 sub4
3 Alice 4 sub6
4 Ayoung 5 sub5
Name id subject_id
0 Billy 1 sub2
1 Brian 2 sub4
2 Bran 3 sub3
3 Bryce 4 sub6
4 Betty 5 sub5
Bir Anahtar Üzerinde İki Veri Çerçevesini Birleştirme
import pandas as pd
left = pd.DataFrame({
'id':[1,2,3,4,5],
'Name': ['Alex', 'Amy', 'Allen', 'Alice', 'Ayoung'],
'subject_id':['sub1','sub2','sub4','sub6','sub5']})
right = pd.DataFrame({
'id':[1,2,3,4,5],
'Name': ['Billy', 'Brian', 'Bran', 'Bryce', 'Betty'],
'subject_id':['sub2','sub4','sub3','sub6','sub5']})
print pd.merge(left,right,on='id')
Onun output aşağıdaki gibidir -
Name_x id subject_id_x Name_y subject_id_y
0 Alex 1 sub1 Billy sub2
1 Amy 2 sub2 Brian sub4
2 Allen 3 sub4 Bran sub3
3 Alice 4 sub6 Bryce sub6
4 Ayoung 5 sub5 Betty sub5
Birden Çok Anahtar Üzerinde İki Veri Çerçevesini Birleştirme
import pandas as pd
left = pd.DataFrame({
'id':[1,2,3,4,5],
'Name': ['Alex', 'Amy', 'Allen', 'Alice', 'Ayoung'],
'subject_id':['sub1','sub2','sub4','sub6','sub5']})
right = pd.DataFrame({
'id':[1,2,3,4,5],
'Name': ['Billy', 'Brian', 'Bran', 'Bryce', 'Betty'],
'subject_id':['sub2','sub4','sub3','sub6','sub5']})
print pd.merge(left,right,on=['id','subject_id'])
Onun output aşağıdaki gibidir -
Name_x id subject_id Name_y
0 Alice 4 sub6 Bryce
1 Ayoung 5 sub5 Betty
'Nasıl' Argümanını Kullanarak Birleştirme
howBirleştirme argümanı, ortaya çıkan tabloya hangi anahtarların dahil edileceğinin nasıl belirleneceğini belirtir. Sol veya sağ tablolarda bir tuş kombinasyonu görünmüyorsa, birleştirilmiş tablodaki değerler NA olacaktır.
İşte bir özeti how seçenekler ve bunların SQL eşdeğer isimleri -
Birleştirme Yöntemi | SQL Eşdeğeri | Açıklama |
---|---|---|
ayrıldı | SOL DIŞ KATILMA | Sol nesnedeki tuşları kullanın |
sağ | RIGHT OUTER JOIN | Anahtarları doğru nesneden kullanın |
dış | TAM DIŞ KATILIM | Anahtarların birleşimini kullan |
iç | İÇ BİRLEŞİM | Anahtarların kesişimini kullanın |
Sol yönden katılım
import pandas as pd
left = pd.DataFrame({
'id':[1,2,3,4,5],
'Name': ['Alex', 'Amy', 'Allen', 'Alice', 'Ayoung'],
'subject_id':['sub1','sub2','sub4','sub6','sub5']})
right = pd.DataFrame({
'id':[1,2,3,4,5],
'Name': ['Billy', 'Brian', 'Bran', 'Bryce', 'Betty'],
'subject_id':['sub2','sub4','sub3','sub6','sub5']})
print pd.merge(left, right, on='subject_id', how='left')
Onun output aşağıdaki gibidir -
Name_x id_x subject_id Name_y id_y
0 Alex 1 sub1 NaN NaN
1 Amy 2 sub2 Billy 1.0
2 Allen 3 sub4 Brian 2.0
3 Alice 4 sub6 Bryce 4.0
4 Ayoung 5 sub5 Betty 5.0
Sağ Katıl
import pandas as pd
left = pd.DataFrame({
'id':[1,2,3,4,5],
'Name': ['Alex', 'Amy', 'Allen', 'Alice', 'Ayoung'],
'subject_id':['sub1','sub2','sub4','sub6','sub5']})
right = pd.DataFrame({
'id':[1,2,3,4,5],
'Name': ['Billy', 'Brian', 'Bran', 'Bryce', 'Betty'],
'subject_id':['sub2','sub4','sub3','sub6','sub5']})
print pd.merge(left, right, on='subject_id', how='right')
Onun output aşağıdaki gibidir -
Name_x id_x subject_id Name_y id_y
0 Amy 2.0 sub2 Billy 1
1 Allen 3.0 sub4 Brian 2
2 Alice 4.0 sub6 Bryce 4
3 Ayoung 5.0 sub5 Betty 5
4 NaN NaN sub3 Bran 3
Dış Birleştirme
import pandas as pd
left = pd.DataFrame({
'id':[1,2,3,4,5],
'Name': ['Alex', 'Amy', 'Allen', 'Alice', 'Ayoung'],
'subject_id':['sub1','sub2','sub4','sub6','sub5']})
right = pd.DataFrame({
'id':[1,2,3,4,5],
'Name': ['Billy', 'Brian', 'Bran', 'Bryce', 'Betty'],
'subject_id':['sub2','sub4','sub3','sub6','sub5']})
print pd.merge(left, right, how='outer', on='subject_id')
Onun output aşağıdaki gibidir -
Name_x id_x subject_id Name_y id_y
0 Alex 1.0 sub1 NaN NaN
1 Amy 2.0 sub2 Billy 1.0
2 Allen 3.0 sub4 Brian 2.0
3 Alice 4.0 sub6 Bryce 4.0
4 Ayoung 5.0 sub5 Betty 5.0
5 NaN NaN sub3 Bran 3.0
İç birleşim
Birleştirme indekste yapılacaktır. Birleştirme işlemi çağrıldığı nesneyi onurlandırır. Yani,a.join(b) eşit değildir b.join(a).
import pandas as pd
left = pd.DataFrame({
'id':[1,2,3,4,5],
'Name': ['Alex', 'Amy', 'Allen', 'Alice', 'Ayoung'],
'subject_id':['sub1','sub2','sub4','sub6','sub5']})
right = pd.DataFrame({
'id':[1,2,3,4,5],
'Name': ['Billy', 'Brian', 'Bran', 'Bryce', 'Betty'],
'subject_id':['sub2','sub4','sub3','sub6','sub5']})
print pd.merge(left, right, on='subject_id', how='inner')
Onun output aşağıdaki gibidir -
Name_x id_x subject_id Name_y id_y
0 Amy 2 sub2 Billy 1
1 Allen 3 sub4 Brian 2
2 Alice 4 sub6 Bryce 4
3 Ayoung 5 sub5 Betty 5
Pandalar, kolayca bir araya gelmek için çeşitli olanaklar sağlar Series, DataFrame, ve Panel nesneler.
pd.concat(objs,axis=0,join='outer',join_axes=None,
ignore_index=False)
objs - Bu, Series, DataFrame veya Panel nesnelerinin dizisi veya eşlemesidir.
axis - {0, 1, ...}, varsayılan 0. Bu, birlikte birleştirilecek eksendir.
join- {'iç', 'dış'}, varsayılan 'dış'. Diğer eksen (ler) de indeksler nasıl işlenir. Birleşim için dış ve kavşak için iç.
ignore_index- boole, varsayılan False. True ise, birleştirme eksenindeki dizin değerlerini kullanmayın. Ortaya çıkan eksen 0, ..., n - 1 olarak etiketlenecektir.
join_axes- Bu, Dizin nesnelerinin listesidir. İç / dış küme mantığını gerçekleştirmek yerine diğer (n-1) eksenler için kullanılacak özel dizinler.
Nesneleri Birleştirme
concatişlevi, bir eksen boyunca birleştirme işlemlerini gerçekleştirmenin tüm ağır işlerini yapar. Farklı nesneler yaratalım ve birleştirme yapalım.
import pandas as pd
one = pd.DataFrame({
'Name': ['Alex', 'Amy', 'Allen', 'Alice', 'Ayoung'],
'subject_id':['sub1','sub2','sub4','sub6','sub5'],
'Marks_scored':[98,90,87,69,78]},
index=[1,2,3,4,5])
two = pd.DataFrame({
'Name': ['Billy', 'Brian', 'Bran', 'Bryce', 'Betty'],
'subject_id':['sub2','sub4','sub3','sub6','sub5'],
'Marks_scored':[89,80,79,97,88]},
index=[1,2,3,4,5])
print pd.concat([one,two])
Onun output aşağıdaki gibidir -
Marks_scored Name subject_id
1 98 Alex sub1
2 90 Amy sub2
3 87 Allen sub4
4 69 Alice sub6
5 78 Ayoung sub5
1 89 Billy sub2
2 80 Brian sub4
3 79 Bran sub3
4 97 Bryce sub6
5 88 Betty sub5
Belirli anahtarları parçalanmış DataFrame'in her bir parçasıyla ilişkilendirmek istediğimizi varsayalım. Bunu kullanarak yapabilirizkeys argüman -
import pandas as pd
one = pd.DataFrame({
'Name': ['Alex', 'Amy', 'Allen', 'Alice', 'Ayoung'],
'subject_id':['sub1','sub2','sub4','sub6','sub5'],
'Marks_scored':[98,90,87,69,78]},
index=[1,2,3,4,5])
two = pd.DataFrame({
'Name': ['Billy', 'Brian', 'Bran', 'Bryce', 'Betty'],
'subject_id':['sub2','sub4','sub3','sub6','sub5'],
'Marks_scored':[89,80,79,97,88]},
index=[1,2,3,4,5])
print pd.concat([one,two],keys=['x','y'])
Onun output aşağıdaki gibidir -
x 1 98 Alex sub1
2 90 Amy sub2
3 87 Allen sub4
4 69 Alice sub6
5 78 Ayoung sub5
y 1 89 Billy sub2
2 80 Brian sub4
3 79 Bran sub3
4 97 Bryce sub6
5 88 Betty sub5
Ortaya çıkan dizinin kopyalanması; her indeks tekrarlanır.
Ortaya çıkan nesnenin kendi indekslemesini izlemesi gerekiyorsa, ignore_index -e True.
import pandas as pd
one = pd.DataFrame({
'Name': ['Alex', 'Amy', 'Allen', 'Alice', 'Ayoung'],
'subject_id':['sub1','sub2','sub4','sub6','sub5'],
'Marks_scored':[98,90,87,69,78]},
index=[1,2,3,4,5])
two = pd.DataFrame({
'Name': ['Billy', 'Brian', 'Bran', 'Bryce', 'Betty'],
'subject_id':['sub2','sub4','sub3','sub6','sub5'],
'Marks_scored':[89,80,79,97,88]},
index=[1,2,3,4,5])
print pd.concat([one,two],keys=['x','y'],ignore_index=True)
Onun output aşağıdaki gibidir -
Marks_scored Name subject_id
0 98 Alex sub1
1 90 Amy sub2
2 87 Allen sub4
3 69 Alice sub6
4 78 Ayoung sub5
5 89 Billy sub2
6 80 Brian sub4
7 79 Bran sub3
8 97 Bryce sub6
9 88 Betty sub5
İndeks tamamen değişir ve Anahtarlar da geçersiz kılınır.
İki nesnenin eklenmesi gerekiyorsa axis=1, ardından yeni sütunlar eklenecektir.
import pandas as pd
one = pd.DataFrame({
'Name': ['Alex', 'Amy', 'Allen', 'Alice', 'Ayoung'],
'subject_id':['sub1','sub2','sub4','sub6','sub5'],
'Marks_scored':[98,90,87,69,78]},
index=[1,2,3,4,5])
two = pd.DataFrame({
'Name': ['Billy', 'Brian', 'Bran', 'Bryce', 'Betty'],
'subject_id':['sub2','sub4','sub3','sub6','sub5'],
'Marks_scored':[89,80,79,97,88]},
index=[1,2,3,4,5])
print pd.concat([one,two],axis=1)
Onun output aşağıdaki gibidir -
Marks_scored Name subject_id Marks_scored Name subject_id
1 98 Alex sub1 89 Billy sub2
2 90 Amy sub2 80 Brian sub4
3 87 Allen sub4 79 Bran sub3
4 69 Alice sub6 97 Bryce sub6
5 78 Ayoung sub5 88 Betty sub5
Ek Kullanarak Birleştirme
Concat için kullanışlı bir kısayol, Series ve DataFrame üzerindeki örnek ekleme yöntemleridir. Bu yöntemler aslında concat'tan önce geldi. Birlikte bir araya geliyorlaraxis=0yani dizin -
import pandas as pd
one = pd.DataFrame({
'Name': ['Alex', 'Amy', 'Allen', 'Alice', 'Ayoung'],
'subject_id':['sub1','sub2','sub4','sub6','sub5'],
'Marks_scored':[98,90,87,69,78]},
index=[1,2,3,4,5])
two = pd.DataFrame({
'Name': ['Billy', 'Brian', 'Bran', 'Bryce', 'Betty'],
'subject_id':['sub2','sub4','sub3','sub6','sub5'],
'Marks_scored':[89,80,79,97,88]},
index=[1,2,3,4,5])
print one.append(two)
Onun output aşağıdaki gibidir -
Marks_scored Name subject_id
1 98 Alex sub1
2 90 Amy sub2
3 87 Allen sub4
4 69 Alice sub6
5 78 Ayoung sub5
1 89 Billy sub2
2 80 Brian sub4
3 79 Bran sub3
4 97 Bryce sub6
5 88 Betty sub5
append işlevi birden fazla nesneyi de alabilir -
import pandas as pd
one = pd.DataFrame({
'Name': ['Alex', 'Amy', 'Allen', 'Alice', 'Ayoung'],
'subject_id':['sub1','sub2','sub4','sub6','sub5'],
'Marks_scored':[98,90,87,69,78]},
index=[1,2,3,4,5])
two = pd.DataFrame({
'Name': ['Billy', 'Brian', 'Bran', 'Bryce', 'Betty'],
'subject_id':['sub2','sub4','sub3','sub6','sub5'],
'Marks_scored':[89,80,79,97,88]},
index=[1,2,3,4,5])
print one.append([two,one,two])
Onun output aşağıdaki gibidir -
Marks_scored Name subject_id
1 98 Alex sub1
2 90 Amy sub2
3 87 Allen sub4
4 69 Alice sub6
5 78 Ayoung sub5
1 89 Billy sub2
2 80 Brian sub4
3 79 Bran sub3
4 97 Bryce sub6
5 88 Betty sub5
1 98 Alex sub1
2 90 Amy sub2
3 87 Allen sub4
4 69 Alice sub6
5 78 Ayoung sub5
1 89 Billy sub2
2 80 Brian sub4
3 79 Bran sub3
4 97 Bryce sub6
5 88 Betty sub5
Zaman serisi
Pandalar, özellikle finans sektöründe Zaman serisi verileriyle çalışma süresi için sağlam bir araç sağlar. Zaman serisi verileriyle çalışırken sıklıkla aşağıdakilerle karşılaşırız:
- Zaman dizisi oluşturma
- Zaman serisini farklı frekanslara dönüştürün
Pandalar, yukarıdaki görevleri gerçekleştirmek için nispeten kompakt ve bağımsız bir araç seti sağlar.
Geçerli Saati Alın
datetime.now() size güncel tarih ve saati verir.
import pandas as pd
print pd.datetime.now()
Onun output aşağıdaki gibidir -
2017-05-11 06:10:13.393147
Bir TimeStamp oluşturun
Zaman damgalı veriler, değerleri zamandaki noktalarla ilişkilendiren en temel zaman serisi verileri türüdür. Pandaların nesneleri için, zaman içindeki noktaları kullanmak anlamına gelir. Bir örnek alalım -
import pandas as pd
print pd.Timestamp('2017-03-01')
Onun output aşağıdaki gibidir -
2017-03-01 00:00:00
Tamsayı veya float çağ zamanlarını dönüştürmek de mümkündür. Bunlar için varsayılan birim nanosaniyedir (çünkü bunlar Zaman Damgalarının nasıl saklandığıdır). Bununla birlikte, genellikle dönemler, belirlenebilen başka bir birimde saklanır. Başka bir örnek alalım
import pandas as pd
print pd.Timestamp(1587687255,unit='s')
Onun output aşağıdaki gibidir -
2020-04-24 00:14:15
Bir Zaman Aralığı Oluşturun
import pandas as pd
print pd.date_range("11:00", "13:30", freq="30min").time
Onun output aşağıdaki gibidir -
[datetime.time(11, 0) datetime.time(11, 30) datetime.time(12, 0)
datetime.time(12, 30) datetime.time(13, 0) datetime.time(13, 30)]
Zamanın Sıklığını Değiştirin
import pandas as pd
print pd.date_range("11:00", "13:30", freq="H").time
Onun output aşağıdaki gibidir -
[datetime.time(11, 0) datetime.time(12, 0) datetime.time(13, 0)]
Zaman Damgalarına Dönüştürme
Diziler, dönemler veya karışımlar gibi tarih benzeri nesnelerin Seri veya liste benzeri bir nesnesini dönüştürmek için, to_datetimeişlevi. Geçildiğinde, bu bir Seri (aynı indeksle) döndürürken,list-like bir DatetimeIndex. Aşağıdaki örneğe bir göz atın -
import pandas as pd
print pd.to_datetime(pd.Series(['Jul 31, 2009','2010-01-10', None]))
Onun output aşağıdaki gibidir -
0 2009-07-31
1 2010-01-10
2 NaT
dtype: datetime64[ns]
NaT anlamına geliyor Not a Time (NaN'ye eşdeğer)
Başka bir örnek alalım.
import pandas as pd
print pd.to_datetime(['2005/11/23', '2010.12.31', None])
Onun output aşağıdaki gibidir -
DatetimeIndex(['2005-11-23', '2010-12-31', 'NaT'], dtype='datetime64[ns]', freq=None)
Zaman serisini genişleten Tarih işlevleri, finansal veri analizinde önemli bir rol oynar. Tarih verileriyle çalışırken sıklıkla aşağıdakilerle karşılaşırız -
- Tarih dizisi oluşturma
- Tarih serisini farklı frekanslara dönüştürün
Tarih Aralığı Oluşturun
Kullanmak date.range()fonksiyon periyotlarını ve sıklığını belirterek tarih serilerini oluşturabiliriz. Varsayılan olarak, aralığın sıklığı Gün'dür.
import pandas as pd
print pd.date_range('1/1/2011', periods=5)
Onun output aşağıdaki gibidir -
DatetimeIndex(['2011-01-01', '2011-01-02', '2011-01-03', '2011-01-04', '2011-01-05'],
dtype='datetime64[ns]', freq='D')
Tarih Sıklığını Değiştirin
import pandas as pd
print pd.date_range('1/1/2011', periods=5,freq='M')
Onun output aşağıdaki gibidir -
DatetimeIndex(['2011-01-31', '2011-02-28', '2011-03-31', '2011-04-30', '2011-05-31'],
dtype='datetime64[ns]', freq='M')
bdate_range
bdate_range (), iş tarihi aralıkları anlamına gelir. Date_range () 'den farklı olarak, Cumartesi ve Pazar günleri hariçtir.
import pandas as pd
print pd.date_range('1/1/2011', periods=5)
Onun output aşağıdaki gibidir -
DatetimeIndex(['2011-01-01', '2011-01-02', '2011-01-03', '2011-01-04', '2011-01-05'],
dtype='datetime64[ns]', freq='D')
3 Mart'tan sonra tarihin 4 ve 5'i hariç 6 Mart'a atladığını gözlemleyin. Günler için takviminize bakın.
Kullanışlı fonksiyonlar gibi date_range ve bdate_rangeçeşitli sıklık takma adları kullanır. Tarih_aralığı için varsayılan sıklık bir takvim günü iken bdate_range için varsayılan bir iş günüdür.
import pandas as pd
start = pd.datetime(2011, 1, 1)
end = pd.datetime(2011, 1, 5)
print pd.date_range(start, end)
Onun output aşağıdaki gibidir -
DatetimeIndex(['2011-01-01', '2011-01-02', '2011-01-03', '2011-01-04', '2011-01-05'],
dtype='datetime64[ns]', freq='D')
Ofset Takma Adları
Kullanışlı ortak zaman serisi frekanslarına bir dizi dizi takma adı verilmiştir. Bu takma adlara ofset takma adları olarak değineceğiz.
Takma ad | Açıklama | Takma ad | Açıklama |
---|---|---|---|
B | iş günü sıklığı | BQS | iş çeyreği başlangıç sıklığı |
D | takvim günü sıklığı | Bir | yıllık (Yıl) bitiş sıklığı |
W | haftalık sıklık | BA | iş yılı sonu sıklığı |
M | ay sonu sıklığı | BAS | iş yılı başlangıç sıklığı |
SM | yarı ay sonu sıklığı | BH | iş saati sıklığı |
BM | iş ayı sonu sıklığı | H | saatlik frekans |
HANIM | ay başlangıç sıklığı | T, min | dakika frekansı |
SMS | SMS yarı aylık başlangıç sıklığı | S | ikinci frekans |
BMS | iş ayı başlangıç sıklığı | L, ms | milisaniye |
Q | çeyrek sonu sıklığı | U, biz | mikrosaniye |
BQ | iş çeyrek sonu sıklığı | N | nanosaniye |
QS | çeyrek başlangıç frekansı |
Zaman çizelgeleri, örneğin günler, saatler, dakikalar, saniyeler gibi fark birimleriyle ifade edilen zaman farklılıklarıdır. Hem olumlu hem de olumsuz olabilirler.
Aşağıda gösterildiği gibi çeşitli argümanlar kullanarak Timedelta nesneleri oluşturabiliriz -
Dize
Bir dizge değişmezi geçirerek, bir timedelta nesnesi oluşturabiliriz.
import pandas as pd
print pd.Timedelta('2 days 2 hours 15 minutes 30 seconds')
Onun output aşağıdaki gibidir -
2 days 02:15:30
Tamsayı
Birimle bir tamsayı değeri ileterek, bir argüman bir Timedelta nesnesi oluşturur.
import pandas as pd
print pd.Timedelta(6,unit='h')
Onun output aşağıdaki gibidir -
0 days 06:00:00
Veri Ofsetleri
Haftalar, günler, saatler, dakikalar, saniyeler, milisaniyeler, mikrosaniyeler, nanosaniyeler gibi veri ofsetleri de inşaatta kullanılabilir.
import pandas as pd
print pd.Timedelta(days=2)
Onun output aşağıdaki gibidir -
2 days 00:00:00
to_timedelta ()
En üst seviyeyi kullanma pd.to_timedelta, tanınan bir timedelta biçiminden / değerinden bir skaler, dizi, liste veya diziyi Timedelta türüne dönüştürebilirsiniz. Giriş bir Seri ise Seri oluşturur, giriş skaler benzeri ise bir skaler, aksi takdirde bir çıktı verirTimedeltaIndex.
import pandas as pd
print pd.Timedelta(days=2)
Onun output aşağıdaki gibidir -
2 days 00:00:00
Operasyonlar
Series / DataFrames üzerinde çalışabilir ve inşa edebilirsiniz timedelta64[ns] Üzerinde çıkarma işlemleri yoluyla seriler datetime64[ns] Seri veya Zaman Damgaları.
Şimdi Timedelta ve datetime nesneleriyle bir DataFrame oluşturalım ve üzerinde bazı aritmetik işlemler gerçekleştirelim -
import pandas as pd
s = pd.Series(pd.date_range('2012-1-1', periods=3, freq='D'))
td = pd.Series([ pd.Timedelta(days=i) for i in range(3) ])
df = pd.DataFrame(dict(A = s, B = td))
print df
Onun output aşağıdaki gibidir -
A B
0 2012-01-01 0 days
1 2012-01-02 1 days
2 2012-01-03 2 days
Toplama İşlemleri
import pandas as pd
s = pd.Series(pd.date_range('2012-1-1', periods=3, freq='D'))
td = pd.Series([ pd.Timedelta(days=i) for i in range(3) ])
df = pd.DataFrame(dict(A = s, B = td))
df['C']=df['A']+df['B']
print df
Onun output aşağıdaki gibidir -
A B C
0 2012-01-01 0 days 2012-01-01
1 2012-01-02 1 days 2012-01-03
2 2012-01-03 2 days 2012-01-05
Çıkarma İşlemi
import pandas as pd
s = pd.Series(pd.date_range('2012-1-1', periods=3, freq='D'))
td = pd.Series([ pd.Timedelta(days=i) for i in range(3) ])
df = pd.DataFrame(dict(A = s, B = td))
df['C']=df['A']+df['B']
df['D']=df['C']+df['B']
print df
Onun output aşağıdaki gibidir -
A B C D
0 2012-01-01 0 days 2012-01-01 2012-01-01
1 2012-01-02 1 days 2012-01-03 2012-01-04
2 2012-01-03 2 days 2012-01-05 2012-01-07
Genellikle gerçek zamanlı olarak veriler, tekrarlayan metin sütunlarını içerir. Cinsiyet, ülke ve kodlar gibi özellikler her zaman tekrarlanır. Bunlar kategorik veriler için örneklerdir.
Kategorik değişkenler yalnızca sınırlı ve genellikle sabit sayıda olası değer alabilir. Sabit uzunluğun yanı sıra, kategorik veriler bir sıraya sahip olabilir ancak sayısal işlem gerçekleştiremez. Kategorik, Pandalar veri türüdür.
Kategorik veri türü aşağıdaki durumlarda kullanışlıdır -
Yalnızca birkaç farklı değerden oluşan bir dize değişkeni. Böyle bir dizgi değişkenini kategorik bir değişkene dönüştürmek hafızada bir miktar tasarruf sağlayacaktır.
Bir değişkenin sözlü sıralaması mantıksal sıra ile aynı değildir ("bir", "iki", "üç"). Kategoriye dönüştürerek ve kategoriler üzerinde bir sıralama belirleyerek, sıralama ve min / maks, sözcük düzeni yerine mantıksal sıralamayı kullanacaktır.
Diğer python kitaplıklarına, bu sütunun kategorik bir değişken olarak ele alınması gerektiğine dair bir sinyal olarak (örneğin, uygun istatistiksel yöntemler veya çizim türlerini kullanmak için).
Nesne Oluşturma
Kategorik nesne birden çok yolla oluşturulabilir. Farklı yollar aşağıda açıklanmıştır -
kategori
Pandalar nesne oluştururken dtype'ı "kategori" olarak belirterek.
import pandas as pd
s = pd.Series(["a","b","c","a"], dtype="category")
print s
Onun output aşağıdaki gibidir -
0 a
1 b
2 c
3 a
dtype: category
Categories (3, object): [a, b, c]
Seri nesnesine aktarılan öğelerin sayısı dörttür, ancak kategoriler yalnızca üçtür. Aynı şeyi çıktı kategorilerinde de gözlemleyin.
pd. Kategorik
Standart pandalar Categorical yapıcısını kullanarak bir kategori nesnesi oluşturabiliriz.
pandas.Categorical(values, categories, ordered)
Bir örnek alalım -
import pandas as pd
cat = pd.Categorical(['a', 'b', 'c', 'a', 'b', 'c'])
print cat
Onun output aşağıdaki gibidir -
[a, b, c, a, b, c]
Categories (3, object): [a, b, c]
Başka bir örnek verelim -
import pandas as pd
cat = cat=pd.Categorical(['a','b','c','a','b','c','d'], ['c', 'b', 'a'])
print cat
Onun output aşağıdaki gibidir -
[a, b, c, a, b, c, NaN]
Categories (3, object): [c, b, a]
Burada ikinci argüman kategorileri belirtir. Bu nedenle, kategorilerde bulunmayan herhangi bir değer,NaN.
Şimdi, aşağıdaki örneğe bir göz atın -
import pandas as pd
cat = cat=pd.Categorical(['a','b','c','a','b','c','d'], ['c', 'b', 'a'],ordered=True)
print cat
Onun output aşağıdaki gibidir -
[a, b, c, a, b, c, NaN]
Categories (3, object): [c < b < a]
Mantıksal olarak, sipariş şu anlama gelir: a daha büyüktür b ve b daha büyüktür c.
Açıklama
Kullanmak .describe() kategorik verilerdeki komuta benzer bir çıktı elde ederiz. Series veya DataFrame of type dize.
import pandas as pd
import numpy as np
cat = pd.Categorical(["a", "c", "c", np.nan], categories=["b", "a", "c"])
df = pd.DataFrame({"cat":cat, "s":["a", "c", "c", np.nan]})
print df.describe()
print df["cat"].describe()
Onun output aşağıdaki gibidir -
cat s
count 3 3
unique 2 2
top c c
freq 2 2
count 3
unique 2
top c
freq 2
Name: cat, dtype: object
Kategorinin Özelliklerini Alın
obj.cat.categories komutu almak için kullanılır categories of the object.
import pandas as pd
import numpy as np
s = pd.Categorical(["a", "c", "c", np.nan], categories=["b", "a", "c"])
print s.categories
Onun output aşağıdaki gibidir -
Index([u'b', u'a', u'c'], dtype='object')
obj.ordered komutu nesnenin sırasını almak için kullanılır.
import pandas as pd
import numpy as np
cat = pd.Categorical(["a", "c", "c", np.nan], categories=["b", "a", "c"])
print cat.ordered
Onun output aşağıdaki gibidir -
False
İşlev döndürüldü false çünkü herhangi bir sipariş belirtmedik.
Kategorileri Yeniden Adlandırma
Kategorilerin yeniden adlandırılması, yeni değerler atanarak yapılır. series.cat.categoriesseries.cat.categories özelliği.
import pandas as pd
s = pd.Series(["a","b","c","a"], dtype="category")
s.cat.categories = ["Group %s" % g for g in s.cat.categories]
print s.cat.categories
Onun output aşağıdaki gibidir -
Index([u'Group a', u'Group b', u'Group c'], dtype='object')
İlk kategoriler [a,b,c] tarafından güncellenir s.cat.categories nesnenin özelliği.
Yeni Kategoriler Ekleme
Categorical.add.categories () yöntemi kullanılarak yeni kategoriler eklenebilir.
import pandas as pd
s = pd.Series(["a","b","c","a"], dtype="category")
s = s.cat.add_categories([4])
print s.cat.categories
Onun output aşağıdaki gibidir -
Index([u'a', u'b', u'c', 4], dtype='object')
Kategorileri Kaldırma
Kullanmak Categorical.remove_categories() yöntem, istenmeyen kategoriler kaldırılabilir.
import pandas as pd
s = pd.Series(["a","b","c","a"], dtype="category")
print ("Original object:")
print s
print ("After removal:")
print s.cat.remove_categories("a")
Onun output aşağıdaki gibidir -
Original object:
0 a
1 b
2 c
3 a
dtype: category
Categories (3, object): [a, b, c]
After removal:
0 NaN
1 b
2 c
3 NaN
dtype: category
Categories (2, object): [b, c]
Kategorik Verilerin Karşılaştırılması
Kategorik verileri diğer nesnelerle karşılaştırmak üç durumda mümkündür -
eşitliği (== ve! =) kategorik verilerle aynı uzunluktaki liste benzeri bir nesneyle (liste, Seri, dizi, ...) karşılaştırmak.
tüm karşılaştırmalar (==,! =,>,> =, <ve <=) başka bir kategorik Seriyle, sipariş edildiğinde == Doğru ve kategoriler aynıdır.
kategorik bir verinin bir skaler ile tüm karşılaştırmaları.
Aşağıdaki örneğe bir göz atın -
import pandas as pd
cat = pd.Series([1,2,3]).astype("category", categories=[1,2,3], ordered=True)
cat1 = pd.Series([2,2,2]).astype("category", categories=[1,2,3], ordered=True)
print cat>cat1
Onun output aşağıdaki gibidir -
0 False
1 False
2 True
dtype: bool
Temel Çizim: arsa
Series ve DataFrame'deki bu işlevsellik, yalnızca matplotlib libraries plot() yöntem.
import pandas as pd
import numpy as np
df = pd.DataFrame(np.random.randn(10,4),index=pd.date_range('1/1/2000',
periods=10), columns=list('ABCD'))
df.plot()
Onun output aşağıdaki gibidir -
Dizin tarihlerden oluşuyorsa, gct().autofmt_xdate() x eksenini yukarıdaki şekilde gösterildiği gibi biçimlendirmek için.
Bir sütunu diğerine karşı çizebiliriz x ve y anahtar kelimeler.
Çizim yöntemleri, varsayılan çizgi grafiği dışında bir avuç çizim stiline izin verir. Bu yöntemler tür anahtar kelime bağımsız değişkeni olarak sağlanabilirplot(). Bunlar arasında -
- bar arazileri için bar veya barh
- histogram için geçmiş
- kutu çizimi için kutu
- Alan grafikleri için "alan"
- dağılım grafikleri için "dağılım"
Bar Grafiği
Şimdi Bar Plot'un ne olduğunu bir tane oluşturarak görelim. Bir çubuk grafiği şu şekilde oluşturulabilir -
import pandas as pd
import numpy as np
df = pd.DataFrame(np.random.rand(10,4),columns=['a','b','c','d')
df.plot.bar()
Onun output aşağıdaki gibidir -
Yığılmış çubuk grafiği oluşturmak için, pass stacked=True -
import pandas as pd
df = pd.DataFrame(np.random.rand(10,4),columns=['a','b','c','d')
df.plot.bar(stacked=True)
Onun output aşağıdaki gibidir -
Yatay çubuk grafikleri elde etmek için, barh yöntem -
import pandas as pd
import numpy as np
df = pd.DataFrame(np.random.rand(10,4),columns=['a','b','c','d')
df.plot.barh(stacked=True)
Onun output aşağıdaki gibidir -
Histogramlar
Histogramlar, plot.hist()yöntem. Kutu sayısını belirleyebiliriz.
import pandas as pd
import numpy as np
df = pd.DataFrame({'a':np.random.randn(1000)+1,'b':np.random.randn(1000),'c':
np.random.randn(1000) - 1}, columns=['a', 'b', 'c'])
df.plot.hist(bins=20)
Onun output aşağıdaki gibidir -
Her sütun için farklı histogramlar çizmek için aşağıdaki kodu kullanın -
import pandas as pd
import numpy as np
df=pd.DataFrame({'a':np.random.randn(1000)+1,'b':np.random.randn(1000),'c':
np.random.randn(1000) - 1}, columns=['a', 'b', 'c'])
df.diff.hist(bins=20)
Onun output aşağıdaki gibidir -
Kutu Grafikleri
Boxplot arayarak çizilebilir Series.box.plot() ve DataFrame.box.plot()veya DataFrame.boxplot() her sütundaki değerlerin dağılımını görselleştirmek için.
Örneğin, burada [0,1) üzerindeki tekdüze bir rastgele değişkenin 10 gözleminin beş denemesini temsil eden bir kutu grafiği var.
import pandas as pd
import numpy as np
df = pd.DataFrame(np.random.rand(10, 5), columns=['A', 'B', 'C', 'D', 'E'])
df.plot.box()
Onun output aşağıdaki gibidir -
Alan Grafiği
Alan grafiği kullanılarak oluşturulabilir Series.plot.area() ya da DataFrame.plot.area() yöntemler.
import pandas as pd
import numpy as np
df = pd.DataFrame(np.random.rand(10, 4), columns=['a', 'b', 'c', 'd'])
df.plot.area()
Onun output aşağıdaki gibidir -
Dağılım grafiği
Dağılım grafiği kullanılarak oluşturulabilir DataFrame.plot.scatter() yöntemler.
import pandas as pd
import numpy as np
df = pd.DataFrame(np.random.rand(50, 4), columns=['a', 'b', 'c', 'd'])
df.plot.scatter(x='a', y='b')
Onun output aşağıdaki gibidir -
Yuvarlak diyagram
Pasta grafik, DataFrame.plot.pie() yöntem.
import pandas as pd
import numpy as np
df = pd.DataFrame(3 * np.random.rand(4), index=['a', 'b', 'c', 'd'], columns=['x'])
df.plot.pie(subplots=True)
Onun output aşağıdaki gibidir -
Pandas I/O API gibi erişilen bir üst düzey okuyucu işlevleri kümesidir. pd.read_csv() genellikle bir Pandas nesnesi döndürür.
Metin dosyalarını (veya düz dosyaları) okumak için iki iş gücü işlevi read_csv() ve read_table(). Her ikisi de aynı ayrıştırma kodunu kullanarak tablo verilerini akıllıca birDataFrame nesne -
pandas.read_csv(filepath_or_buffer, sep=',', delimiter=None, header='infer',
names=None, index_col=None, usecols=None
pandas.read_csv(filepath_or_buffer, sep='\t', delimiter=None, header='infer',
names=None, index_col=None, usecols=None
İşte nasıl csv dosya verileri şöyle görünür -
S.No,Name,Age,City,Salary
1,Tom,28,Toronto,20000
2,Lee,32,HongKong,3000
3,Steven,43,Bay Area,8300
4,Ram,38,Hyderabad,3900
Bu verileri farklı kaydedin temp.csv ve üzerinde işlem yapmak.
S.No,Name,Age,City,Salary
1,Tom,28,Toronto,20000
2,Lee,32,HongKong,3000
3,Steven,43,Bay Area,8300
4,Ram,38,Hyderabad,3900
Bu verileri farklı kaydedin temp.csv ve üzerinde işlem yapmak.
read.csv
read.csv csv dosyalarındaki verileri okur ve bir DataFrame nesnesi oluşturur.
import pandas as pd
df=pd.read_csv("temp.csv")
print df
Onun output aşağıdaki gibidir -
S.No Name Age City Salary
0 1 Tom 28 Toronto 20000
1 2 Lee 32 HongKong 3000
2 3 Steven 43 Bay Area 8300
3 4 Ram 38 Hyderabad 3900
özel dizin
Bu, csv dosyasında dizini özelleştirmek için bir sütun belirtir. index_col.
import pandas as pd
df=pd.read_csv("temp.csv",index_col=['S.No'])
print df
Onun output aşağıdaki gibidir -
S.No Name Age City Salary
1 Tom 28 Toronto 20000
2 Lee 32 HongKong 3000
3 Steven 43 Bay Area 8300
4 Ram 38 Hyderabad 3900
Dönüştürücüler
dtype sütun sayısı bir dikt olarak aktarılabilir.
import pandas as pd
df = pd.read_csv("temp.csv", dtype={'Salary': np.float64})
print df.dtypes
Onun output aşağıdaki gibidir -
S.No int64
Name object
Age int64
City object
Salary float64
dtype: object
Varsayılan olarak, dtype Maaş sütununun int, ancak sonuç bunu gösteriyor float çünkü türü açıkça belirledik.
Böylece, veriler float gibi görünür -
S.No Name Age City Salary
0 1 Tom 28 Toronto 20000.0
1 2 Lee 32 HongKong 3000.0
2 3 Steven 43 Bay Area 8300.0
3 4 Ram 38 Hyderabad 3900.0
header_names
Names argümanını kullanarak başlığın adlarını belirtin.
import pandas as pd
df=pd.read_csv("temp.csv", names=['a', 'b', 'c','d','e'])
print df
Onun output aşağıdaki gibidir -
a b c d e
0 S.No Name Age City Salary
1 1 Tom 28 Toronto 20000
2 2 Lee 32 HongKong 3000
3 3 Steven 43 Bay Area 8300
4 4 Ram 38 Hyderabad 3900
Dikkat edin, başlık adlarına özel adlar eklenir, ancak dosyadaki başlık kaldırılmamıştır. Şimdi, bunu kaldırmak için başlık argümanını kullanıyoruz.
Başlık birinciden farklı bir satırdaysa, satır numarasını başlığa iletin. Bu, önceki satırları atlayacaktır.
import pandas as pd
df=pd.read_csv("temp.csv",names=['a','b','c','d','e'],header=0)
print df
Onun output aşağıdaki gibidir -
a b c d e
0 S.No Name Age City Salary
1 1 Tom 28 Toronto 20000
2 2 Lee 32 HongKong 3000
3 3 Steven 43 Bay Area 8300
4 4 Ram 38 Hyderabad 3900
satır atlamak
skiprows, belirtilen satır sayısını atlar.
import pandas as pd
df=pd.read_csv("temp.csv", skiprows=2)
print df
Onun output aşağıdaki gibidir -
2 Lee 32 HongKong 3000
0 3 Steven 43 Bay Area 8300
1 4 Ram 38 Hyderabad 3900
Seyrek nesneler, belirli bir değerle eşleşen herhangi bir veri (NaN / eksik değer, ancak herhangi bir değer seçilebilir) çıkarıldığında "sıkıştırılır". Özel bir SparseIndex nesnesi, verilerin "dağıtıldığı" yerleri izler. Bu, bir örnekte çok daha mantıklı olacaktır. Tüm standart Pandalar veri yapıları,to_sparse yöntem -
import pandas as pd
import numpy as np
ts = pd.Series(np.random.randn(10))
ts[2:-2] = np.nan
sts = ts.to_sparse()
print sts
Onun output aşağıdaki gibidir -
0 -0.810497
1 -1.419954
2 NaN
3 NaN
4 NaN
5 NaN
6 NaN
7 NaN
8 0.439240
9 -1.095910
dtype: float64
BlockIndex
Block locations: array([0, 8], dtype=int32)
Block lengths: array([2, 2], dtype=int32)
Seyrek nesneler, bellek verimliliği nedenleriyle mevcuttur.
Şimdi büyük bir NA DataFrame'iniz olduğunu varsayalım ve aşağıdaki kodu çalıştıralım -
import pandas as pd
import numpy as np
df = pd.DataFrame(np.random.randn(10000, 4))
df.ix[:9998] = np.nan
sdf = df.to_sparse()
print sdf.density
Onun output aşağıdaki gibidir -
0.0001
Seyrek herhangi bir nesne, çağrı yapılarak standart yoğun forma geri dönüştürülebilir to_dense -
import pandas as pd
import numpy as np
ts = pd.Series(np.random.randn(10))
ts[2:-2] = np.nan
sts = ts.to_sparse()
print sts.to_dense()
Onun output aşağıdaki gibidir -
0 -0.810497
1 -1.419954
2 NaN
3 NaN
4 NaN
5 NaN
6 NaN
7 NaN
8 0.439240
9 -1.095910
dtype: float64
Seyrek Tipler
Seyrek veriler, yoğun temsiliyle aynı dtipe sahip olmalıdır. Şu anda,float64, int64 ve booldtypesDesteklenmektedir. Orijinale bağlı olarakdtype, fill_value default değişiklikler -
float64 - np.nan
int64 - 0
bool - Yanlış
Aynısını anlamak için aşağıdaki kodu çalıştıralım -
import pandas as pd
import numpy as np
s = pd.Series([1, np.nan, np.nan])
print s
s.to_sparse()
print s
Onun output aşağıdaki gibidir -
0 1.0
1 NaN
2 NaN
dtype: float64
0 1.0
1 NaN
2 NaN
dtype: float64
Uyarılar uyarı anlamına gelir ve aldatma, görünmeyen bir sorun anlamına gelir.
Pandalarla If / Truth İfadesini Kullanma
Pandalar, bir şeyi bir şeye dönüştürmeye çalıştığınızda, uyuşmuş bir hata yapma kuralını izler. bool. Bu birif veya when Boolean işlemlerini kullanarak ve, orveya not. Sonucun ne olması gerektiği belli değil. Sıfır uzunlukta olmadığı için Doğru mu olmalı? Yanlış çünkü Yanlış değerler var mı? Belirsizdir, dolayısıyla Pandalar birValueError -
import pandas as pd
if pd.Series([False, True, False]):
print 'I am True'
Onun output aşağıdaki gibidir -
ValueError: The truth value of a Series is ambiguous.
Use a.empty, a.bool() a.item(),a.any() or a.all().
İçinde ifdurum, onunla ne yapılacağı belli değil. Hata, birNone veya any of those.
import pandas as pd
if pd.Series([False, True, False]).any():
print("I am any")
Onun output aşağıdaki gibidir -
I am any
Bir Boole bağlamında tek öğeli panda nesnelerini değerlendirmek için yöntemi kullanın .bool() -
import pandas as pd
print pd.Series([True]).bool()
Onun output aşağıdaki gibidir -
True
Bitsel Boole
== ve gibi Bitsel Boole operatörleri != Neredeyse her zaman gerekli olan bir Boolean serisi döndürecektir.
import pandas as pd
s = pd.Series(range(5))
print s==4
Onun output aşağıdaki gibidir -
0 False
1 False
2 False
3 False
4 True
dtype: bool
isin Operasyonu
Bu, Serideki her öğenin tam olarak geçirilen değerler dizisinde yer alıp almadığını gösteren bir Boole dizisi döndürür.
import pandas as pd
s = pd.Series(list('abc'))
s = s.isin(['a', 'c', 'e'])
print s
Onun output aşağıdaki gibidir -
0 True
1 False
2 True
dtype: bool
Yeniden dizin oluşturma ve ix Gotcha
Birçok kullanıcı kendilerini ix indexing capabilities bir Pandas nesnesinden veri seçmenin özlü bir yolu olarak -
import pandas as pd
import numpy as np
df = pd.DataFrame(np.random.randn(6, 4), columns=['one', 'two', 'three',
'four'],index=list('abcdef'))
print df
print df.ix[['b', 'c', 'e']]
Onun output aşağıdaki gibidir -
one two three four
a -1.582025 1.335773 0.961417 -1.272084
b 1.461512 0.111372 -0.072225 0.553058
c -1.240671 0.762185 1.511936 -0.630920
d -2.380648 -0.029981 0.196489 0.531714
e 1.846746 0.148149 0.275398 -0.244559
f -1.842662 -0.933195 2.303949 0.677641
one two three four
b 1.461512 0.111372 -0.072225 0.553058
c -1.240671 0.762185 1.511936 -0.630920
e 1.846746 0.148149 0.275398 -0.244559
Bu, elbette, bu durumda tamamen reindex yöntem -
import pandas as pd
import numpy as np
df = pd.DataFrame(np.random.randn(6, 4), columns=['one', 'two', 'three',
'four'],index=list('abcdef'))
print df
print df.reindex(['b', 'c', 'e'])
Onun output aşağıdaki gibidir -
one two three four
a 1.639081 1.369838 0.261287 -1.662003
b -0.173359 0.242447 -0.494384 0.346882
c -0.106411 0.623568 0.282401 -0.916361
d -1.078791 -0.612607 -0.897289 -1.146893
e 0.465215 1.552873 -1.841959 0.329404
f 0.966022 -0.190077 1.324247 0.678064
one two three four
b -0.173359 0.242447 -0.494384 0.346882
c -0.106411 0.623568 0.282401 -0.916361
e 0.465215 1.552873 -1.841959 0.329404
Bazıları şu sonuca varabilir: ix ve reindexbuna göre% 100 eşdeğerdir. Bu, tamsayı indeksleme durumu dışında geçerlidir. Örneğin, yukarıdaki işlem alternatif olarak şu şekilde ifade edilebilir -
import pandas as pd
import numpy as np
df = pd.DataFrame(np.random.randn(6, 4), columns=['one', 'two', 'three',
'four'],index=list('abcdef'))
print df
print df.ix[[1, 2, 4]]
print df.reindex([1, 2, 4])
Onun output aşağıdaki gibidir -
one two three four
a -1.015695 -0.553847 1.106235 -0.784460
b -0.527398 -0.518198 -0.710546 -0.512036
c -0.842803 -1.050374 0.787146 0.205147
d -1.238016 -0.749554 -0.547470 -0.029045
e -0.056788 1.063999 -0.767220 0.212476
f 1.139714 0.036159 0.201912 0.710119
one two three four
b -0.527398 -0.518198 -0.710546 -0.512036
c -0.842803 -1.050374 0.787146 0.205147
e -0.056788 1.063999 -0.767220 0.212476
one two three four
1 NaN NaN NaN NaN
2 NaN NaN NaN NaN
4 NaN NaN NaN NaN
Bunu hatırlamak önemlidir reindex is strict label indexing only. Bu, bir indeksin, örneğin hem tamsayılar hem de dizeler içerdiği patolojik durumlarda bazı potansiyel olarak şaşırtıcı sonuçlara yol açabilir.
Pek çok potansiyel Pandas kullanıcısı SQL konusunda biraz bilgi sahibi olduğundan, bu sayfanın pandalar kullanılarak çeşitli SQL işlemlerinin nasıl gerçekleştirilebileceğine dair bazı örnekler sağlaması amaçlanmıştır.
import pandas as pd
url = 'https://raw.github.com/pandasdev/
pandas/master/pandas/tests/data/tips.csv'
tips=pd.read_csv(url)
print tips.head()
Onun output aşağıdaki gibidir -
total_bill tip sex smoker day time size
0 16.99 1.01 Female No Sun Dinner 2
1 10.34 1.66 Male No Sun Dinner 3
2 21.01 3.50 Male No Sun Dinner 3
3 23.68 3.31 Male No Sun Dinner 2
4 24.59 3.61 Female No Sun Dinner 4
SEÇ
SQL'de seçim, seçtiğiniz virgülle ayrılmış sütun listesi (veya tüm sütunları seçmek için *) kullanılarak yapılır -
SELECT total_bill, tip, smoker, time
FROM tips
LIMIT 5;
Pandalar ile sütun seçimi, DataFrame'inize bir sütun adları listesi iletilerek yapılır -
tips[['total_bill', 'tip', 'smoker', 'time']].head(5)
Tam programı kontrol edelim -
import pandas as pd
url = 'https://raw.github.com/pandasdev/
pandas/master/pandas/tests/data/tips.csv'
tips=pd.read_csv(url)
print tips[['total_bill', 'tip', 'smoker', 'time']].head(5)
Onun output aşağıdaki gibidir -
total_bill tip smoker time
0 16.99 1.01 No Dinner
1 10.34 1.66 No Dinner
2 21.01 3.50 No Dinner
3 23.68 3.31 No Dinner
4 24.59 3.61 No Dinner
DataFrame'i sütun adları listesi olmadan çağırmak tüm sütunları görüntüler (SQL'in * ile benzer).
NEREDE
SQL'de filtreleme bir WHERE cümlesiyle yapılır.
SELECT * FROM tips WHERE time = 'Dinner' LIMIT 5;
DataFrame'ler birçok şekilde filtrelenebilir; en sezgisel olanı Boolean indekslemeyi kullanmaktır.
tips[tips['time'] == 'Dinner'].head(5)
Tam programı kontrol edelim -
import pandas as pd
url = 'https://raw.github.com/pandasdev/
pandas/master/pandas/tests/data/tips.csv'
tips=pd.read_csv(url)
print tips[tips['time'] == 'Dinner'].head(5)
Onun output aşağıdaki gibidir -
total_bill tip sex smoker day time size
0 16.99 1.01 Female No Sun Dinner 2
1 10.34 1.66 Male No Sun Dinner 3
2 21.01 3.50 Male No Sun Dinner 3
3 23.68 3.31 Male No Sun Dinner 2
4 24.59 3.61 Female No Sun Dinner 4
Yukarıdaki ifade, DataFrame'e bir Dizi Doğru / Yanlış nesneler geçirerek tüm satırları True ile döndürür.
GroupBy
Bu işlem, bir veri kümesi boyunca her bir gruptaki kayıtların sayısını getirir. Örneğin, bize cinsiyetin bıraktığı ipucu sayısını getiren bir sorgu -
SELECT sex, count(*)
FROM tips
GROUP BY sex;
Pandaların eşdeğeri şöyle olacaktır:
tips.groupby('sex').size()
Tam programı kontrol edelim -
import pandas as pd
url = 'https://raw.github.com/pandasdev/
pandas/master/pandas/tests/data/tips.csv'
tips=pd.read_csv(url)
print tips.groupby('sex').size()
Onun output aşağıdaki gibidir -
sex
Female 87
Male 157
dtype: int64
İlk N satır
SQL, top n rows kullanma LIMIT -
SELECT * FROM tips
LIMIT 5 ;
Pandaların eşdeğeri şöyle olacaktır:
tips.head(5)
Tam örneği kontrol edelim -
import pandas as pd
url = 'https://raw.github.com/pandas-dev/pandas/master/pandas/tests/data/tips.csv'
tips=pd.read_csv(url)
tips = tips[['smoker', 'day', 'time']].head(5)
print tips
Onun output aşağıdaki gibidir -
smoker day time
0 No Sun Dinner
1 No Sun Dinner
2 No Sun Dinner
3 No Sun Dinner
4 No Sun Dinner
Bunlar, Pandas Kütüphanesinin önceki bölümlerinde öğrendiğimiz, karşılaştırdığımız birkaç temel işlemdir.