Làm cách nào để sắp xếp giảm dần trong pandas python?

Để nhóm khung dữ liệu Pandas, chúng tôi sử dụng groupby(). Để sắp xếp khung dữ liệu được nhóm theo thứ tự giảm dần, hãy sử dụng sort_values(). Phương thức size() được sử dụng để lấy kích thước khung dữ liệu

Để sắp xếp theo thứ tự giảm dần, hãy sử dụng thông tin sau trong sort_values() −

ascending=False

Lúc đầu, hãy tạo một khung dữ liệu gấu trúc -

dataFrame = pd.DataFrame(
   {
      "Car": ['BMW', 'Lexus', 'Audi', 'Mercedes', 'Jaguar', 'Bentley'], "Reg_Price": [1000, 1400, 1000, 900, 1700, 900]
   }
)

Tiếp theo, nhóm theo cột Reg_Price và sắp xếp theo thứ tự giảm dần −

dataFrame.groupby('Reg_Price').size().sort_values(ascending=False)

Thí dụ

Sau đây là mã

import pandas as pd

# dataframe with one of the columns as Reg_Price
dataFrame = pd.DataFrame(
   {
      "Car": ['BMW', 'Lexus', 'Audi', 'Mercedes', 'Jaguar', 'Bentley'],

      "Reg_Price": [1000, 1400, 1000, 900, 1700, 900]
   }
)

print"DataFrame...\n",dataFrame

# group according to Reg_Price column and sort in descending order
print"\nSorted in Descending order...";
print(dataFrame.groupby('Reg_Price').size().sort_values(ascending=False))

đầu ra

Điều này sẽ tạo ra đầu ra sau -

DataFrame...
        Car Reg_Price
0       BMW      1000
1     Lexus      1400
2      Audi      1000
3  Mercedes       900
4    Jaguar      1700
5   Bentley       900

Sorted in Descending order...
Reg_Price
1000    2
900     2
1700    1
1400    1
dtype: int64

Làm cách nào để sắp xếp giảm dần trong pandas python?


Làm cách nào để sắp xếp giảm dần trong pandas python?

Để chỉ định xem phương thức có phải sắp xếp DataFrame theo thứ tự tăng dần hay giảm dần của chỉ mục hay không, bạn có thể đặt đối số boolean có tên ascending thành True hoặc False tương ứng

Khi chỉ mục được sắp xếp, các hàng tương ứng được sắp xếp lại

ví dụ 1. Sắp xếp DataFrame theo chỉ mục theo thứ tự tăng dần

Trong ví dụ này, chúng ta sẽ tạo một khung dữ liệu với một số hàng và lập chỉ mục với một mảng số. Chúng tôi sẽ sắp xếp các hàng của khung dữ liệu này để chỉ mục sẽ theo thứ tự tăng dần

Để sắp xếp chỉ mục theo thứ tự tăng dần, chúng ta gọi phương thức sort_index() với đối số ascending=True như trong chương trình Python sau. Hoặc bạn có thể bỏ qua tham số tăng dần, vì giá trị mặc định cho đối số ascendingTrue

Chương trình Python

import pandas as pd
#create a dataframe
df_1 = pd.DataFrame(
    [['Arjun', 70, 86],
     ['Kiku', 80, 76],
	 ['Mama', 99, 99],
     ['Lini', 79, 92]],
    index = [2, 1, 6, 5],
    columns=['name', 'aptitude', 'cooking'])

print(df_1)

#sort dataframe by index in ascending order
df_1 = df_1.sort_index(ascending=True)

print('\nDataFrame after sorting by index\n')
print(df_1)
Chạy

đầu ra

Chạy chương trình trên. Chúng tôi đã in DataFrame gốc ra bàn điều khiển, tiếp theo là DataFrame được sắp xếp

    name  aptitude  cooking
2  Arjun        70       86
1   Kiku        80       76
6   Mama        99       99
5   Lini        79       92

DataFrame after sorting by index

    name  aptitude  cooking
1   Kiku        80       76
2  Arjun        70       86
5   Lini        79       92
6   Mama        99       99

ví dụ 2. Sắp xếp DataFrame theo chỉ mục theo thứ tự giảm dần

