Rumah >pembangunan bahagian belakang >Tutorial Python >Didedahkan: Penjelasan terperinci tentang teknik panda untuk menyusun mengikut syarat tertentu

Didedahkan: Penjelasan terperinci tentang teknik panda untuk menyusun mengikut syarat tertentu

WBOY
WBOYasal
2024-01-24 10:36:08700semak imbas

Didedahkan: Penjelasan terperinci tentang teknik panda untuk menyusun mengikut syarat tertentu

Kemahiran menyusun panda didedahkan: Cara mengisih mengikut syarat tertentu memerlukan contoh kod khusus

Dalam proses pemprosesan dan analisis data, pengisihan adalah operasi yang sangat biasa. Pustaka Pandas ialah salah satu alat yang berkuasa untuk analisis data dalam Python Ia menyediakan fungsi pengisihan yang kaya yang boleh mengisih data mengikut keadaan tertentu. Artikel ini akan memperkenalkan beberapa teknik pengisihan yang biasa digunakan dan memberikan contoh kod khusus.

1. Isih mengikut satu lajur

Mula-mula, mari lihat cara mengisih mengikut satu lajur. Fungsi sort_values() dalam Pandas boleh mengisih objek DataFrame atau Series. Di bawah ialah contoh set data, kami akan mengisih mengikut lajur "skor" dalam tertib menurun: sort_values()函数可以实现对DataFrame或者Series对象进行排序。下面是一个示例数据集,我们将按照"score"列进行降序排序:

import pandas as pd

data = {'name': ['Alice', 'Bob', 'Tom', 'Jerry'],
        'score': [90, 80, 95, 85],
        'age': [25, 30, 27, 23]}

df = pd.DataFrame(data)
df_sorted = df.sort_values(by='score', ascending=False)

print(df_sorted)

输出结果:

   name  score  age
2   Tom     95   27
0  Alice     90   25
3  Jerry     85   23
1    Bob     80   30

在上述代码中,我们使用sort_values()函数,并将参数by设置为要排序的列名。另外,ascending=False表示降序排序,若要进行升序排序,则设置为ascending=True

二、按照多列排序

除了单列排序,我们还可以按照多列进行排序。当存在多个排序条件时,可以使用sort_values()函数的by参数传入一个包含多个列名的列表。下面的示例将按照"score"列进行降序排序,若"score"列相同,则按照"age"列进行升序排序:

import pandas as pd

data = {'name': ['Alice', 'Bob', 'Tom', 'Jerry'],
        'score': [90, 80, 95, 85],
        'age': [25, 30, 27, 23]}

df = pd.DataFrame(data)
df_sorted = df.sort_values(by=['score', 'age'], ascending=[False, True])

print(df_sorted)

输出结果:

   name  score  age
2   Tom     95   27
0  Alice     90   25
3  Jerry     85   23
1    Bob     80   30

在上述代码中,我们传入了一个包含两个元素的列表作为by参数,分别对应两个排序条件。同时,我们可以通过传入一个布尔值的列表来设置每个排序条件的排序顺序。

三、按照索引排序

除了按照列进行排序,我们还可以按照索引进行排序。Pandas中的sort_index()函数可以实现索引排序。下面是一个示例:

import pandas as pd

data = {'name': ['Alice', 'Bob', 'Tom', 'Jerry'],
        'score': [90, 80, 95, 85],
        'age': [25, 30, 27, 23]}

df = pd.DataFrame(data)
df_sorted = df.sort_index(ascending=False)

print(df_sorted)

输出结果:

   name  score  age
3  Jerry     85   23
2    Tom     95   27
1    Bob     80   30
0  Alice     90   25

在上述代码中,我们通过调用sort_index()函数对索引进行排序。参数ascending=False表示降序排序,若要进行升序排序,则设置为ascending=True

四、自定义排序函数

有时候,我们需要按照自定义的函数进行排序。Pandas中的sort_values()函数提供了参数key,可以传入一个函数用于排序。下面是一个示例:

