Python Pandas - Mengindeks dan Memilih Data
Pada bab ini, kita akan membahas cara mengiris dan memotong tanggal dan umumnya mendapatkan subset dari objek panda.
Operator pengindeksan Python dan NumPy "[]" dan operator atribut "." menyediakan akses cepat dan mudah ke struktur data Pandas di berbagai kasus penggunaan. Namun, karena jenis data yang akan diakses tidak diketahui sebelumnya, secara langsung menggunakan operator standar memiliki beberapa batasan pengoptimalan. Untuk kode produksi, kami menyarankan Anda untuk memanfaatkan metode akses data pandas yang dioptimalkan yang dijelaskan dalam bab ini.
Panda sekarang mendukung tiga jenis pengindeksan Multi-sumbu; ketiga jenis tersebut disebutkan dalam tabel berikut -
Sr Tidak | Pengindeksan & Deskripsi |
---|---|
1 | .loc() Berbasis label |
2 | .iloc() Berbasis bilangan bulat |
3 | .ix() Berbasis Label dan Integer |
.loc ()
Panda menyediakan berbagai metode untuk dimiliki secara murni label based indexing. Saat mengiris, batas awal juga disertakan. Bilangan bulat adalah label yang valid, tetapi mereka mengacu pada label dan bukan posisinya.
.loc() memiliki beberapa metode akses seperti -
- Label skalar tunggal
- Daftar label
- Objek potongan
- Array Boolean
locmengambil dua operator tunggal / daftar / rentang yang dipisahkan oleh ','. Yang pertama menunjukkan baris dan yang kedua menunjukkan kolom.
Contoh 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']
Nya output adalah sebagai berikut -
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
Contoh 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']]
Nya output adalah sebagai berikut -
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
Contoh 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']]
Nya output adalah sebagai berikut -
A C
a 0.391548 0.745623
b -0.070649 1.620406
f 0.613709 0.286414
h 1.122680 -1.621420
Contoh 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']
Nya output adalah sebagai berikut -
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
Contoh 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
Nya output adalah sebagai berikut -
A False
B True
C False
D False
Name: a, dtype: bool
.iloc ()
Pandas menyediakan berbagai metode untuk mendapatkan pengindeksan berbasis integer murni. Seperti python dan numpy, ini adalah0-based pengindeksan.
Berbagai metode akses adalah sebagai berikut -
- Sebuah Integer
- Daftar bilangan bulat
- Rentang nilai
Contoh 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]
Nya output adalah sebagai berikut -
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
Contoh 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]
Nya output adalah sebagai berikut -
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
Contoh 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]
Nya output adalah sebagai berikut -
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 ()
Selain berbasis label murni dan berbasis integer, Pandas menyediakan metode hybrid untuk pemilihan dan subset objek menggunakan operator .ix ().
Contoh 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]
Nya output adalah sebagai berikut -
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
Contoh 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']
Nya output adalah sebagai berikut -
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
Penggunaan Notasi
Mendapatkan nilai dari objek Pandas dengan pengindeksan Multi-sumbu menggunakan notasi berikut -
Obyek | Pengindeks | Jenis Pengembalian |
---|---|---|
Seri | s.loc [pengindeks] | Nilai skalar |
DataFrame | dll | Objek seri |
Panel | p.loc [indeks_ item, indeks_besar, indeks_besar] | p.loc [indeks_ item, indeks_besar, indeks_besar] |
Note − .iloc() & .ix() menerapkan opsi pengindeksan dan nilai Return yang sama.
Sekarang mari kita lihat bagaimana setiap operasi dapat dilakukan pada objek DataFrame. Kami akan menggunakan operator pengindeksan dasar '[]' -
Contoh 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']
Nya output adalah sebagai berikut -
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 - Kita dapat memberikan daftar nilai ke [] untuk memilih kolom tersebut.
Contoh 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']]
Nya output adalah sebagai berikut -
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
Contoh 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]
Nya output adalah sebagai berikut -
Columns: [A, B, C, D]
Index: []
Akses Atribut
Kolom dapat dipilih menggunakan operator atribut '.'.
Contoh
import pandas as pd
import numpy as np
df = pd.DataFrame(np.random.randn(8, 4), columns = ['A', 'B', 'C', 'D'])
print df.A
Nya output adalah sebagai berikut -
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