Trong ví dụ này, chúng ta sẽ sắp xếp DataFrame dựa trên thứ tự giảm dần của chỉ mục. Đối với điều đó, chúng ta sẽ chuyển ascending=False cho phương thức sort_index()

Chương trình Python

import pandas as pd
#create a dataframe
df_1 = pd.DataFrame(
    [['Arjun', 70, 86],
     ['Kiku', 80, 76],
	 ['Mama', 99, 99],
     ['Lini', 79, 92]],
    index = [2, 1, 6, 5],
    columns=['name', 'aptitude', 'cooking'])

print(df_1)

#sort dataframe by index in descending order
df_1 = df_1.sort_index(ascending=False)

print('\nDataFrame after sorting by index\n')
print(df_1)
Chạy

đầu ra

Chạy chương trình. Khung dữ liệu được sắp xếp có chỉ mục [6 5 5 1] theo thứ tự giảm dần

________số 8_______

Tóm lược

Trong hướng dẫn về Ví dụ Python này, chúng ta đã học cách sắp xếp Khung dữ liệu Pandas theo chỉ mục theo thứ tự tăng dần và giảm dần

Bạn có thể sắp xếp theo giá trị cột trong DataFrame của gấu trúc bằng phương thức sort_values(). Để chỉ định thứ tự, bạn phải sử dụng thuộc tính boolean tăng dần; . Theo mặc định, nó được đặt thành True

Trong bài viết này, tôi sẽ giải thích cách sắp xếp DataFrame của gấu trúc theo các giá trị cột bằng cách sử dụng thứ tự tăng dần, thứ tự giảm dần, nhiều cột, đẩy NaN lên đầu tiên, đặt lại chỉ mục trên kết quả sắp xếp

1. Ví dụ nhanh về Pandas Sắp xếp theo giá trị cột

Nếu bạn đang vội, dưới đây là một số ví dụ nhanh về cách sắp xếp DataFrame của gấu trúc theo giá trị cột


# Below are quick example

# Default sort
df2 = df.sort_values('Courses')

# Sort by Descending
df2 = df.sort_values('Courses', ascending=False)

# Sory by multiple columns
df2 = df.sort_values(by=['Courses','Fee'])

# Sort and ignore index
df2 = df.sort_values(by='Courses', ignore_index=True)

# Sory by putting NaN at first
df2 = df.sort_values(by=['Courses','Fee'], na_position='first')

# Sort by function
df2 = df.sort_values(by='Courses', key=lambda col: col.str.lower())

# Sort by heap algorithm
df2 = df.sort_values(by='Courses', kind='heap')

Hãy tạo một DataFrame với một vài hàng và cột và thực hiện các ví dụ này. Khung dữ liệu của chúng tôi chứa các tên cột


import pandas as pd
technologies = ({
    'Courses':["Spark","Hadoop","pandas","Java","Pyspark"],
    'Fee' :[20000,25000,30000,22000,26000],
    'Duration':['30days','40days','35days','60days','50days'],
    'Discount':[1000,2500,1500,1200,3000]
               })
df = pd.DataFrame(technologies, index = ['r1','r2','r3','r4','r5'])
print(df)
9,

    Courses    Fee Duration  Discount
r1    Spark  20000   30days      1000
r2   Hadoop  25000   40days      2500
r3   pandas  30000   35days      1500
r4     Java  22000   60days      1200
r5  Pyspark  26000   50days      3000
0,

    Courses    Fee Duration  Discount
r1    Spark  20000   30days      1000
r2   Hadoop  25000   40days      2500
r3   pandas  30000   35days      1500
r4     Java  22000   60days      1200
r5  Pyspark  26000   50days      3000
1 và

    Courses    Fee Duration  Discount
r1    Spark  20000   30days      1000
r2   Hadoop  25000   40days      2500
r3   pandas  30000   35days      1500
r4     Java  22000   60days      1200
r5  Pyspark  26000   50days      3000
2


import pandas as pd
technologies = ({
    'Courses':["Spark","Hadoop","pandas","Java","Pyspark"],
    'Fee' :[20000,25000,30000,22000,26000],
    'Duration':['30days','40days','35days','60days','50days'],
    'Discount':[1000,2500,1500,1200,3000]
               })
