Hướng dẫn dùng np.shuffle python

Hàm shuffle() trong Python sắp xếp các item trong list một cách ngẫu nhiên.

Cú pháp

Cú pháp của shuffle() trong Python:

import random random.shuffle(lst)

Ghi chú: Hàm này không có thể truy cập trực tiếp, vì thế chúng ta cần import random module và sau đó chúng ta cần gọi hàm này bởi sử dụng đối tượng random.

Chi tiết về tham số:

  • lst: Đây có thể là một list hoặc tuple.

Ví dụ sau minh họa cách sử dụng của hàm shuffle() trong Python.

import random list = [20, 5, 10, 15, 50]; random.shuffle(list) print ("List sau khi bị xáo trộn là: ", list) random.shuffle(list) print ("List sau khi bị xáo trộn là: ", list)

Chạy chương trình Python trên sẽ cho kết quả:

List sau khi bị xáo trộn là: [10, 15, 50, 20, 5] List sau khi bị xáo trộn là: [20, 5, 10, 50, 15]

Hoán vị ngẫu nhiên trong Numpy

Nội Dung

  • 1. Hoán vị ngẫu nhiên là gì?
  • 2. Xáo trộn phần tử trong mảng
  • 3. Tạo hoán vị phần tử trong mảng

Trong toán học, hoán vị là mỗi cách sắp xếp n phần tử của tập hợp A theo một thứ tự nào đó được gọi là một hoán vị của n phần tử trong tập A.

Trong mảng Numpy, một hoán vị đề cập đến một sự sắp xếp của các phần tử thuộc trong mảng.Ví dụ [3, 2, 1] là hoán vị của [1, 2, 3] và ngược lại.

Mô-đun Numpy cung cấp hai hàm thường được sử dụng cho hoán vị phần tử trong mảng Numpy đó là:

  • Hàm shuffle() – xáo trộn các phần tử trong mảng
  • Hàm permutation() – hoán vị các phần tử trong mảng

2. Xáo trộn phần tử trong mảng

Việc xáo trộn các phần tử trong mảng có nghĩa là thực hiện đổi lại vị trí của các phần tử ban đầu thành các vị trí khác ngẫu nhiên trong mảng. Để làm được việc này, chúng ta cần sử dụng hàm random.shuffle() – hàm này nhận vào một mảng ban đầu và thực hiện xáo trộn các vị trí phần tử trong mảng.

Ví dụ dưới đây, sử dụng hàm random.shuffle() để xáo trộn các vị trí phần tử có trong mảng 1 chiều như sau:

from numpy import random import numpy as np arr = np.array([1, 2, 3, 4, 5]) random.shuffle(arr) print(arr)

Kết quả:

[4 2 5 3 1]

Lưu ý: Khi thực thi lại chương trình, một mảng với các phần tử tại ví trị mới sẽ được tạo ra.

Tương tự như mảng 1 chiều, ta cũng có thể sử dụng hàm random.shuffle() để xáo trộn vị trí phần tử có trong mảng 2 chiều như sau:

from numpy import random import numpy as np arr = np.array([ [1, 2, 3], [4, 5, 0], [8, 2, 6], [1, 7, 4], [5, 2, 9] ]) random.shuffle(arr) print(arr)

Kết quả:

[[5 2 9] [4 5 0] [1 7 4] [1 2 3] [8 2 6]]

Lưu ý: Vì trong mảng 2 chiều, các phần tử sẽ là mảng 1 chiều. Vậy nên, khi xáo trộn các vị trí phần tử có trong mảng 2 chiều thì việc này thực chất là xáo trộn các mảng 1 chiều thuộc trong mảng 2 chiều ban đầu.

3. Tạo hoán vị phần tử trong mảng

Chúng ta có thể tạo ra một mảng hoán vị từ một mảng ban đầu thông qua hàm random.permutation() – hàm này truyền vào một mảng cần hoán vị và thực hiện hoán vị ngẫu nhiên một dãy hoặc trả về một dãy đã hoán vị. 

Nếu mảng nhập vào hàm random.permutation() là một mảng nhiều chiều, nó chỉ được hoán vị dọc trục mà ta chỉ định cho nó (trục dọc hoặc trục ngang)

