Computer >> 컴퓨터 >  >> 프로그래밍 >> Python

Python으로 DataFrame의 최솟값을 찾아 새 행과 열에 저장하는 방법

문제 개요

pandas 라이브러리를 사용하면 DataFrame 내부의 최솟값을 손쉽게 계산할 수 있습니다. 이번 글에서는 주어진 DataFrame에서 각 행의 최솟값을 새로운 열로, 그리고 각 열의 최솟값을 새로운 행으로 추가하는 방법을 단계별로 알아보겠습니다.

예시 데이터프레임

다음과 같은 데이터프레임이 있다고 가정해 보겠습니다.

   one  two  three
0   12   13      5
1   10    6      4
2   16   18     20
3   11   15     58

최종적으로 원하는 결과는 아래와 같습니다.

새 열에 최솟값 추가
   one  two  three  min_value
0   12   13      5          5
1   10    6      4          4
2   16   18     20         16
3   11   15     58         11

새 행에 최솟값 추가
   one  two  three  min_value
0   12   13      5          5
1   10    6      4          4
2   16   18     20         16
3   11   15     58         11
4   10    6      4          4

해결 방법

이 문제는 다음 순서로 해결할 수 있습니다.

  • 데이터프레임을 정의합니다.
  • df.min(axis=1)을 사용하여 각 행(row)의 최솟값을 구하고, 이를 새로운 열 'min_value'에 저장합니다.
  • df.min(axis=0)을 사용하여 각 열(column)의 최솟값을 구하고, 이를 새로운 행으로 추가합니다.

핵심 코드

각 행의 최솟값을 새 열로 추가하는 코드입니다.

df['min_value'] = df.min(axis=1)

각 열의 최솟값을 새 행으로 추가하는 코드입니다.

df.loc[len(df)] = df.min(axis=0)

전체 코드 예제

아래 전체 코드를 실행하면 동작 과정을 더 명확하게 이해할 수 있습니다.

import pandas as pd
import numpy as np

data = [[12,13,5],[10,6,4],[16,18,20],[11,15,58]]
df = pd.DataFrame(data, columns=('one','two','three'))

print("새 열에 최솟값 추가")
df['min_value'] = df.min(axis=1)
print(df)

print("새 행에 최솟값 추가")
df.loc[len(df)] = df.min(axis=0)
print(df)

실행 결과

새 열에 최솟값 추가
   one  two  three  min_value
0   12   13      5          5
1   10    6      4          4
2   16   18     20         16
3   11   15     58         11

새 행에 최솟값 추가
   one  two  three  min_value
0   12   13      5          5
1   10    6      4          4
2   16   18     20         16
3   11   15     58         11
4   10    6      4          4

코드 설명

axis 매개변수가 핵심입니다. axis=1은 행 방향(가로)으로 연산하여 각 행마다 최솟값을 구하고, axis=0은 열 방향(세로)으로 연산하여 각 열마다 최솟값을 구합니다. 또한 df.loc[len(df)]는 현재 데이터프레임의 길이(마지막 인덱스 + 1) 위치에 새로운 행을 삽입하는 효율적인 방법입니다. 이 패턴은 통계 요약 행을 데이터프레임 하단에 추가할 때 자주 활용됩니다.