python
df.mean 마스터하기: 평균 계산을 위한 초보자 가이드

df.mean 마스터하기: 평균 계산을 위한 초보자 가이드

MoeNagy Dev

데이터 프레임의 맥락에서 평균의 정의

평균은 데이터 분석에서 중심 경향성을 나타내는 널리 사용되는 측정 항목으로 알려져 있습니다. 데이터 프레임의 맥락에서 평균은 특정 열 또는 열 집합의 평균값을 나타냅니다. 열의 모든 값의 합을 해당 열의 결측값을 제외한 값의 개수로 나누어 계산됩니다.

데이터 프레임의 평균 계산

단일 열의 평균 계산

데이터 프레임의 단일 열의 평균 값을 계산하려면 mean() 함수를 사용할 수 있습니다. 다음은 예입니다:

import pandas as pd
 
# 샘플 데이터 프레임 생성
data = {'나이': [25, 32, 41, 28, 35],
        '급여': [50000, 60000, 70000, 55000, 65000]}
df = pd.DataFrame(data)
 
# '나이' 열의 평균 계산
mean_age = df['나이'].mean()
print(f"평균 나이는: {mean_age}")

출력:

평균 나이는: 32.2

여러 열의 평균 계산

데이터 프레임의 여러 열의 평균을 계산할 수도 있습니다. 이를 위해 mean() 함수에 열 이름의 리스트를 전달할 수 있습니다:

# '나이'와 '급여' 열의 평균 계산
mean_values = df[['나이', '급여']].mean()
print(mean_values)

출력:

나이    32.2
급여  60000.0
dtype: float64

평균 계산 시 결측값 처리

데이터 프레임에 결측값(NaN 또는 None으로 표시)이 포함된 경우 mean() 함수는 자동으로 이러한 값을 계산에서 제외합니다. 그러나 skipna 매개변수를 사용하여 결측값 처리 방법을 지정할 수도 있습니다:

# 결측값을 포함한 데이터 프레임 생성
data = {'나이': [25, 32, 41, 28, 35, None],
        '급여': [50000, 60000, 70000, 55000, 65000, None]}
df = pd.DataFrame(data)
 
# 결측값을 포함하여 평균 계산
mean_age = df['나이'].mean(skipna=False)
print(f"결측값을 포함한 평균 나이: {mean_age}")
 
# 결측값을 제외하고 평균 계산
mean_age = df['나이'].mean(skipna=True)
print(f"결측값을 제외한 평균 나이: {mean_age}")

출력:

결측값을 포함한 평균 나이: nan
결측값을 제외한 평균 나이: 32.2

평균 적용하기

숫자 데이터 유형

mean() 함수는 정수 및 부동 소수점과 같은 숫자 데이터 유형과 원활하게 작동합니다. 선택한 열의 값들의 산술 평균을 계산합니다.

# 숫자 데이터 예제
data = {'나이': [25, 32, 41, 28, 35],
        '급여': [50000, 60000, 70000, 55000, 65000]}
df = pd.DataFrame(data)
 
mean_age = df['나이'].mean()
mean_salary = df['급여'].mean()
 
print(f"평균 나이는: {mean_age}")
print(f"평균 급여는: {mean_salary}")

출력:

평균 나이는: 32.2
평균 급여는: 60000.0

숫자가 아닌 데이터 유형

mean() 함수는 문자열이나 범주형 변수와 같은 숫자가 아닌 데이터 유형에도 적용할 수 있습니다. 그러나 결과의 해석은 유의미하지 않을 수 있습니다. 이러한 경우 mean() 함수는 평균을 계산하기 전에 숫자 값으로 비숫자 값을 변환하려고 합니다.

# 비숫자 데이터 예제
data = {'이름': ['John', 'Jane', 'Bob', 'Alice', 'Tom'],
        '성별': ['M', 'F', 'M', 'F', 'M']}
df = pd.DataFrame(data)
 
mean_gender = df['성별'].mean()
print(f"평균 성별은: {mean_gender}")

출력:

평균 성별은: 0.6

이 예제에서 mean() 함수는 'M'과 'F' 값을 숫자 값으로 변환하고(각각 0과 1) 평균을 계산합니다. 이 결과는 성별 데이터의 맥락에서 의미가 크지 않습니다.

평균 계산 결과 해석

평균 값의 의미 이해하기

평균 값은 데이터의 중심 경향성을 나타내며 데이터 세트에서 "평균" 또는 "일반적인" 값의 추정치를 제공합니다. 모든 값들을 더하고 결측값을 제외한 값의 개수로 나누어 계산됩니다.

평균 값의 해석은 데이터의 맥락과 특정 문제를 해결하려는 목적에 따라 다릅니다. 예를 들어, '나이' 열의 경우 32.2세의 평균 나이는 데이터 세트에서 일반적인 연령을 나타냅니다. '급여' 열의 경우, $60,000의 평균 급여는 평균 급여 수준에 대한 정보를 제공합니다.