import pandas as pd

data = {'name': ['Alice', 'Bob', 'Tom', 'Jerry'],
        'score': [90, 80, 95, 85],
        'age': [25, 30, 27, 23]}

df = pd.DataFrame(data)

# 自定义排序函数,按照年龄和成绩之和进行排序
def custom_sort(row):
    return row['age'] + row['score']

df_sorted = df.sort_values(by='', key=custom_sort, ascending=False)

print(df_sorted)

输出结果:

   name  score  age
2   Tom     95   27
3  Jerry     85   23
0  Alice     90   25
1    Bob     80   30

在上述代码中,我们自定义了一个排序函数custom_sort(),并将其传入sort_values()函数的keyrrreee

Hasil keluaran:

rrreee

Dalam kod di atas, kami menggunakan fungsi sort_values() dan lulus parameter by ditetapkan kepada nama lajur untuk diisih. Selain itu, ascending=False bermaksud pengisihan menurun Jika anda ingin mengisih dalam tertib menaik, tetapkannya kepada ascending=True.

2. Isih mengikut berbilang lajur🎜🎜Selain mengisih mengikut satu lajur, kita juga boleh mengisih mengikut berbilang lajur. Apabila terdapat berbilang syarat pengisihan, anda boleh menggunakan parameter by bagi fungsi sort_values() untuk menghantar dalam senarai yang mengandungi berbilang nama lajur. Contoh berikut akan diisih mengikut tertib menurun mengikut lajur "skor" Jika lajur "skor" adalah sama, kemudian diisih dalam tertib menaik mengikut lajur "umur": 🎜rrreee🎜Hasil keluaran: 🎜rrreee🎜Dalam. kod di atas, kami hantar dalam mesej yang mengandungi Senarai dua elemen digunakan sebagai parameter oleh, sepadan dengan dua syarat pengisihan masing-masing. Pada masa yang sama, kita boleh menetapkan susunan isihan bagi setiap syarat isihan dengan menghantar senarai nilai Boolean. 🎜🎜3. Isih mengikut indeks🎜🎜Selain menyusun mengikut lajur, kita juga boleh mengisih mengikut indeks. Fungsi sort_index() dalam Pandas boleh melaksanakan pengisihan indeks. Berikut ialah contoh: 🎜rrreee🎜Hasil keluaran: 🎜rrreee🎜Dalam kod di atas, kami mengisih indeks dengan memanggil fungsi sort_index(). Parameter ascending=False bermaksud pengisihan menurun Jika anda ingin mengisih dalam tertib menaik, tetapkannya kepada ascending=True. 🎜🎜4. Fungsi pengisihan tersuai🎜🎜Kadangkala, kita perlu menyusun mengikut fungsi tersuai. Fungsi sort_values() dalam Pandas menyediakan parameter key, yang boleh dihantar dalam fungsi untuk mengisih. Berikut ialah contoh: 🎜rrreee🎜Hasil keluaran: 🎜rrreee🎜Dalam kod di atas, kami memperibadikan fungsi pengisihan custom_sort() dan menghantarnya ke sort_values() dalam <code>kunci parameter kod> fungsi. Fungsi ini membandingkan saiz berdasarkan jumlah lajur "umur" dan "skor" baris input. 🎜🎜Ringkasan: 🎜🎜Artikel ini memperkenalkan beberapa aspek teknik pengisihan Panda: mengisih mengikut lajur tunggal, mengisih mengikut berbilang lajur, mengisih mengikut indeks dan fungsi pengisihan tersuai. Penggunaan fleksibel fungsi pengisihan ini memudahkan untuk mengisih data mengikut keadaan tertentu. Saya harap kod sampel dalam artikel ini akan membantu semua orang dalam amalan. 🎜

Atas ialah kandungan terperinci Didedahkan: Penjelasan terperinci tentang teknik panda untuk menyusun mengikut syarat tertentu. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn