Hướng dẫn how do you convert a dataframe to a matrix in python? - làm cách nào để chuyển đổi khung dữ liệu thành ma trận trong python?

Sử dụng df.to_numpy()

Nó tốt hơn df.values, đây là lý do tại sao.*

Đã đến lúc không dùng việc sử dụng values và ____10 của bạn.

Pandas v0.24.0 đã giới thiệu hai phương pháp mới để có được các mảng numpy từ các đối tượng gấu trúc:

  1. df.index.to_numpy()
    # array(['a', 'b', 'c'], dtype=object)
    
    df['A'].to_numpy()
    #  array([1, 2, 3])
    
    1, được xác định trên các đối tượng
    df.index.to_numpy()
    # array(['a', 'b', 'c'], dtype=object)
    
    df['A'].to_numpy()
    #  array([1, 2, 3])
    
    2,
    df.index.to_numpy()
    # array(['a', 'b', 'c'], dtype=object)
    
    df['A'].to_numpy()
    #  array([1, 2, 3])
    
    3 và
    df.index.to_numpy()
    # array(['a', 'b', 'c'], dtype=object)
    
    df['A'].to_numpy()
    #  array([1, 2, 3])
    
    4 và
    , which is defined on
    df.index.to_numpy()
    # array(['a', 'b', 'c'], dtype=object)
    
    df['A'].to_numpy()
    #  array([1, 2, 3])
    
    2,
    df.index.to_numpy()
    # array(['a', 'b', 'c'], dtype=object)
    
    df['A'].to_numpy()
    #  array([1, 2, 3])
    
    3, and
    df.index.to_numpy()
    # array(['a', 'b', 'c'], dtype=object)
    
    df['A'].to_numpy()
    #  array([1, 2, 3])
    
    4 objects, and
  2. df.index.to_numpy()
    # array(['a', 'b', 'c'], dtype=object)
    
    df['A'].to_numpy()
    #  array([1, 2, 3])
    
    5, chỉ được xác định trên các đối tượng
    df.index.to_numpy()
    # array(['a', 'b', 'c'], dtype=object)
    
    df['A'].to_numpy()
    #  array([1, 2, 3])
    
    2 và
    df.index.to_numpy()
    # array(['a', 'b', 'c'], dtype=object)
    
    df['A'].to_numpy()
    #  array([1, 2, 3])
    
    3.
    , which is defined on
    df.index.to_numpy()
    # array(['a', 'b', 'c'], dtype=object)
    
    df['A'].to_numpy()
    #  array([1, 2, 3])
    
    2 and
    df.index.to_numpy()
    # array(['a', 'b', 'c'], dtype=object)
    
    df['A'].to_numpy()
    #  array([1, 2, 3])
    
    3 objects only.

Nếu bạn truy cập các tài liệu V0.24 cho

df.index.to_numpy()
# array(['a', 'b', 'c'], dtype=object)

df['A'].to_numpy()
#  array([1, 2, 3])
8, bạn sẽ thấy một cảnh báo lớn màu đỏ cho biết:

CẢNH BÁO: Chúng tôi khuyên bạn nên sử dụng df.index.to_numpy() # array(['a', 'b', 'c'], dtype=object) df['A'].to_numpy() # array([1, 2, 3]) 9 thay thế.

Xem phần này của Ghi chú phát hành V0.24.0 và câu trả lời này để biết thêm thông tin.

* -

df.index.to_numpy()
# array(['a', 'b', 'c'], dtype=object)

df['A'].to_numpy()
#  array([1, 2, 3])
1 là phương pháp được đề xuất của tôi cho bất kỳ mã sản xuất nào cần chạy một cách đáng tin cậy cho nhiều phiên bản trong tương lai. Tuy nhiên, nếu bạn chỉ tạo một vết xước trong Jupyter hoặc thiết bị đầu cuối, sử dụng
df.index.to_numpy()
# array(['a', 'b', 'c'], dtype=object)

df['A'].to_numpy()
#  array([1, 2, 3])
8 để tiết kiệm vài mili giây là một ngoại lệ cho phép. Bạn luôn có thể thêm kết thúc FIT N sau.



Hướng tới tính nhất quán tốt hơn: df.index.to_numpy() # array(['a', 'b', 'c'], dtype=object) df['A'].to_numpy() # array([1, 2, 3]) 1

Theo tinh thần của sự nhất quán tốt hơn trong suốt API, một phương pháp mới

v = df.to_numpy()
v[0, 0] = -1
 
df
   A  B  C
a -1  4  7
b  2  5  8
c  3  6  9
3 đã được giới thiệu để trích xuất mảng numpy cơ bản từ DataFrames.

# Setup
df = pd.DataFrame(data={'A': [1, 2, 3], 'B': [4, 5, 6], 'C': [7, 8, 9]}, 
                  index=['a', 'b', 'c'])

# Convert the entire DataFrame
df.to_numpy()
# array([[1, 4, 7],
#        [2, 5, 8],
#        [3, 6, 9]])

