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