[Pandas] 교차표 만들기(crosstab)

반응형
    반응형

    교차표 만들기

    판다스의 메쏘드중 하나인 crosstab을 이용해 교차표를 생성합니다.
    주로 범주형 변수에 쓰이는데 시각적으로 표현하기 쉽게 만드는 점에서 은근 쓰이는 곳이 많습니다.

    crosstab() 사용방법

    사용방법은 아주 간단합니다. 교차표를 만들 두개의 범주형 변수를 가져오면 그만입니다.

    # 예제 데이터 프레임 생성
    data = {'A': ['one', 'one', 'two', 'three'] * 3,
            'B': ['A', 'B', 'C'] * 4,
            'C': ['foo', 'foo', 'foo', 'bar', 'bar', 'bar'] * 2,
            'D': [1, 2, 2, 2, 1, 1, 3, 3, 3,1,2,3]}
    df = pd.DataFrame(data)
    
    # crosstab 생성
    cross_tab = pd.crosstab(df['A'], df['B'])
    
    # 결과 출력
    print(cross_tab)

    컬럼 A,B의 교차표가 완성되었습니다.

    시각화

    교차표는 주로 히트맵으로 표현하는데 다음과 같이 합니다.

    import seaborn as sns
    import matplotlib.pyplot as plt
    
    # 히트맵으로 시각화
    sns.heatmap(cross_tab, annot=True, fmt="d", cmap="YlGnBu", cbar=True)
    
    # 플롯 제목과 라벨 추가
    plt.title('Cross Tabulation Heatmap')
    plt.xlabel('B')
    plt.ylabel('A')
    
    # 그래프 표시
    plt.show()

    데이터가 복잡할수록 히트맵의 효과가 좋아지는데 이번 예제는 간단해서 그런지 단순하게 나오네요. 아무튼 이런식으로 시각화하면 한눈에 데이터를 볼 수 있어서 데이터분석에 도움이 될 수 있습니다.

    히트맵을 사용하는 방법은 아래 포스팅에서 자세하게 설명했으니 참고하시기 바랍니다.


    [Pyhon]heatmap 그리기,텍스트 넣기

     

    [Pyhon]heatmap 그리기,텍스트 넣기

    matplotlib를 이용한 heat map 그리는 방법입니다. 데이터는 임의로 10x10 행렬로 만들어서 데이터프레임으로 만들었습니다. import pandas as pd import matplotlib.pyplot as plt import numpy as np data = np.random.randn(10,10

    seong6496.tistory.com

    활용

    가설 검정 중에 카이제곱으로 독립성 검정을 할 경우 crosstab을 쓰면 좀 더 안정적으로 쓸 수 있습니다. 카이제곱에서는 이미 교차표로 만들어진 인자를 가져다 쓰는것이라서 오류 방지를 할 수 있습니다.

    from scipy.stats import chi2_contingency
    
    # 예제 데이터 생성
    data = {'Gender': ['Male', 'Female', 'Male', 'Female', 'Male', 'Female',
                       'Male'],
            'Smoking': ['Yes', 'No', 'No', 'Yes', 'Yes', 'No','Yes']}
    df = pd.DataFrame(data)
    
    # 교차표 생성
    cross_tab = pd.crosstab(df['Gender'], df['Smoking'])
    
    # 카이제곱 검정 수행
    chi2, p, _, _ = chi2_contingency(cross_tab)
    
    # 결과 출력
    print("Chi-square value:", chi2)
    print("P-value:", p)
    
    # 유의수준 0.05에서의 가설 검정
    alpha = 0.05
    if p < alpha:
        print("결과: 귀무가설을 기각합니다. 두 변수는 독립이 아닙니다.")
    else:
        print("결과: 귀무가설을 기각하지 않습니다. 두 변수는 독립입니다.")

    마치며

    교차표를 만드는 crosstab에 대해 간단히 알아보았는데요. 어떻게 쓸것인가의 따라서 필요할수도 있도 있고 아닐수도 있지만 보조적인 역할은 제대로 해냅니다. 도움이 되시길 바랍니다.

     

    함께 보는 글

    [Pyhon]heatmap 그리기,텍스트 넣기

     

    댓글

    Designed by JB FACTORY

    ....