# Convert specific columns
df[['A', 'C']].to_numpy()
# array([[1, 7],
#        [2, 8],
#        [3, 9]])

Như đã đề cập ở trên, phương pháp này cũng được xác định trên các đối tượng

df.index.to_numpy()
# array(['a', 'b', 'c'], dtype=object)

df['A'].to_numpy()
#  array([1, 2, 3])
2 và
df.index.to_numpy()
# array(['a', 'b', 'c'], dtype=object)

df['A'].to_numpy()
#  array([1, 2, 3])
3 (xem tại đây).

df.index.to_numpy()
# array(['a', 'b', 'c'], dtype=object)

df['A'].to_numpy()
#  array([1, 2, 3])

Theo mặc định, một chế độ xem được trả về, vì vậy mọi sửa đổi được thực hiện sẽ ảnh hưởng đến bản gốc.

v = df.to_numpy()
v[0, 0] = -1
 
df
   A  B  C
a -1  4  7
b  2  5  8
c  3  6  9

Nếu bạn cần một bản sao thay thế, hãy sử dụng

v = df.to_numpy()
v[0, 0] = -1
 
df
   A  B  C
a -1  4  7
b  2  5  8
c  3  6  9
6.


Pandas> = 1.0 Cập nhật cho ExtensionTypes

Nếu bạn đang sử dụng Pandas 1.x, rất có thể bạn sẽ xử lý các loại mở rộng hơn rất nhiều. Bạn sẽ phải cẩn thận hơn một chút rằng các loại mở rộng này được chuyển đổi chính xác.

a = pd.array([1, 2, None], dtype="Int64")                                  
a                                                                          


[1, 2, ]
Length: 3, dtype: Int64 

# Wrong
a.to_numpy()                                                               
# array([1, 2, ], dtype=object)  # yuck, objects

# Correct
a.to_numpy(dtype='float', na_value=np.nan)                                 
# array([ 1.,  2., nan])

# Also correct
a.to_numpy(dtype='int', na_value=-1)
# array([ 1,  2, -1])

Điều này được gọi ra trong các tài liệu.


Nếu bạn cần v = df.to_numpy() v[0, 0] = -1 df A B C a -1 4 7 b 2 5 8 c 3 6 9 7 trong kết quả ...

Như thể hiện trong một câu trả lời khác,

v = df.to_numpy()
v[0, 0] = -1
 
df
   A  B  C
a -1  4  7
b  2  5  8
c  3  6  9
8 là một cách tốt để làm điều này.

df.to_records()
# rec.array([('a', 1, 4, 7), ('b', 2, 5, 8), ('c', 3, 6, 9)],
#           dtype=[('index', 'O'), ('A', '

Điều này không thể được thực hiện với

v = df.to_numpy()
v[0, 0] = -1
 
df
   A  B  C
a -1  4  7
b  2  5  8
c  3  6  9
3, thật không may. Tuy nhiên, thay thế, bạn có thể sử dụng
a = pd.array([1, 2, None], dtype="Int64")                                  
a                                                                          


[1, 2, ]
Length: 3, dtype: Int64 

# Wrong
a.to_numpy()                                                               
# array([1, 2, ], dtype=object)  # yuck, objects

# Correct
a.to_numpy(dtype='float', na_value=np.nan)                                 
# array([ 1.,  2., nan])

# Also correct
a.to_numpy(dtype='int', na_value=-1)
# array([ 1,  2, -1])
0:

v = df.reset_index()
np.rec.fromrecords(v, names=v.columns.tolist())
# rec.array([('a', 1, 4, 7), ('b', 2, 5, 8), ('c', 3, 6, 9)],
#           dtype=[('index', '

Hiệu suất khôn ngoan, nó gần giống nhau (thực tế, sử dụng

a = pd.array([1, 2, None], dtype="Int64")                                  
a                                                                          


[1, 2, ]
Length: 3, dtype: Int64 

# Wrong
a.to_numpy()                                                               
# array([1, 2, ], dtype=object)  # yuck, objects

# Correct
a.to_numpy(dtype='float', na_value=np.nan)                                 
# array([ 1.,  2., nan])

# Also correct
a.to_numpy(dtype='int', na_value=-1)
# array([ 1,  2, -1])
1 nhanh hơn một chút).

df2 = pd.concat([df] * 10000)

%timeit df2.to_records()
%%timeit
v = df2.reset_index()
np.rec.fromrecords(v, names=v.columns.tolist())

12.9 ms ± 511 µs per loop (mean ± std. dev. of 7 runs, 100 loops each)
9.56 ms ± 291 µs per loop (mean ± std. dev. of 7 runs, 100 loops each)


Đặt vấn đề để thêm một phương thức mới

df.index.to_numpy()
# array(['a', 'b', 'c'], dtype=object)

df['A'].to_numpy()
#  array([1, 2, 3])
1 (ngoài
df.index.to_numpy()
# array(['a', 'b', 'c'], dtype=object)

df['A'].to_numpy()
#  array([1, 2, 3])
5) đã được thêm vào do các cuộc thảo luận theo hai vấn đề GitHub GH19954 và GH23623.