Ví dụ dưới đây, tạo hoán vị ngẫu nhiên các phần tử của mảng 1 chiều bằng cách sử dụng hàm random.permutation() như sau:

from numpy import random import numpy as np arr = np.array([1, 2, 3, 4, 5]) print(random.permutation(arr))

Kết quả:

[1 5 3 2 4]

Ví dụ tiếp theo, tạo hoán vị ngẫu nhiên các phần tử trong mảng 2 chiều dựa theo trục dọc bằng cách sử dụng hàm random.permutation() như sau:

from numpy import random import numpy as np arr = np.array([ [1, 2, 3], [4, 5, 0], [8, 2, 6], [1, 7, 4], [5, 2, 9] ]) print(random.permutation(arr))

Kết quả:

[[4 5 0] [8 2 6] [1 2 3] [5 2 9] [1 7 4]]

Bằng cách sử dụng pandas.DataFrame.sample() bạn có thể xáo trộn các hàng DataFrame một cách ngẫu nhiên, nếu bạn đang sử dụng NumPy bạn có thể dùng permutation() phương pháp thay đổi thứ tự của các hàng còn được gọi là xáo trộn. Python cũng có các gói khác như sklearn có một phương pháp shuffle() để xáo trộn thứ tự các hàng trong DataFrame

Nội dung chính

  • 1. Tạo DataFrame với Từ điển danh sách
  • 3. Pandas Shuffle Rows bằng cách thiết lập chỉ mục mới
  • 4. Sử dụng numpy.random.shuffle để thay đổi thứ tự của hàng
  • 5. Sử dụng hoán vị () Từ numpy để lấy mẫu ngẫu nhiên
  • 6. Sử dụng sklearn shuffle () để sắp xếp lại các hàng DataFrame
  • 7. Sử dụng DataFrame.apply () & numpy.random.permutation () để Shuffle
  • 8. Pandas DataFrame Shuffle / Hoán vị các hàng bằng cách sử dụng hàm Lambda
  • 9. Trộn dữ liệu ngẫu nhiên theo hàng và cột
  • 10. Hoàn thành ví dụ về xáo trộn các hàng DataFrame
  • Sự kết luận
  • Bạn cũng có thể thích
  • Người giới thiệu

  • 1. Tạo DataFrame với Từ điển danh sách
  • 2. Pandas Shuffle DataFrame Rows
  • 3. Pandas Shuffle Rows bằng cách thiết lập chỉ mục mới
  • 4. Sử dụng numpy.random.shuffle để thay đổi thứ tự của hàng
  • 5. Sử dụng hoán vị () Từ numpy để lấy mẫu ngẫu nhiên
  • 6. Sử dụng sklearn shuffle () để sắp xếp lại các hàng DataFrame
  • 7. Sử dụng DataFrame.apply () & numpy.random.permutation () để Shuffle
  • 8. Pandas DataFrame Shuffle / Hoán vị các hàng bằng cách sử dụng hàm Lambda
  • 9. Trộn dữ liệu ngẫu nhiên theo hàng và cột
  • 10. Hoàn thành ví dụ về xáo trộn các hàng DataFrame
    • Sự kết luận
    • Bạn cũng có thể thích
    • Người giới thiệu

1. Tạo DataFrame với Từ điển danh sách

Hãy tạo một Pandas DataFrame với từ điển danh sách, tên các cột của gấu trúc DataFrame Courses, Fee, Duration, Discount.

import pandas as pd technologies = { 'Courses':["Spark","PySpark","Hadoop","Python","pandas","Oracle","Java"], 'Fee' :[20000,25000,26000,22000,24000,21000,22000], 'Duration':['30day','40days','35days','40days','60days','50days','55days'], 'Discount':[1000,2300,1500,1200,2500,2100,2000] } df = pd.DataFrame(technologies) print(df)

Sản lượng thấp hơn sản lượng.

Courses Fee Duration Discount 0 Spark 20000 30day 1000 1 PySpark 25000 40days 2300 2 Hadoop 26000 35days 1500 3 Python 22000 40days 1200 4 pandas 24000 60days 2500 5 Oracle 21000 50days 2100 6 Java 22000 55days 2000