평균과 관련된 잠재적인 문제 식별

평균은 널리 사용되는 요약 통계량이지만, 이상치나 비대칭 분포에 영향을 받을 수 있습니다. 이상치는 데이터의 나머지 값들과 크게 다른 값으로, 평균을 해당 값의 방향으로 당길 수 있으며 전형적인 값과의 차이가 커집니다.

또한, 데이터가 비대칭적인 경우(분포가 대칭이 아님), 평균은 중심 경향성을 나타내는 데 가장 적합한 측정 항목이 아닐 수 있으며, 중앙값이 더 적합한 측정 항목일 수 있습니다.

평균과 다른 요약 통계량 비교

평균과 중앙값 사이의 차이점

중앙값은 데이터의 가운데 값을 나타내는 또 다른 중심 경향성 측정 항목으로, 값들을 순서대로 정렬했을 때 데이터 세트의 가운데 위치한 값입니다. 평균과 달리 중앙값은 이상치나 비대칭 분포에 덜 영향을 받습니다.

평균과 중앙값의 주요 차이점은 다음과 같습니다:

  • 평균은 산술 평균이고, 중앙값은 가운데 값입니다.
  • 평균은 이상치에 영향을 받지만, 중앙값은 이상치에 대해 견고합니다.
  • 평균은 값의 크기에 영향을 받지만, 중앙값은 그렇지 않습니다.
  • 분포의 형태가 평균에 영향을 미치지만 중앙값은 영향을 미치지 않습니다.

평균 대 중앙값 사용 시기

평균 또는 중앙값을 사용하는 선택은 데이터의 특성과 해결하려는 문제에 따라 다릅니다. 일반적으로:

  • 데이터가 대략 정규 분포이며 "일반적" 또는 "평균" 값으로 나타내고 싶을 때 평균을 사용하세요.
  • 데이터가 치우쳐 있거나 이상치가 포함되어 있는 경우 중앙값을 사용하세요. 중앙값은 극단적인 값에 덜 영향을 받고 중심 경향성의 더 강력한 측도를 제공합니다.
  • 분포와 관계없이 데이터 세트에서 "중간" 값 찾기를 원할 때 중앙값을 사용하세요.

데이터를 그룹화하고 평균 계산하기

그룹화된 데이터에 대한 평균 계산

데이터 프레임에서 그룹화된 데이터의 평균을 계산할 수도 있습니다. 데이터의 서로 다른 하위 집합에 대한 평균을 분석하려는 경우 유용합니다. 이를 위해 Pandas의 groupby() 함수를 사용할 수 있습니다.

# 그룹화된 데이터 예제
data = {'Name': ['John', 'Jane', 'Bob', 'Alice', 'Tom'],
        'Age': [25, 32, 41, 28, 35],
        'Salary': [50000, 60000, 70000, 55000, 65000],
        'Department': ['Sales', 'Marketing', 'IT', 'Sales', 'IT']}
df = pd.DataFrame(data)
 
# 각 부서별 평균 나이와 연봉 계산
mean_values = df.groupby('Department')[['Age', 'Salary']].mean()
print(mean_values)

출력:

            Age   Salary
Department               
IT         38.0  67500.0
Marketing  32.0  60000.0
Sales      26.5  52500.0

이 예제에서는 데이터 프레임을 'Department' 열로 그룹화하고 각 부서별 'Age'와 'Salary' 열의 평균을 계산합니다.

여러 그룹에 평균 적용하기

여러 그룹에 대한 평균 계산도 동시에 적용할 수 있습니다. 이는 평균 값을 서로 다른 그룹화 기준으로 비교하려는 경우 유용합니다.

# 다중 그룹화 기준 예제
data = {'Name': ['John', 'Jane', 'Bob', 'Alice', 'Tom', 'Emily', 'David', 'Sarah'],
        'Age': [25, 32, 41, 28, 35, 30, 38, 27],
        'Salary': [50000, 60000, 70000, 55000, 65000, 52000, 68000, 48000],
        'Department': ['Sales', 'Marketing', 'IT', 'Sales', 'IT', 'Marketing', 'IT', 'Sales'],
        'Gender': ['M', 'F', 'M', 'F', 'M', 'F', 'M', 'F']}
df = pd.DataFrame(data)
 
# 각 부서 및 성별별 평균 나이와 연봉 계산
mean_values = df.groupby(['Department', 'Gender'])[['Age', 'Salary']].mean()
print(mean_values)

출력:

                     Age   Salary
Department Gender                
IT          M      39.5  69000.0
            F      30.0  52000.0
Marketing   F      31.0  60000.0
Sales       F      27.5  51500.0
            M      26.0  50000.0