df = pd.DataFrame(technologies, index = ['r1','r2','r3','r4','r5'])
print(df)

Sản lượng dưới sản lượng


    Courses    Fee Duration  Discount
r1    Spark  20000   30days      1000
r2   Hadoop  25000   40days      2500
r3   pandas  30000   35days      1500
r4     Java  22000   60days      1200
r5  Pyspark  26000   50days      3000

2. Sắp xếp khung dữ liệu theo giá trị cột

Bằng cách sử dụng df. sort_values() bạn có thể sắp xếp DataFrame của gấu trúc theo thứ tự tăng dần hoặc giảm dần. Khi không chỉ định thứ tự, theo mặc định, nó sẽ theo thứ tự tăng dần.


# Default sort
df2 = df.sort_values('Courses')
print(df2)

Sản lượng dưới sản lượng


   Courses    Fee Duration  Discount
r2    Java  22000   60days      1200
r1   Spark  20000   30days      1000
r4   Spark  26000   50days      3000
r5  pandas  30000   35days      1500
r3     NaN  25000   40days      2500

Trong trường hợp bạn muốn cập nhật DataFrame hiện có, hãy sử dụng


    Courses    Fee Duration  Discount
r1    Spark  20000   30days      1000
r2   Hadoop  25000   40days      2500
r3   pandas  30000   35days      1500
r4     Java  22000   60days      1200
r5  Pyspark  26000   50days      3000
3


# Default sort with inplace=True
df.sort_values('Courses', inplace=True)
print(df2)

Mang lại sản lượng tương tự như trên

3. Pandas Sắp xếp theo thứ tự giảm dần

Nếu bạn muốn sắp xếp DataFrame của gấu trúc theo thứ tự giảm dần, hãy sử dụng


    Courses    Fee Duration  Discount
r1    Spark  20000   30days      1000
r2   Hadoop  25000   40days      2500
r3   pandas  30000   35days      1500
r4     Java  22000   60days      1200
r5  Pyspark  26000   50days      3000
4. Bạn cũng có thể chỉ định các thứ tự sắp xếp khác nhau cho từng nhãn


# Sort by Descending
df2 = df.sort_values('Courses', ascending=False)
print(df2)

Sản lượng dưới sản lượng


   Courses    Fee Duration  Discount
r5  pandas  30000   35days      1500
r1   Spark  20000   30days      1000
r4   Spark  26000   50days      3000
r2    Java  22000   60days      1200
r3     NaN  25000   40days      2500

4. Sắp xếp theo nhiều cột


    Courses    Fee Duration  Discount
r1    Spark  20000   30days      1000
r2   Hadoop  25000   40days      2500
r3   pandas  30000   35days      1500
r4     Java  22000   60days      1200
r5  Pyspark  26000   50days      3000
5 cũng hỗ trợ sắp xếp trên nhiều cột cùng một lúc, chuyển danh sách tên cột cho by param để sắp xếp DataFrame theo nhiều cột


# Sory by multiple columns
df2 = df.sort_values(by=['Courses','Fee'])
print(df2)

Sản lượng dưới sản lượng


   Courses    Fee Duration  Discount
r2    Java  22000   60days      1200
r1   Spark  20000   30days      1000
r4   Spark  26000   50days      3000
r5  pandas  30000   35days      1500
r3     NaN  25000   40days      2500

5. Đặt lại chỉ mục trong khi sắp xếp

Đôi khi bạn có thể cần đặt chỉ mục mới cho kết quả sắp xếp, bạn có thể thực hiện việc này trong khi sắp xếp bằng cách sử dụng


    Courses    Fee Duration  Discount
r1    Spark  20000   30days      1000
r2   Hadoop  25000   40days      2500
r3   pandas  30000   35days      1500
r4     Java  22000   60days      1200
r5  Pyspark  26000   50days      3000
6 hoặc bằng cách gọi pandas. Khung dữ liệu. reset_index() trên DataFrame đã sắp xếp


import pandas as pd
technologies = ({
    'Courses':["Spark","Hadoop","pandas","Java","Pyspark"],
    'Fee' :[20000,25000,30000,22000,26000],
    'Duration':['30days','40days','35days','60days','50days'],
    'Discount':[1000,2500,1500,1200,3000]
               })
