Python Pandas - Lập chỉ mục và Chọn dữ liệu

Trong chương này, chúng ta sẽ thảo luận về cách cắt và xúc xắc ngày và nói chung lấy tập con của đối tượng gấu trúc.

Toán tử lập chỉ mục Python và NumPy "[]" và toán tử thuộc tính "." cung cấp quyền truy cập nhanh chóng và dễ dàng vào cấu trúc dữ liệu Pandas trong nhiều trường hợp sử dụng. Tuy nhiên, vì loại dữ liệu được truy cập không được biết trước nên việc sử dụng trực tiếp các toán tử tiêu chuẩn có một số giới hạn tối ưu hóa. Đối với mã sản xuất, chúng tôi khuyên bạn nên tận dụng các phương pháp truy cập dữ liệu gấu trúc được tối ưu hóa được giải thích trong chương này.

Pandas hiện hỗ trợ ba kiểu lập chỉ mục Đa trục; ba loại được đề cập trong bảng sau:

Sr.No Lập chỉ mục & Mô tả
1

.loc()

Dựa trên nhãn

2

.iloc()

Dựa trên số nguyên

3

.ix()

Dựa trên cả Nhãn và Số nguyên

.loc ()

Gấu trúc cung cấp nhiều phương pháp khác nhau để có label based indexing. Khi cắt, giới hạn bắt đầu cũng được bao gồm. Số nguyên là nhãn hợp lệ, nhưng chúng tham chiếu đến nhãn chứ không phải vị trí.

.loc() có nhiều phương thức truy cập như -

  • Một nhãn vô hướng duy nhất
  • Danh sách các nhãn
  • Một đối tượng lát cắt
  • Một mảng Boolean

locnhận hai toán tử đơn / danh sách / dải ô được phân tách bằng ','. Cái đầu tiên cho biết hàng và cái thứ hai chỉ ra cột.

ví dụ 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']

Nó là output như sau -

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

Ví dụ 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']]

Nó là output như sau -

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

Ví dụ 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']]

Nó là output như sau -

A          C
a   0.391548   0.745623
b  -0.070649   1.620406
f   0.613709   0.286414
h   1.122680  -1.621420

Ví dụ 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']

Nó là output như sau -

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

Ví dụ 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

Nó là output như sau -

A  False
B  True
C  False
D  False
Name: a, dtype: bool

.iloc ()

Pandas cung cấp nhiều phương thức khác nhau để lấy chỉ mục hoàn toàn dựa trên số nguyên. Giống như python và numpy, đây là0-based lập chỉ mục.

Các phương pháp truy cập khác nhau như sau:

  • Một số nguyên
  • Danh sách các số nguyên
  • Một loạt các giá trị

ví dụ 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]

Nó là output như sau -

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

Ví dụ 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]

Nó là output như sau -

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

Ví dụ 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]

Nó là output như sau -

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 ()

Bên cạnh dựa trên nhãn thuần túy và dựa trên số nguyên, Pandas cung cấp một phương pháp kết hợp để lựa chọn và thiết lập con đối tượng bằng cách sử dụng toán tử .ix ().

ví dụ 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]

Nó là output như sau -

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

Ví dụ 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']

Nó là output như sau -

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

Sử dụng ký hiệu

Nhận các giá trị từ đối tượng Pandas với lập chỉ mục Nhiều trục sử dụng ký hiệu sau:

Vật Người lập chỉ mục Loại trả lại
Loạt s.loc [indexer] Giá trị vô hướng
Khung dữ liệu df.loc [row_index, col_index] Đối tượng loạt
Bảng điều khiển p.loc [item_index, major_index, small_index] p.loc [item_index, major_index, small_index]

Note − .iloc() & .ix() áp dụng cùng các tùy chọn lập chỉ mục và Giá trị trả lại.

Bây giờ chúng ta hãy xem từng thao tác có thể được thực hiện như thế nào trên đối tượng DataFrame. Chúng tôi sẽ sử dụng toán tử lập chỉ mục cơ bản '[]' -

ví dụ 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']

Nó là output như sau -

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 - Chúng ta có thể chuyển một danh sách các giá trị cho [] để chọn các cột đó.

Ví dụ 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']]

Nó là output như sau -

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

Ví dụ 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]

Nó là output như sau -

Columns: [A, B, C, D]
Index: []

Quyền truy cập thuộc tính

Có thể chọn các cột bằng toán tử thuộc tính '.'.

Thí dụ

import pandas as pd
import numpy as np
df = pd.DataFrame(np.random.randn(8, 4), columns = ['A', 'B', 'C', 'D'])

print df.A

Nó là output như sau -

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