Hướng dẫn dùng pandas shuffle python

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

  • 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ủ Đề