Cần được biết rộng rãi hơn rằng bí danh chuỗi 'chỉ số' và 'cột' có thể được sử dụng thay cho các số nguyên 0/1. Các bí danh rõ ràng hơn nhiều và giúp tôi nhớ các phép tính diễn ra như thế nào. Một bí danh khác cho 'chỉ mục' là 'hàng' .
Khi nào axis='index'
được sử dụng, thì các phép tính sẽ xảy ra ở các cột, điều này rất khó hiểu. Nhưng, tôi nhớ rằng nó nhận được một kết quả có cùng kích thước với một hàng khác.
Hãy lấy một số dữ liệu trên màn hình để xem tôi đang nói về điều gì:
df = pd.DataFrame(np.random.rand(10, 4), columns=list('abcd'))
a b c d
0 0.990730 0.567822 0.318174 0.122410
1 0.144962 0.718574 0.580569 0.582278
2 0.477151 0.907692 0.186276 0.342724
3 0.561043 0.122771 0.206819 0.904330
4 0.427413 0.186807 0.870504 0.878632
5 0.795392 0.658958 0.666026 0.262191
6 0.831404 0.011082 0.299811 0.906880
7 0.749729 0.564900 0.181627 0.211961
8 0.528308 0.394107 0.734904 0.961356
9 0.120508 0.656848 0.055749 0.290897
Khi chúng ta muốn lấy giá trị trung bình của tất cả các cột, chúng ta sử dụng axis='index'
để lấy như sau:
df.mean(axis='index')
a 0.562664
b 0.478956
c 0.410046
d 0.546366
dtype: float64
Kết quả tương tự sẽ nhận được bởi:
df.mean()
df.mean(axis=0)
df.mean(axis='rows')
Để sử dụng một thao tác từ trái sang phải trên các hàng, hãy sử dụng axis = 'cột'. Tôi nhớ nó bằng cách nghĩ rằng một cột bổ sung có thể được thêm vào DataFrame của tôi:
df.mean(axis='columns')
0 0.499784
1 0.506596
2 0.478461
3 0.448741
4 0.590839
5 0.595642
6 0.512294
7 0.427054
8 0.654669
9 0.281000
dtype: float64
Kết quả tương tự sẽ nhận được bởi:
df.mean(axis=1)
Thêm một hàng mới với axis = 0 / index / rows
Hãy sử dụng các kết quả này để thêm các hàng hoặc cột bổ sung để hoàn thành phần giải thích. Vì vậy, bất cứ khi nào sử dụng axis = 0 / index / rows, nó giống như nhận được một hàng mới của DataFrame. Hãy thêm một hàng:
df.append(df.mean(axis='rows'), ignore_index=True)
a b c d
0 0.990730 0.567822 0.318174 0.122410
1 0.144962 0.718574 0.580569 0.582278
2 0.477151 0.907692 0.186276 0.342724
3 0.561043 0.122771 0.206819 0.904330
4 0.427413 0.186807 0.870504 0.878632
5 0.795392 0.658958 0.666026 0.262191
6 0.831404 0.011082 0.299811 0.906880
7 0.749729 0.564900 0.181627 0.211961
8 0.528308 0.394107 0.734904 0.961356
9 0.120508 0.656848 0.055749 0.290897
10 0.562664 0.478956 0.410046 0.546366
Thêm một cột mới với axis = 1 / cột
Tương tự, khi axis = 1 / column, nó sẽ tạo dữ liệu có thể dễ dàng tạo thành cột của riêng nó:
df.assign(e=df.mean(axis='columns'))
a b c d e
0 0.990730 0.567822 0.318174 0.122410 0.499784
1 0.144962 0.718574 0.580569 0.582278 0.506596
2 0.477151 0.907692 0.186276 0.342724 0.478461
3 0.561043 0.122771 0.206819 0.904330 0.448741
4 0.427413 0.186807 0.870504 0.878632 0.590839
5 0.795392 0.658958 0.666026 0.262191 0.595642
6 0.831404 0.011082 0.299811 0.906880 0.512294
7 0.749729 0.564900 0.181627 0.211961 0.427054
8 0.528308 0.394107 0.734904 0.961356 0.654669
9 0.120508 0.656848 0.055749 0.290897 0.281000
Dường như bạn có thể thấy tất cả các bí danh với các biến riêng tư sau:
df._AXIS_ALIASES
{'rows': 0}
df._AXIS_NUMBERS
{'columns': 1, 'index': 0}
df._AXIS_NAMES
{0: 'index', 1: 'columns'}