Cụ thể, các tài liệu đề cập đến lý do:

. Ví dụ: với

a = pd.array([1, 2, None], dtype="Int64")                                  
a                                                                          


[1, 2, ]
Length: 3, dtype: Int64 

# Wrong
a.to_numpy()                                                               
# array([1, 2, ], dtype=object)  # yuck, objects

# Correct
a.to_numpy(dtype='float', na_value=np.nan)                                 
# array([ 1.,  2., nan])

# Also correct
a.to_numpy(dtype='int', na_value=-1)
# array([ 1,  2, -1])
6,
df.index.to_numpy()
# array(['a', 'b', 'c'], dtype=object)

df['A'].to_numpy()
#  array([1, 2, 3])
8 tạo ra một
a = pd.array([1, 2, None], dtype="Int64")                                  
a                                                                          


[1, 2, ]
Length: 3, dtype: Int64 

# Wrong
a.to_numpy()                                                               
# array([1, 2, ], dtype=object)  # yuck, objects

# Correct
a.to_numpy(dtype='float', na_value=np.nan)                                 
# array([ 1.,  2., nan])

# Also correct
a.to_numpy(dtype='int', na_value=-1)
# array([ 1,  2, -1])
8 mới của các đối tượng thời gian mỗi lần. [...]

v = df.to_numpy()
v[0, 0] = -1
 
df
   A  B  C
a -1  4  7
b  2  5  8
c  3  6  9
3 nhằm mục đích cải thiện tính nhất quán của API, đây là một bước chính theo đúng hướng.
df.index.to_numpy()
# array(['a', 'b', 'c'], dtype=object)

df['A'].to_numpy()
#  array([1, 2, 3])
8 sẽ không bị phản đối trong phiên bản hiện tại, nhưng tôi hy vọng điều này có thể xảy ra vào một thời điểm nào đó trong tương lai, vì vậy tôi sẽ mong người dùng di chuyển về API mới hơn, ngay khi bạn có thể.



Phê bình các giải pháp khác

df.to_records()
# rec.array([('a', 1, 4, 7), ('b', 2, 5, 8), ('c', 3, 6, 9)],
#           dtype=[('index', 'O'), ('A', '
1 có hành vi không nhất quán, như đã lưu ý.

df.to_records()
# rec.array([('a', 1, 4, 7), ('b', 2, 5, 8), ('c', 3, 6, 9)],
#           dtype=[('index', 'O'), ('A', '
2 đã lặng lẽ bị loại bỏ trong V1.0 và trước đó không được dùng trong V0.25. Trước đó, nó chỉ đơn giản là một trình bao bọc xung quanh
df.to_records()
# rec.array([('a', 1, 4, 7), ('b', 2, 5, 8), ('c', 3, 6, 9)],
#           dtype=[('index', 'O'), ('A', '
1, vì vậy mọi thứ nói ở trên đều áp dụng.

df.to_records()
# rec.array([('a', 1, 4, 7), ('b', 2, 5, 8), ('c', 3, 6, 9)],
#           dtype=[('index', 'O'), ('A', '
4 đã bị loại bỏ trong V1.0 và trước đó đã được không dùng nữa trong V0.23. Không được dùng!NOT use!

DataFrame có phải là ma trận python không?

DataFrames trong R - Đây là một dạng tổng quát của một ma trận.

Chúng ta có thể chuyển đổi dataFrame thành mảng numpy không?

to_numpy () - Chuyển đổi DataFrame thành mảng numpy.GANDAS DATAFRAME là một cấu trúc dữ liệu dạng bảng có kích thước hai chiều, có khả năng không đồng nhất với các trục được dán nhãn (hàng và cột).Cấu trúc dữ liệu này có thể được chuyển đổi thành Ndarray Numpy với sự trợ giúp của phương thức dataFrame.to_numpy ().This data structure can be converted to NumPy ndarray with the help of the DataFrame. to_numpy() method.

Điều gì xảy ra khi bạn chuyển đổi DataFrame thành Numpy Array?

Đó là nơi biến DataFrame của bạn thành một mảng numpy đến.Biến DataFrame của bạn thành một mảng numpy có nghĩa là loại bỏ các thuộc tính DataFrame và thay đổi dữ liệu của bạn từ bảng sang một mảng (hoặc mảng mảng).removing the DataFrame properties, and changing your data from a table to an array (or array of arrays).

Tôi có thể chuyển đổi một khung dữ liệu trong Python không?

DataFrame - Transpose () hàm Hàm chuyển vị () được sử dụng để chuyển đổi chỉ mục và cột.Phản ánh DataFrame trên đường chéo chính của nó bằng cách viết các hàng dưới dạng các cột và ngược lại.Nếu đúng, dữ liệu cơ bản được sao chép.Mặt khác (mặc định), không có bản sao nào được thực hiện nếu có thể.The transpose() function is used to transpose index and columns. Reflect the DataFrame over its main diagonal by writing rows as columns and vice-versa. If True, the underlying data is copied. Otherwise (default), no copy is made if possible.