>  기사  >  백엔드 개발  >  공개: 특정 조건에 따라 정렬하는 팬더 기술에 대한 자세한 설명

공개: 특정 조건에 따라 정렬하는 팬더 기술에 대한 자세한 설명

WBOY
WBOY원래의
2024-01-24 10:36:08679검색

공개: 특정 조건에 따라 정렬하는 팬더 기술에 대한 자세한 설명

Pandas 정렬 기술 공개: 특정 조건에 따라 정렬하려면 특정 코드 예제가 필요합니다.

데이터 처리 및 분석 과정에서 정렬은 매우 일반적인 작업입니다. Pandas 라이브러리는 Python의 데이터 분석을 위한 강력한 도구 중 하나이며 특정 조건에 따라 데이터를 정렬할 수 있는 풍부한 정렬 기능을 제공합니다. 이 기사에서는 일반적으로 사용되는 몇 가지 정렬 기술을 소개하고 특정 코드 예제를 제공합니다.

1. 단일 열로 정렬

먼저 단일 열로 정렬하는 방법을 살펴보겠습니다. Pandas의 sort_values() 함수는 DataFrame 또는 Series 개체를 정렬할 수 있습니다. 다음은 데이터 세트의 예입니다. "점수" 열을 기준으로 내림차순으로 정렬합니다. 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

출력 결과:

rrreee

위 코드에서는 sort_values() 함수를 사용하고 전달합니다. 매개변수 by는 정렬할 열 이름으로 설정됩니다. 또한, ascending=False는 내림차순 정렬을 의미합니다. 오름차순으로 정렬하려면 ascending=True로 설정하세요.

2. 여러 열로 정렬🎜🎜단일 열로 정렬하는 것 외에도 여러 열로 정렬할 수도 있습니다. 정렬 조건이 여러 개인 경우 sort_values() 함수의 by 매개변수를 사용하여 여러 열 이름이 포함된 목록을 전달할 수 있습니다. 다음 예는 "score" 열에 따라 내림차순으로 정렬됩니다. "score" 열이 동일하면 "age" 열에 따라 오름차순으로 정렬됩니다. 🎜rrreee🎜출력 결과: 🎜rrreee🎜In 위 코드에서는 두 요소의 목록이 각각 두 가지 정렬 조건에 해당하는 by 매개변수로 사용된다는 메시지를 전달했습니다. 동시에 부울 값 목록을 전달하여 각 정렬 조건의 정렬 순서를 설정할 수 있습니다. 🎜🎜3. 색인별로 정렬🎜🎜열별로 정렬하는 것 외에도 색인별로 정렬할 수도 있습니다. Pandas의 sort_index() 함수는 인덱스 정렬을 구현할 수 있습니다. 예를 들면 다음과 같습니다. 🎜rrreee🎜출력 결과: 🎜rrreee🎜위 코드에서는 sort_index() 함수를 호출하여 인덱스를 정렬합니다. ascending=False 매개변수는 내림차순 정렬을 의미합니다. 오름차순으로 정렬하려면 ascending=True로 설정하세요. 🎜🎜4. 맞춤 정렬 기능🎜🎜때로는 맞춤 기능에 따라 정렬해야 할 때가 있습니다. Pandas의 sort_values() 함수는 정렬을 위해 함수에 전달할 수 있는 key 매개변수를 제공합니다. 예는 다음과 같습니다. 🎜rrreee🎜출력 결과: 🎜rrreee🎜위 코드에서는 정렬 함수 custom_sort()를 사용자 정의하고 sort_values()에 전달했습니다. code> 함수의 >key 매개변수입니다. 이 함수는 입력 행의 "연령" 열과 "점수" 열의 합을 기준으로 크기를 비교합니다. 🎜🎜요약: 🎜🎜이 기사에서는 단일 열 기준 정렬, 여러 열 기준 정렬, 인덱스 기준 정렬, 사용자 정의 정렬 기능 등 Pandas 정렬 기술의 여러 측면을 소개합니다. 이러한 정렬 기능을 유연하게 사용하면 특정 조건에 따라 데이터를 쉽게 정렬할 수 있습니다. 이 기사의 샘플 코드가 실제로 모든 사람에게 도움이 되기를 바랍니다. 🎜

위 내용은 공개: 특정 조건에 따라 정렬하는 팬더 기술에 대한 자세한 설명의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.