Làm cách nào để chuyển đổi mảng thành DataFrame Python?

Khi làm việc với DataFrames của gấu trúc, đôi khi có thể có lợi nếu chúng ta chuyển đổi chúng thành mảng NumPy. Cái sau dường như hiệu quả hơn về bộ nhớ, đặc biệt là khi thực hiện một số phép toán phức tạp trên dữ liệu

Điều này đặc biệt đúng khi bạn làm việc với lượng dữ liệu tương đối nhỏ (giả sử 50 nghìn hàng trở xuống). Pandas thường sẽ vượt trội hơn ndarrays trong các trường hợp liên quan đến khối lượng dữ liệu lớn hơn đáng kể (giả sử> 500 nghìn hàng). Tuy nhiên, đây chỉ là một quy tắc chung — trong hầu hết các trường hợp, sẽ tốt hơn nếu kiểm tra cả hai tùy chọn và xem tùy chọn nào tốt hơn về hiệu suất và mức sử dụng bộ nhớ, dựa trên các yêu cầu và trường hợp sử dụng cụ thể của bạn

Trong hướng dẫn ngắn ngày hôm nay, chúng tôi sẽ giới thiệu cách chuyển đổi DataFrame của pandas thành mảng NumPy một cách hiệu quả

Trước tiên, hãy tạo một DataFrame gấu trúc mẫu mà chúng ta sẽ sử dụng để minh họa một số cách khác nhau có thể được sử dụng để chuyển đổi nó thành mảng có nhiều mảng

import pandas as pd
df = pd.DataFrame(
[
(1, 'A', 10.5, True),
(2, 'B', 10.0, False),
(3, 'A', 19.2, False),
(4, 'C', 21.1, True),
(5, 'A', 15.5, True),
(6, 'C', 14.9, False),
(7, 'C', 13.1, True),
(8, 'B', 12.5, False),
(9, 'C', 11.2, False),
(10, 'A', 31.4, False),
(11, 'D', 10.4, True),
],
columns=['colA', 'colB', 'colC', 'colD']
)
print(df)
colA colB colC colD
0 1 A 10.5 True
1 2 B 10.0 False
2 3 A 19.2 False
3 4 C 21.1 True
4 5 A 15.5 True
5 6 C 14.9 False
6 7 C 13.1 True
7 8 B 12.5 False
8 9 C 11.2 False
9 10 A 31.4 False
10 11 D 10.4 True

Sử dụng gấu trúc. Khung dữ liệu. to_numpy()

Tùy chọn đầu tiên chúng tôi có khi chuyển đổi DataFrame của gấu trúc thành mảng NumPy là phương thức >>> type(ndarray)
<class 'numpy.ndarray'>
0

ndarray = df.to_numpy()print(ndarray)array([[1, 'A', 10.5, True],
[2, 'B', 10.0, False],
[3, 'A', 19.2, False],
[4, 'C', 21.1, True],
[5, 'A', 15.5, True],
[6, 'C', 14.9, False],
[7, 'C', 13.1, True],
[8, 'B', 12.5, False],
[9, 'C', 11.2, False],
[10, 'A', 31.4, False],
[11, 'D', 10.4, True]], dtype=object)

Và loại đối tượng trả về sẽ là >>> type(ndarray)
<class 'numpy.ndarray'>
1

>>> type(ndarray)
<class 'numpy.ndarray'>

Sử dụng gấu trúc. Khung dữ liệu. to_records()

Một tùy chọn khác ở đây là phương pháp >>> type(ndarray)
<class 'numpy.ndarray'>
2 sẽ chuyển đổi DataFrame của gấu trúc thành một mảng bản ghi NumPy

recarray = df.to_records()print(recarray)rec.array([( 0, 1, 'A', 10.5, True),
( 1, 2, 'B', 10. , False),
( 2, 3, 'A', 19.2, False),
( 3, 4, 'C', 21.1, True),
( 4, 5, 'A', 15.5, True),
( 5, 6, 'C', 14.9, False),
( 6, 7, 'C', 13.1, True),
( 7, 8, 'B', 12.5, False),
( 8, 9, 'C', 11.2, False),
( 9, 10, 'A', 31.4, False),
(10, 11, 'D', 10.4, True)],
dtype=[('index', '<i8'), ('colA', '<i8'), ('colB', 'O'), ('colC', '<f8'), ('colD', '?')])