이 예제에서는 데이터 프레임을 'Department' 및 'Gender' 열로 그룹화하고 각 부서 및 성별 조합에 대한 'Age' 및 'Salary' 열의 평균을 계산합니다.

모듈 및 패키지 사용하기

파이썬의 모듈화된 디자인을 통해 코드를 재사용 가능한 구성 요소인 모듈로 구성할 수 있습니다. 모듈은 정의와 문장을 포함하는 파이썬 파일입니다. 모듈을 가져옴으로써 제공하는 기능에 액세스할 수 있습니다.

모듈 가져오기

import 문을 사용하여 모듈의 기능을 가져옵니다. 다음은 예입니다:

import math
print(math.pi)  # 출력: 3.141592653589793

특정 함수 또는 속성만 모듈에서 가져올 수도 있습니다:

from math import pi, sqrt
print(pi)       # 출력: 3.141592653589793
print(sqrt(9)) # 출력: 3.0

모듈 생성하기

자신의 모듈을 만들려면 간단히 Python 코드를 .py 파일에 저장하면 됩니다. 예를 들어, my_module.py라는 모듈을 만들어 보겠습니다:

def greet(name):
    print(f"안녕하세요, {name}!")
 
def square(x):
    return x ** 2

이제 이 모듈에서 함수를 가져와 사용할 수 있습니다:

import my_module
my_module.greet("Alice")  # 출력: 안녕하세요, Alice!
result = my_module.square(5)
print(result)  # 출력: 25

패키지

패키지는 계층 구조로 모듈을 구성하는 방법입니다. 패키지는 디렉터리에 저장된 모듈의 모음입니다. 패키지를 만들려면 간단히 디렉터리를 만들고 모듈 파일을 그 안에 넣으면 됩니다.

예를 들어, my_package라는 패키지를 만들어 두 개의 모듈 utils.pymath_functions.py를 넣어 보겠습니다:

my_package/
    __init__.py
    utils.py
    math_functions.py

__init__.py 파일은 디렉터리를 패키지로 만들기 위해 필요합니다. 비어 있거나 초기화 코드를 포함할 수 있습니다.

이제 다음과 같이 패키지에서 모듈을 가져올 수 있습니다:

from my_package import utils, math_functions
utils.print_message("안녕, 세상!")
result = math_functions.add(3, 4)
print(result)  # 출력: 7

패키지 및 상대적인 가져오기

패키지 내에서는 상대적인 가져오기를 사용하여 동일한 패키지의 다른 모듈에 액세스할 수 있습니다. 상대적인 가져오기는 . 표기법을 사용하여 상대 경로를 지정합니다.

예를 들어, math_functions.py에서 utils.py의 함수를 사용해야 한다고 가정해 봅시다:

# math_functions.py
from .utils import print_message
 
def add(a, b):
    print_message("숫자를 더하는 중...")
    return a + b

가져오기 문의 앞에 있는 .utils 모듈이 현재 모듈과 동일한 디렉터리에 있다는 것을 나타냅니다.

가상 환경

가상 환경을 사용하면 독립적인 Python 환경을 만들고 해당 환경에 따로 종속성과 패키지 설치를 관리할 수 있습니다. 이를 통해 서로 다른 프로젝트 간의 충돌을 방지하고 일관된 개발 환경을 보장할 수 있습니다.

venv (Python에 내장되어 있는) 또는 pipenv와 같은 도구를 사용하여 가상 환경을 생성하고 관리할 수 있습니다.

venv를 사용한 예시는 다음과 같습니다:

# 새로운 가상 환경 생성
python -m venv my_env

# 가상 환경 활성화
# (Windows)
my_env\Scripts\activate
# (macOS/Linux)
source my_env/bin/activate

# 가상 환경에 패키지 설치
pip install numpy pandas
Deactivate 하기 위해 가상 환경을 비활성화하세요:

deactivate


### 결론

이 튜토리얼에서는 파이썬에서 모듈과 패키지를 다루는 방법을 배웠습니다. 모듈을 가져오는 방법, 자체 모듈을 만드는 방법, 패키지를 사용하여 코드를 구성하는 방법 및 상대적인 가져오기를 활용하는 방법을 알아보았습니다. 또한, 종속성을 관리하고 일관된 개발 환경을 보장하기 위해 가상 환경의 중요성에 대해 알아보았습니다.

이러한 개념들을 숙달함으로써 더 모듈화되고 유지보수 가능하며 확장 가능한 파이썬 코드를 작성할 수 있습니다. 기억하세요, 효과적인 파이썬 개발의 핵심은 언어의 강력한 모듈과 패키지 시스템을 활용하여 재사용 가능하고 구성된 구성요소를 만드는 것입니다.

[![MoeNagy Dev](https://raw.githubusercontent.com/lynn-mikami/Images/main/moenagy-dev.png)](/)