Đây là một trường hợp sử dụng tiêu chuẩn để phát sóng của Numpy:
df['Values'].values - df['Values'].values[:, None] Out: array([[ 0. , -30.7, -14.5], [ 30.7, 0. , 16.2], [ 14.5, -16.2, 0. ]])Chúng tôi truy cập mảng numpy bên dưới với thuộc tính giá trị và arr = df['Values'].values - df['Values'].values[:, None] pd.concat((df['Country'], pd.DataFrame(arr, columns=df['Country'])), axis=1) Out: Country GB JP US 0 GB 0.0 -30.7 -14.5 1 JP 30.7 0.0 16.2 2 US 14.5 -16.2 0.0 2 giới thiệu một trục mới để kết quả là hai chiều.
Bạn có thể liên kết điều này với loạt phim gốc của bạn:
arr = df['Values'].values - df['Values'].values[:, None] pd.concat((df['Country'], pd.DataFrame(arr, columns=df['Country'])), axis=1) Out: Country GB JP US 0 GB 0.0 -30.7 -14.5 1 JP 30.7 0.0 16.2 2 US 14.5 -16.2 0.0Mảng cũng có thể được tạo ra với các mục sau, nhờ @divakar:
arr = np.subtract.outer(*[df.Values]*2).TỞ đây chúng tôi đang gọi arr = df['Values'].values - df['Values'].values[:, None] pd.concat((df['Country'], pd.DataFrame(arr, columns=df['Country'])), axis=1) Out: Country GB JP US 0 GB 0.0 -30.7 -14.5 1 JP 30.7 0.0 16.2 2 US 14.5 -16.2 0.0 3 trên UFUNC arr = df['Values'].values - df['Values'].values[:, None] pd.concat((df['Country'], pd.DataFrame(arr, columns=df['Country'])), axis=1) Out: Country GB JP US 0 GB 0.0 -30.7 -14.5 1 JP 30.7 0.0 16.2 2 US 14.5 -16.2 0.0 4 và nó áp dụng nó cho tất cả các cặp đầu vào của nó.
________ 15 ________ 16 (self, cột = không) [nguồn] ¶(self, columns=None)[source]¶
Chuyển đổi khung hình thành đại diện numpy-marray của nó.
Cột: Danh sách, Tùy chọn, Mặc định: Không có : list, optional, default:None Nếu không có, trả về tất cả các cột, nếu không, trả về các cột được chỉ định. |
values:ndarray : ndarray Nếu người gọi không đồng nhất và chứa booleans hoặc đối tượng, kết quả sẽ là của dtype = object. Xem ghi chú. |
Ghi chú
Return không phải là một ma trận numpy, thay vào đó, là một cuộc tấn công numpy.
DTYPE sẽ là một DTYPE phổ biến thấp hơn (Upcasting ẩn); Điều đó có nghĩa là nếu các DTYPE (thậm chí các loại số) được trộn lẫn, loại có sức chứa tất cả sẽ được chọn. Sử dụng điều này một cách cẩn thận nếu bạn không xử lý các khối.
ví dụ. Nếu các DTYPE là float16 và float32, DTYPE sẽ được UPCAST thành float32. Nếu DTYPE là Int32 và UINT8, DTYPE sẽ được đưa lên Int32. Bởi Numpy.Find_Common_Type quy ước, trộn Int64 và UINT64 sẽ dẫn đến Float64 DTYPE.
Phương pháp này được cung cấp cho khả năng tương thích ngược. Nói chung, bạn nên sử dụng .Values.
Để tạo ma trận tương quan bằng Pandas:
df.corr()Tiếp theo, bạn sẽ thấy một ví dụ với các bước để tạo ma trận tương quan cho một bộ dữ liệu nhất định.
Bước 1: Thu thập dữ liệu
Đầu tiên, thu thập dữ liệu sẽ được sử dụng cho ma trận tương quan.
Để minh họa, hãy để sử dụng dữ liệu sau đây về 3 biến:
Một | B | C |
45 | 38 | 10 |
37 | 31 | 15 |
42 | 26 | 17 |
35 | 28 | 21 |
39 | 33 | 12 |
Bước 2: Tạo một khung dữ liệu bằng gấu trúc bằng cách sử dụng gấu trúc
Tiếp theo, hãy tạo một khung dữ liệu để ghi dữ liệu trên trong Python:
import pandas as pd data = {'A': [45, 37, 42, 35, 39], 'B': [38, 31, 26, 28, 33], 'C': [10, 15, 17, 21, 12] } df = pd.DataFrame(data) print(df)Khi bạn chạy mã, bạn sẽ nhận được DataFrame sau:
A B C 0 45 38 10 1 37 31 15 2 42 26 17 3 35 28 21 4 39 33 12Bước 3: Tạo ma trận tương quan bằng cách sử dụng gấu trúc
Bây giờ, hãy tạo một ma trận tương quan bằng cách sử dụng mẫu này:
df.corr()Đây là mã Python hoàn chỉnh mà bạn có thể sử dụng để tạo ma trận tương quan cho ví dụ của chúng tôi:
import pandas as pd data = {'A': [45, 37, 42, 35, 39], 'B': [38, 31, 26, 28, 33], 'C': [10, 15, 17, 21, 12] } df = pd.DataFrame(data) corr_matrix = df.corr() print(corr_matrix)Chạy mã trong Python và bạn sẽ nhận được ma trận sau:
A B C A 1.000000 0.518457 -0.701886 B 0.518457 1.000000 -0.860941 C -0.701886 -0.860941 1.000000Bước 4 (Tùy chọn): Nhận biểu diễn trực quan của ma trận tương quan bằng cách sử dụng Seaborn và Matplotlib
Bạn có thể sử dụng các gói SeaBorn và Matplotlib để có được biểu diễn trực quan của ma trận tương quan.
Đầu tiên, nhập các gói Seaborn và Matplotlib:
import seaborn as sn import matplotlib.pyplot as pltSau đó, thêm cú pháp sau ở dưới cùng của mã:
arr = df['Values'].values - df['Values'].values[:, None] pd.concat((df['Country'], pd.DataFrame(arr, columns=df['Country'])), axis=1) Out: Country GB JP US 0 GB 0.0 -30.7 -14.5 1 JP 30.7 0.0 16.2 2 US 14.5 -16.2 0.0 0Vì vậy, mã Python hoàn chỉnh sẽ trông như thế này:
arr = df['Values'].values - df['Values'].values[:, None] pd.concat((df['Country'], pd.DataFrame(arr, columns=df['Country'])), axis=1) Out: Country GB JP US 0 GB 0.0 -30.7 -14.5 1 JP 30.7 0.0 16.2 2 US 14.5 -16.2 0.0 1Bạn cũng có thể muốn xem lại nguồn sau giải thích các bước để tạo ma trận nhầm lẫn bằng Python. Ngoài ra, bạn có thể kiểm tra hướng dẫn này về việc tạo một ma trận hiệp phương sai trong Python.