Sử dụng pandas.DataFrame.sample(frac=1) phương pháp xáo trộn thứ tự của các hàng. Các frac đối số chỉ định phần hàng sẽ trả về trong DataFrame mẫu ngẫu nhiên. frac=None chỉ trả về 1 bản ghi ngẫu nhiên. frac=.5 trả về ngẫu nhiên 50% số hàng.

Lưu ý rằng phương thức sample () theo mặc định trả về một DataFrame mới sau khi xáo trộn.

# shuffle the DataFrame rows & return all rows df1 = df.sample(frac = 1) print(df1)

Sản lượng thấp hơn sản lượng.

Courses Fee Duration Discount 0 Spark 20000 30day 1000 6 Java 22000 55days 2000 1 PySpark 25000 40days 2300 5 Oracle 21000 50days 2100 2 Hadoop 26000 35days 1500 3 Python 22000 40days 1200 4 pandas 24000 60days 2500

Nếu bạn muốn lấy n hàng ngẫu nhiên, hãy sử dụng df.sample(n=2).

3. Pandas Shuffle Rows bằng cách thiết lập chỉ mục mới

Như bạn thấy ở trên, Chỉ mục cũng xáo trộn cùng với các hàng. Nếu bạn muốn một Chỉ mục mới bắt đầu từ 0 bằng cách giữ cho Chỉ mục xáo trộn nguyên trạng reset_index().

# Create a new Index starting from zero df1 = df.sample(frac = 1).reset_index() print(df1)

Sản lượng thấp hơn sản lượng.

index Courses Fee Duration Discount 0 6 Java 22000 55days 2000 1 2 Hadoop 26000 35days 1500 2 4 pandas 24000 60days 2500 3 3 Python 22000 40days 1200 4 5 Oracle 21000 50days 2100 5 0 Spark 20000 30day 1000 6 1 PySpark 25000 40days 2300

Trong trường hợp nếu bạn không muốn chỉ mục xáo trộn thì hãy sử dụng .reset_index(drop=True)

# Drop shuffle Index df1 = df.sample(frac = 1).reset_index(drop=True) print(df1)

4. Sử dụng numpy.random.shuffle để thay đổi thứ tự của hàng

Bạn có thể dùng numpy.random.shuffle() để thay đổi thứ tự của các hàng DataFrame. Đảm bảo bạn nhập NumPy trước khi sử dụng phương pháp này.

# using NumPy import numpy as np np.random.shuffle(DataFrame.values)

5. Sử dụng hoán vị () Từ numpy để lấy mẫu ngẫu nhiên

Chúng tôi cũng có thể sử dụng NumPy.random.permutation() phương thức để xáo trộn các hàng Pandas DataFrame. Các chỉ số xáo trộn được sử dụng để chọn các hàng bằng cách sử dụng .iloc[] phương pháp. Bạn có thể xáo trộn các hàng của DataFrame bằng cách lập chỉ mục với chỉ mục xáo trộn. Ví dụ, df.iloc[np.random.permutation(df.index)].reset_index(drop=True).

# Using numpy permutation() method to shuffle DataFrame rows df1 = df.iloc[np.random.permutation(df.index)].reset_index(drop=True) print(df1)

Sản lượng thấp hơn sản lượng.

Courses Fee Duration Discount 0 pandas 24000 60days 2500 1 Spark 20000 30day 1000 2 Java 22000 55days 2000 3 Oracle 21000 50days 2100 4 Python 22000 40days 1200 5 PySpark 25000 40days 2300 6 Hadoop 26000 35days 1500

6. Sử dụng sklearn shuffle () để sắp xếp lại các hàng DataFrame

Bạn cũng có thể dùng sklearn.utils.shuffle() phương pháp xáo trộn các hàng DataFrame của gấu trúc. Để sử dụng sklearn, bạn cần cài đặt nó bằng PIP (Python Package Installer). Ngoài ra, để sử dụng nó trong một chương trình, hãy đảm bảo bạn nhập nó.

# Using sklearn to shuffle rows from sklearn.utils import shuffle df = shuffle(df)

7. Sử dụng DataFrame.apply () & numpy.random.permutation () để Shuffle

Bạn cũng có thể dùng df.apply(np.random.permutation,axis=1). Sản lượng dưới đầu ra làm xáo trộn các hàng, dtype:object.

# Using apply() method to shuffle the DataFrame rows import numpy as np df1 = df.apply(np.random.permutation, axis=1) print(df1)

