pandas 구간별 평균 구하는 방법

조회수 1468회
     x    y    z
a    1    2    3
a    2    2    2
a    3    5    1
a    4    3    4
a    -1    -1    -1
b    5    2    3
b    4    3    1
b    3    8    3
b    4    1    2

pandas에서 구간별 평균을 구하는 방법이 있는지 궁금하여 질문드립니다. 위와 같은 데이터 파일이 있을 때 저는 -1로 표시되어 있는 부분을 기준으로 위의 a의 평균과 b의 평균값을 구하고 싶습니다. groupby.mean을 사용하여 평균을 구하게 되면 a에서 -1의 값이 포함되어 평균값이 구해질텐데요, -1을 제외하고 그 나머지 평균을 구하는 코드가 있을까요?

1 답변

  • Pandas의 groupby를 사용하여 구간별 평균을 계산할 수 있습니다. -1 값을 제외한 평균을 계산하려면, groupby 후에 -1 값을 필터링하여 평균을 계산하면 됩니다.

    
    import pandas as pd
    import numpy as np
    
    # 데이터 프레임 생성
    data = {
        'x': ['a', 'a', 'a', 'a', 'a', 'b', 'b', 'b', 'b'],
        'y': [1, 2, 3, 4, -1, 5, 4, 3, 4],
        'z': [2, 2, 5, 3, -1, 2, 3, 8, 1]
    }
    df = pd.DataFrame(data)
    
    # -1 값을 NaN으로 변환
    df.replace(-1, np.nan, inplace=True)
    
    # 그룹별 평균 계산
    result = df.groupby('x').mean()
    
    print(result)
    

답변을 하려면 로그인이 필요합니다.

프로그래머스 커뮤니티는 개발자들을 위한 Q&A 서비스입니다. 로그인해야 답변을 작성하실 수 있습니다.

(ಠ_ಠ)
(ಠ‿ಠ)