Như đã đề cập, trái ngược với ndarray = df.to_numpy()print(ndarray)array([[1, 'A', 10.5, True],
[2, 'B', 10.0, False],
[3, 'A', 19.2, False],
[4, 'C', 21.1, True],
[5, 'A', 15.5, True],
[6, 'C', 14.9, False],
[7, 'C', 13.1, True],
[8, 'B', 12.5, False],
[9, 'C', 11.2, False],
[10, 'A', 31.4, False],
[11, 'D', 10.4, True]], dtype=object)
0, phương thức ndarray = df.to_numpy()print(ndarray)array([[1, 'A', 10.5, True],
[2, 'B', 10.0, False],
[3, 'A', 19.2, False],
[4, 'C', 21.1, True],
[5, 'A', 15.5, True],
[6, 'C', 14.9, False],
[7, 'C', 13.1, True],
[8, 'B', 12.5, False],
[9, 'C', 11.2, False],
[10, 'A', 31.4, False],
[11, 'D', 10.4, True]], dtype=object)
1 sẽ trả về một đối tượng kiểu ndarray = df.to_numpy()print(ndarray)array([[1, 'A', 10.5, True],
[2, 'B', 10.0, False],
[3, 'A', 19.2, False],
[4, 'C', 21.1, True],
[5, 'A', 15.5, True],
[6, 'C', 14.9, False],
[7, 'C', 13.1, True],
[8, 'B', 12.5, False],
[9, 'C', 11.2, False],
[10, 'A', 31.4, False],
[11, 'D', 10.4, True]], dtype=object)
2

>>> type(recarray)
<class 'numpy.recarray'>

sử dụng numpy. sự lộn xộn()

Tùy chọn thứ ba mà chúng tôi có ở đây là phương pháp ndarray = df.to_numpy()print(ndarray)array([[1, 'A', 10.5, True],
[2, 'B', 10.0, False],
[3, 'A', 19.2, False],
[4, 'C', 21.1, True],
[5, 'A', 15.5, True],
[6, 'C', 14.9, False],
[7, 'C', 13.1, True],
[8, 'B', 12.5, False],
[9, 'C', 11.2, False],
[10, 'A', 31.4, False],
[11, 'D', 10.4, True]], dtype=object)
3 sẽ chuyển đổi DataFrame của gấu trúc đầu vào thành một mảng NumPy

import numpy as npndarray = np.asarray(df)print(ndarray)array([[1, 'A', 10.5, True],
[2, 'B', 10.0, False],
[3, 'A', 19.2, False],
[4, 'C', 21.1, True],
[5, 'A', 15.5, True],
[6, 'C', 14.9, False],
[7, 'C', 13.1, True],
[8, 'B', 12.5, False],
[9, 'C', 11.2, False],
[10, 'A', 31.4, False],
[11, 'D', 10.4, True]], dtype=object)

Đối tượng trả về một lần nữa sẽ là một thể hiện của >>> type(ndarray)
<class 'numpy.ndarray'>
1

>>> type(ndarray)
<class 'numpy.ndarray'>

Tránh sử dụng df. giá trị

Trong các phiên bản gấu trúc cũ hơn, một cách khác để chuyển đổi DataFrame của gấu trúc thành mảng NumPy là thông qua thuộc tính ndarray = df.to_numpy()print(ndarray)array([[1, 'A', 10.5, True],
[2, 'B', 10.0, False],
[3, 'A', 19.2, False],
[4, 'C', 21.1, True],
[5, 'A', 15.5, True],
[6, 'C', 14.9, False],
[7, 'C', 13.1, True],
[8, 'B', 12.5, False],
[9, 'C', 11.2, False],
[10, 'A', 31.4, False],
[11, 'D', 10.4, True]], dtype=object)
5. Tuy nhiên, xin lưu ý rằng ngay cả tài liệu chính thức cũng khuyến khích bạn không sử dụng nó nữa

Chúng tôi khuyên bạn nên sử dụng ndarray = df.to_numpy()print(ndarray)array([[1, 'A', 10.5, True],
[2, 'B', 10.0, False],
[3, 'A', 19.2, False],
[4, 'C', 21.1, True],
[5, 'A', 15.5, True],
[6, 'C', 14.9, False],
[7, 'C', 13.1, True],
[8, 'B', 12.5, False],
[9, 'C', 11.2, False],
[10, 'A', 31.4, False],
[11, 'D', 10.4, True]], dtype=object)
6 để thay thế

Điều này là do hành vi của thuộc tính này không nhất quán. Để tìm hiểu thêm chi tiết, bạn có thể đọc ghi chú phát hành của phiên bản 0. 24. 0