Sản lượng thấp hơn sản lượng.

0 [30day, Spark, 1000, 20000] 1 [40days, PySpark, 25000, 2300] 2 [1500, Hadoop, 26000, 35days] 3 [40days, 1200, Python, 22000] 4 [60days, pandas, 2500, 24000] 5 [2100, 21000, 50days, Oracle] 6 [2000, Java, 22000, 55days] dtype: object

8. Pandas DataFrame Shuffle / Hoán vị các hàng bằng cách sử dụng hàm Lambda

Sử dụng df.apply(lambda x: x.sample(frac=1).values để lấy mẫu độc lập trên mỗi cột. Sử dụng áp dụng để lặp lại từng cột và .value để có được một mảng NumPy. frac=1 tất cả các hàng của DataFrame.

# Using lambda method to Shuffle/permutating DataFrame rows df2 = df.apply(lambda x: x.sample(frac=1).values) print(df2)

Sản lượng thấp hơn sản lượng.

Courses Fee Duration Discount 0 Oracle 20000 40days 1000 1 Hadoop 21000 60days 2300 2 pandas 26000 40days 1500 3 PySpark 24000 30day 1200 4 Spark 22000 35days 2000 5 Java 22000 50days 2500 6 Python 25000 55days 2100

9. Trộn dữ liệu ngẫu nhiên theo hàng và cột

Bạn có thể dùng df.sample(frac=1, axis=1).sample(frac=1).reset_index(drop=True) để xáo trộn các hàng và cột một cách ngẫu nhiên. DataFrame mong muốn của bạn trông hoàn toàn ngẫu nhiên. Tôi thực sự không biết trường hợp sử dụng của điều này nhưng tôi muốn đề cập đến nó vì điều này có thể thực hiện được với phương thức sample ().

# Using sample() method to shuffle DataFrame rows and columns df2 = df.sample(frac=1, axis=1).sample(frac=1).reset_index(drop=True) print(df2)

Sản lượng thấp hơn sản lượng.

Duration Fee Discount Courses 0 60days 24000 2500 pandas 1 55days 22000 2000 Java 2 40days 25000 2300 PySpark 3 40days 22000 1200 Python 4 35days 26000 1500 Hadoop 5 50days 21000 2100 Oracle 6 30day 20000 1000 Spark

10. Hoàn thành ví dụ về xáo trộn các hàng DataFrame

import pandas as pd technologies = { 'Courses':["Spark","PySpark","Hadoop","Python","pandas","Oracle","Java"], 'Fee' :[20000,25000,26000,22000,24000,21000,22000], 'Duration':['30day','40days','35days', '40days','60days','50days','55days'], 'Discount':[1000,2300,1500,1200,2500,2100,2000] } df = pd.DataFrame(technologies) print(df) # shuffle the DataFrame rows & return all rows df1 = df.sample(frac = 1) print(df1) # Create a new Index starting from zero df1 = df.sample(frac = 1).reset_index() print(df1) # using NumPy import numpy as np np.random.shuffle(DataFrame.values) # Using numpy permutation() method to shuffle DataFrame rows df1 = df.iloc[np.random.permutation(df.index)].reset_index(drop=True) print(df1) # Using sklearn to shuffle rows from sklearn.utils import shuffle df = shuffle(df) # Using apply() method to shuffle the DataFrame rows import numpy as np df1 = df.apply(np.random.permutation, axis=1) print(df1) # Using lambda method to Shuffle/permutating DataFrame rows df2 = df.apply(lambda x: x.sample(frac=1).values) print(df2) # Using sample() method to shuffle DataFrame rows and columns df2 = df.sample(frac=1, axis=1).sample(frac=1).reset_index(drop=True) print(df2)

Sự kết luận

Trong bài viết này, bạn đã học cách xáo trộn các hàng Pandas DataFrame bằng cách sử dụng các phương pháp khác nhau DataFrame.sample(), DataFrame.apply(), DataFrame.iloc[], hàm lambda. Ngoài ra, bạn đã học cách xáo trộn các hàng Pandas DataFrame bằng cách sử dụng NumPy.random.permutation()sklearn.utils.shuffle() các phương pháp.

Học vui vẻ !!

Bạn cũng có thể thích

Người giới thiệu

Chủ đề