> 백엔드 개발 > 파이썬 튜토리얼 > Pandas DataFrame의 각 그룹에서 가장 빈번한 값을 찾는 방법은 무엇입니까?

Pandas DataFrame의 각 그룹에서 가장 빈번한 값을 찾는 방법은 무엇입니까?

Linda Hamilton
풀어 주다: 2024-12-01 08:22:10
원래의
163명이 탐색했습니다.

How to Find the Most Frequent Value in Each Group of a Pandas DataFrame?

DataFrame의 각 그룹에 대해 가장 일반적인 값 선택

여러 문자열 열이 포함된 데이터를 정리하려면 특정 열을 기준으로 행을 그룹화하고 가장 많은 값을 선택해야 합니다. 각 그룹 내의 특정 열에 대한 공통 값입니다. 이 문서에서는 강력한 Pandas 라이브러리를 사용하여 이 작업을 수행하는 방법을 보여줍니다.

특정 오류 메시지에 대한 코드 수정

초기 쿼리에 제공된 코드에는 몇 가지 오류가 포함되어 있으며 아래에서 수정되었습니다.

import pandas as pd

source = pd.DataFrame({
    'Country': ['USA', 'USA', 'Russia', 'USA'], 
    'City': ['New York', 'New York', 'Saint Petersburg', 'New York'],
    'Short Name': ['NY', 'New', 'Spb', 'NY']})

# Group by 'Country' and 'City' and calculate the most frequent 'Short Name' in each group
result = source.groupby(['Country', 'City'])['Short Name'].apply(lambda x: pd.Series.mode(x)[0][0])
로그인 후 복사

설명

  1. 최신 버전을 사용하세요 Series.mode: 원본 코드는 각 그룹에 Statistics.mode를 적용하려고 시도하는데, 이는 여러 모드를 잘 처리하지 못하고 오류가 발생할 수 있습니다. 대신 모든 모드의 시리즈를 명시적으로 반환하는 최신 pd.Series.mode 함수가 사용되어 문제를 해결합니다.
  2. 다중 모드 처리: 단일 모드만 보장하려면 가장 일반적인 값이 선택되면 코드는 Series.mode에서 반환된 Series에서 첫 번째 요소를 추출합니다. 이는 0 구문을 사용하여 달성됩니다.

추가 옵션

결과적으로 DataFrame이 선호되는 경우:

result = source.groupby(['Country', 'City'])['Short Name'].agg(pd.Series.mode).to_frame()
로그인 후 복사

각각 별도의 행을 원하는 경우 mode:

result = source.groupby(['Country', 'City'])['Short Name'].apply(pd.Series.mode)
로그인 후 복사

참고: 모드 값을 선택 항목으로 허용하려면 시리즈에서 첫 번째 모드를 추출하는 람다 함수를 사용할 수 있습니다. :

result = source.groupby(['Country', 'City'])['Short Name'].agg(lambda x: pd.Series.mode(x)[0])
로그인 후 복사

위 내용은 Pandas DataFrame의 각 그룹에서 가장 빈번한 값을 찾는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
저자별 최신 기사
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