Trước đây, điều này sẽ được thực hiện với ndarray = df.to_numpy()print(ndarray)array([[1, 'A', 10.5, True],
[2, 'B', 10.0, False],
[3, 'A', 19.2, False],
[4, 'C', 21.1, True],
[5, 'A', 15.5, True],
[6, 'C', 14.9, False],
[7, 'C', 13.1, True],
[8, 'B', 12.5, False],
[9, 'C', 11.2, False],
[10, 'A', 31.4, False],
[11, 'D', 10.4, True]], dtype=object)
7, nhưng với ndarray = df.to_numpy()print(ndarray)array([[1, 'A', 10.5, True],
[2, 'B', 10.0, False],
[3, 'A', 19.2, False],
[4, 'C', 21.1, True],
[5, 'A', 15.5, True],
[6, 'C', 14.9, False],
[7, 'C', 13.1, True],
[8, 'B', 12.5, False],
[9, 'C', 11.2, False],
[10, 'A', 31.4, False],
[11, 'D', 10.4, True]], dtype=object)
8 thì không rõ liệu giá trị được trả về sẽ là mảng thực, một số phép biến đổi của nó hay một trong các mảng tùy chỉnh của gấu trúc (như ndarray = df.to_numpy()print(ndarray)array([[1, 'A', 10.5, True],
[2, 'B', 10.0, False],
[3, 'A', 19.2, False],
[4, 'C', 21.1, True],
[5, 'A', 15.5, True],
[6, 'C', 14.9, False],
[7, 'C', 13.1, True],
[8, 'B', 12.5, False],
[9, 'C', 11.2, False],
[10, 'A', 31.4, False],
[11, 'D', 10.4, True]], dtype=object)
9)

Suy nghĩ cuối cùng

Trong bài viết hôm nay, chúng ta đã thảo luận về việc chuyển đổi DataFrames của pandas thành mảng NumPy và trong những trường hợp nào thì có thể có lợi khi làm như vậy

Ngoài ra, chúng tôi đã giới thiệu cách chuyển đổi DataFrame thành ndarray bằng cách sử dụng các phương thức ndarray = df.to_numpy()print(ndarray)array([[1, 'A', 10.5, True],
[2, 'B', 10.0, False],
[3, 'A', 19.2, False],
[4, 'C', 21.1, True],
[5, 'A', 15.5, True],
[6, 'C', 14.9, False],
[7, 'C', 13.1, True],
[8, 'B', 12.5, False],
[9, 'C', 11.2, False],
[10, 'A', 31.4, False],
[11, 'D', 10.4, True]], dtype=object)
0 và ndarray = df.to_numpy()print(ndarray)array([[1, 'A', 10.5, True],
[2, 'B', 10.0, False],
[3, 'A', 19.2, False],
[4, 'C', 21.1, True],
[5, 'A', 15.5, True],
[6, 'C', 14.9, False],
[7, 'C', 13.1, True],
[8, 'B', 12.5, False],
[9, 'C', 11.2, False],
[10, 'A', 31.4, False],
[11, 'D', 10.4, True]], dtype=object)
1 của đối tượng >>> type(ndarray)
<class 'numpy.ndarray'>
2 cũng như phương thức >>> type(ndarray)
<class 'numpy.ndarray'>
3

Trở thành thành viên và đọc mọi câu chuyện trên Medium. Phí thành viên của bạn hỗ trợ trực tiếp cho tôi và các nhà văn khác mà bạn đọc. Bạn cũng sẽ có toàn quyền truy cập vào mọi câu chuyện trên Phương tiện

Làm cách nào bạn có thể chuyển đổi một mảng NumPy thành một Dataframe gấu trúc?

Để chuyển đổi một mảng có nhiều mảng thành khung dữ liệu pandas, chúng tôi sử dụng pandas. Hàm DataFrame() của thư viện Python Pandas .

Làm cách nào để chuyển đổi mảng 2D thành DataFrame của gấu trúc?

Để chuyển đổi một mảng có nhiều mảng thành khung dữ liệu Pandas, chúng tôi sử dụng hàm DataFrame() của Pandas với mảng có nhiều mảng làm đối số. Chúng tôi nhận được một khung dữ liệu Pandas với tên cột và chỉ mục hoặc tên hàng mặc định. Theo mặc định, hàm Pandas DataFrame() đặt tên cho các cột bắt đầu bằng chỉ số 0

Mảng có thể được sử dụng để tạo Dataframe trong gấu trúc không?

Mảng NumPy . A là mảng hai chiều có 4 hàng 3 cột. Chúng ta có thể chuyển nó đến chức năng DataFrame. we can use a two-dimensional numpy array to create a dataframe. A is a two-dimensional array with 4 rows and 3 columns. We can pass it to the DataFrame function.

Làm cách nào để chuyển đổi mảng thành khung dữ liệu trong PySpark?

PySpark. Chuyển đổi mảng/danh sách Python thành khung dữ liệu Spark .
các loại nhập khẩu. Trước tiên, hãy nhập các loại dữ liệu chúng tôi cần cho khung dữ liệu. .
Tạo phiên Spark. .
Xác định lược đồ. .
Chuyển đổi danh sách thành khung dữ liệu. .
Hoàn thành kịch bản. .
đầu ra mẫu. .
Tóm lược

Chủ đề