Chủ đề hôm nay là chủ đề được sử dụng nhiều nhất trong Matplotlib, nhưng vẫn là một chủ đề khó hiểu đối với nhiều người trong chúng ta. Đó là về hình & trục, chúng tôi sẽ đề cập đến những điều sau đây
- Hình và trục là gì?
- Làm thế nào để sử dụng chúng cho bất kỳ loại cốt truyện?
- Làm thế nào để sử dụng chúng đặc biệt cho nhiều ô con?
Nhân vật. Nó là lớp trên cùng của cốt truyện [loại bức tranh lớn]
Hình bao gồm các ô phụ, trục phụ, tiêu đề, phụ đề, truyền thuyết, mọi thứ bên trong cốt truyện trừ phần tổng quan
trục. Đó là một phần của Hình, không có gì ngoài một ô phụ
Các trục xác định một biểu đồ con, chúng ta có thể viết các giới hạn trục x, giới hạn trục y, nhãn của chúng, loại biểu đồ. Nó kiểm soát mọi chi tiết bên trong subplot
Hãy bắt tay với dữ liệu
#importing matplotlib to plot the graphs
import matplotlib.pyplot as plt#to avoid pop-ups & show graphs inline with the code
%matplotlib inline#pandas is required to read the input dataset
import pandas as pd
Đối với hướng dẫn này, chúng ta sẽ sử dụng Hình, Trục cùng nhau bằng cách sử dụng plt. subplots[] chỉ vì đây là cách được sử dụng nhiều nhất
#subplot with 1 row & 2 cols
fig, ax = plt.subplots[1,2]
nội dung
Trục trong sê-ri
Sê-ri là mảng một chiều các giá trị. Dưới mui xe, nó sử dụng NumPy ndarray. Đó là nơi thuật ngữ "trục" ra đời. NumPy sử dụng nó khá thường xuyên vì ndarray có thể có nhiều kích thước
Đối tượng sê-ri chỉ có “trục 0” vì nó chỉ có một chiều.
Mũi tên trên hình ảnh hiển thị “trục 0” và hướng của nó cho đối tượng Sê-ri.
Thông thường, trong Python, cấu trúc một chiều được hiển thị dưới dạng một hàng giá trị. Ngược lại, ở đây chúng ta thấy rằng Sê-ri được hiển thị dưới dạng một cột giá trị
Có thể truy cập từng ô trong Sê-ri thông qua giá trị chỉ mục dọc theo “trục 0”. Đối với các chỉ mục đối tượng Sê-ri của chúng tôi là. 0, 1, 2, 3, 4. Dưới đây là một ví dụ về việc truy cập các giá trị khác nhau
>>> import pandas as pd >>> srs = pd.Series[['red', 'green', 'blue', 'white', 'black']] >>> srs[0] 'red' >>> srs[3] 'white'
Các trục trong DataFrame
DataFrame là cấu trúc dữ liệu hai chiều giống như bảng SQL hoặc bảng tính Excel. Nó có các cột và hàng. Các cột của nó được làm bằng các đối tượng Sê-ri riêng biệt. Hãy xem một ví dụ
Một đối tượng DataFrame có hai trục. “trục 0” và “trục 1”. “trục 0” đại diện cho hàng và “trục 1” đại diện cho cột. Bây giờ, rõ ràng là Sê-ri và Khung dữ liệu có cùng hướng cho “trục 0” – nó đi dọc theo hướng của hàng
Đối tượng DataFrame của chúng ta có các chỉ mục 0, 1, 2, 3, 4 dọc theo “trục 0” và ngoài ra, nó có các chỉ mục “trục 1”. 'A và B'
Để truy cập một phần tử trong DataFrame, chúng tôi cần cung cấp hai chỉ mục [một chỉ mục cho mỗi trục]. Ngoài ra, thay vì dấu ngoặc đơn, chúng ta cần sử dụng. phương pháp định vị
>>> import pandas as pd >>> srs_a = pd.Series[[1,3,6,8,9]] >>> srs_b = pd.Series[['red', 'green', 'blue', 'white', 'black']] >>> df = pd.DataFrame[{'a': srs_a, 'b': srs_b}] >>> df.loc[2, 'b'] 'blue' >>> df.loc[3, 'a'] 8
Sử dụng tham số "trục" trong lệnh gọi API
Có rất nhiều lệnh gọi API khác nhau cho các đối tượng Sê-ri và DataFrame chấp nhận tham số "trục". Đối tượng sê-ri chỉ có một trục nên tham số này luôn bằng 0 đối với nó. Vì vậy, bạn có thể bỏ qua nó, vì nó không ảnh hưởng đến kết quả
________số 8Ngược lại, DataFrame có hai trục và tham số "trục" xác định dọc theo trục nào một thao tác sẽ được thực hiện. Ví dụ,. tổng có thể được áp dụng dọc theo “trục 0”. Điều đó có nghĩa là,. hoạt động tổng tính toán một tổng cho mỗi cột
>>> import pandas as pd >>> srs_a = pd.Series[[10,30,60,80,90]] >>> srs_b = pd.Series[[22, 44, 55, 77, 101]] >>> df = pd.DataFrame[{'a': srs_a, 'b': srs_b}] >>> df a b 0 10 22 1 30 44 2 60 55 3 80 77 4 90 101 >>> df.sum[axis=0] a 270 b 299 dtype: int64
Chúng tôi thấy rằng việc có tổng với trục = 0 đã phá vỡ tất cả các giá trị dọc theo hướng của “trục 0” và chỉ để lại các cột ['a' và 'b'] có tổng phù hợp
Với axis=1, nó tạo ra tổng cho mỗi hàng
#subplot with 1 row & 2 cols
fig, ax = plt.subplots[1,2]
0Nếu bạn thích tên thông thường thay vì số, thì mỗi trục có một bí danh chuỗi. “trục 0” có hai bí danh. 'chỉ mục' và 'hàng'. “trục 1” chỉ có một. 'cột'. Bạn có thể sử dụng các bí danh này thay vì số
#subplot with 1 row & 2 cols
fig, ax = plt.subplots[1,2]
1Giảm giá trị NaN
Hãy xây dựng một DataFrame đơn giản với các giá trị NaN và quan sát cách trục ảnh hưởng đến. phương pháp dropna
#subplot with 1 row & 2 cols
fig, ax = plt.subplots[1,2]
2Đây. dropna lọc ra bất kỳ hàng nào [chúng tôi đang di chuyển dọc theo “trục 0”] có chứa giá trị NaN
Hãy sử dụng hướng "trục 1"
#subplot with 1 row & 2 cols
fig, ax = plt.subplots[1,2]
3Hiện nay. dropna đã thu gọn “trục 1” và xóa tất cả các cột có giá trị NaN. Các cột 'a' và 'b' chứa các giá trị NaN, do đó chỉ còn lại cột 'c'
nối
Chức năng nối với axis=0 ngăn xếp DataFrame đầu tiên trên khung thứ hai
#subplot with 1 row & 2 cols
fig, ax = plt.subplots[1,2]
4Với axis=1, cả hai DataFrames được đặt dọc theo nhau
#subplot with 1 row & 2 cols
fig, ax = plt.subplots[1,2]
5Tóm lược
Pandas mượn khái niệm "trục" từ thư viện NumPy. Tham số "trục" không có bất kỳ ảnh hưởng nào đối với đối tượng Sê-ri vì nó chỉ có một trục. Ngược lại, API DataFrame phụ thuộc rất nhiều vào tham số vì đây là cấu trúc dữ liệu hai chiều và nhiều thao tác có thể được thực hiện dọc theo các trục khác nhau tạo ra các kết quả hoàn toàn khác nhau