Python Pandas - Verileri Dizine Ekleme ve Seçme

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. İlki 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 DataFrame nesnesinde her işlemin 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, öznitelik 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