df = pd.DataFrame(technologies, index = ['r1','r2','r3','r4','r5'])
print(df)
0_______9_______1

6. Sắp xếp theo NaN lúc đầu

Theo mặc định, NaN trên các giá trị được đẩy ở dưới cùng của DataFrame, bạn có thể đẩy nó ngay từ đầu bằng cách sử dụng tham số


    Courses    Fee Duration  Discount
r1    Spark  20000   30days      1000
r2   Hadoop  25000   40days      2500
r3   pandas  30000   35days      1500
r4     Java  22000   60days      1200
r5  Pyspark  26000   50days      3000
7. Nếu bạn không muốn các giá trị NaN, hãy sử dụng dropna() để thả các hàng bằng NaN


import pandas as pd
technologies = ({
    'Courses':["Spark","Hadoop","pandas","Java","Pyspark"],
    'Fee' :[20000,25000,30000,22000,26000],
    'Duration':['30days','40days','35days','60days','50days'],
    'Discount':[1000,2500,1500,1200,3000]
               })
df = pd.DataFrame(technologies, index = ['r1','r2','r3','r4','r5'])
print(df)
2

Sản lượng dưới sản lượng


import pandas as pd
technologies = ({
    'Courses':["Spark","Hadoop","pandas","Java","Pyspark"],
    'Fee' :[20000,25000,30000,22000,26000],
    'Duration':['30days','40days','35days','60days','50days'],
    'Discount':[1000,2500,1500,1200,3000]
               })
df = pd.DataFrame(technologies, index = ['r1','r2','r3','r4','r5'])
print(df)
3

7. Pandas sắp xếp cột theo chức năng tùy chỉnh

Trong trường hợp bạn muốn áp dụng một chức năng tùy chỉnh hoặc bất kỳ chức năng hiện có nào để sắp xếp, bạn có thể sử dụng key param. Ví dụ dưới đây chuyển đổi


import pandas as pd
technologies = ({
    'Courses':["Spark","Hadoop","pandas","Java","Pyspark"],
    'Fee' :[20000,25000,30000,22000,26000],
    'Duration':['30days','40days','35days','60days','50days'],
    'Discount':[1000,2500,1500,1200,3000]
               })
df = pd.DataFrame(technologies, index = ['r1','r2','r3','r4','r5'])
print(df)
9 thành chữ thường và thực hiện sắp xếp


import pandas as pd
technologies = ({
    'Courses':["Spark","Hadoop","pandas","Java","Pyspark"],
    'Fee' :[20000,25000,30000,22000,26000],
    'Duration':['30days','40days','35days','60days','50days'],
    'Discount':[1000,2500,1500,1200,3000]
               })
df = pd.DataFrame(technologies, index = ['r1','r2','r3','r4','r5'])
print(df)
4

Sản lượng dưới sản lượng


import pandas as pd
technologies = ({
    'Courses':["Spark","Hadoop","pandas","Java","Pyspark"],
    'Fee' :[20000,25000,30000,22000,26000],
    'Duration':['30days','40days','35days','60days','50days'],
    'Discount':[1000,2500,1500,1200,3000]
               })
df = pd.DataFrame(technologies, index = ['r1','r2','r3','r4','r5'])
print(df)
5

Cuối cùng, bạn cũng có thể sắp xếp bằng cách sử dụng các thuật toán sắp xếp khác nhau. Tôi sẽ để điều này cho bạn khám phá

8. Ví dụ đầy đủ về pandas Sắp xếp theo giá trị cột


import pandas as pd
technologies = ({
    'Courses':["Spark","Hadoop","pandas","Java","Pyspark"],
    'Fee' :[20000,25000,30000,22000,26000],
    'Duration':['30days','40days','35days','60days','50days'],
    'Discount':[1000,2500,1500,1200,3000]
               })
df = pd.DataFrame(technologies, index = ['r1','r2','r3','r4','r5'])
print(df)
6

Phần kết luận

Trong bài viết này, bạn đã học cách sắp xếp DataFrame theo giá trị cột bằng Dataframe. sort_values() theo thứ tự tăng dần hoặc giảm dần. Ngoài ra, đã học cách sử dụng các chức năng tùy chỉnh bằng biểu thức lambda