Data Science/실습

A_1['B'].value_counts(nomalize = True) 와 pd.crosstab(A, B, nomalize = True) 가 다른 이유?

에너지_2 2024. 12. 9. 10:59
728x90
반응형

[비율] 선택 시 데이터가 응답 비율(%)로 나타납니다.
[빈도] 선택 시 응답자 수(명)으로 나타납니다



정확한 비율을 계산하려면 각 그룹을 필터링한 후, 전배 희망자의 비율을 계산하고 그 비율을 나누어야 합니다.

문제:
A == 1 인 것 중 B == 1인 비율,
A == 0 인 것 중 B == 1 인 비율을 구하여라.



답변:
문제의 핵심은 두 그룹 (관련 경험이 있는 그룹과 없는 그룹)에서 전배 희망 여부에 따른 비율을 계산하고, 그 비율의 비율을 구하는 것입니다. 이를 위해 crosstab을 사용했을 때 결과가 다르게 나오는 이유는 crosstab을 어떻게 사용하느냐에 따라 계산 방식이 달라지기 때문입니다.

### 1. 데이터 처리 방식
먼저, 관련 경험이 없는 사람과 있는 사람을 필터링한 후, 각 그룹에서 '전배를 희망하는' 사람의 비율을 구한다고 했습니다. 이를 수동으로 계산할 때와 `crosstab`을 사용했을 때 결과가 다를 수 있는 이유는 다음과 같습니다.

### 2. crosstab 사용 시
`crosstab`은 기본적으로 두 범주형 변수 간의 교차 빈도를 계산합니다. 예를 들어, 관련 경험과 전배 희망 여부에 대한 crosstab을 사용하면 다음과 같은 형태로 결과가 나옵니다:

```python
pd.crosstab(df['relevant_experience'], df['transfer_wish'])
``
이렇게 하면 관련 경험(`relevant_experience`)과 전배 희망 여부(`transfer_wish`)에 따른 빈도수 표가 생성됩니다. 예시로, 데이터가 아래와 같다고 가정해봅시다:

| relevant_experience  | transfer_wish  |
|---------------------    -|----------------|
| No relevant experience| 1 (Yes)        |
| Has relevant experience| 0 (No)         |
| ...                  | ...            |

crosstab은 각 조합의 빈도수(예: 관련 경험 없음 & 전배 희망 = 1)만 계산합니다. 따라서 A와 B 값을 직접 계산하는 방식과는 다를 수 있습니다.

### 3. 비율 계산 시
A와 B는 각각 **비율**을 구하는 값입니다:

- **A**: 관련 경험이 없는 수료자 중 전배 희망자 비율
- **B**: 관련 경험이 있는 수료자 중 전배 희망자 비율

이를 직접 계산하는 방식은:

1. **A**는 `relevant_experience == 'No relevant experience'`인 행에서 `transfer_wish == 1`인 비율을 계산합니다.
2. **B**는 `relevant_experience == 'Has relevant experience'`인 행에서 `transfer_wish == 1`인 비율을 계산합니다.

이 방법은 각 그룹 내에서 전배를 희망하는 사람의 비율을 구하기 때문에 `normalize` 방법과 달리 전체 비율을 계산하지 않고 해당 그룹에서만 비율을 구합니다.

### 4. 결과가 달라지는 이유
`crosstab`을 사용하면 각 조건에 맞는 행의 빈도를 세고, 이를 전체 데이터로 나누지 않기 때문에 각 그룹의 비율을 구하는 과정에서 다르게 나올 수 있습니다. 예를 들어, `normalize=True`를 설정하면 각 그룹 내에서 비율을 계산할 수 있지만, 전배 희망자 비율이 아닌 전체 비율이 나올 수 있습니다.

따라서 **A와 B의 비율을 계산할 때는 `crosstab`을 그대로 사용하는 것보다는 각 그룹에 대해 비율을 구한 후, 그 값을 나누는 방식**이 정확합니다.

### 5. 결론
- `crosstab`을 사용하면 해당 값들의 **빈도수**를 계산하지만, **비율**을 계산하려면 각 그룹에 대해 별도의 계산을 해야 합니다.
- `normalize`는 전체 비율을 계산할 때 사용되므로, 이를 사용할 경우 전체 데이터를 기준으로 비율이 계산되며, 해당 그룹 내 비율을 구하는 방법과 차이가 생길 수 있습니다.

따라서 정확한 비율을 계산하려면 각 그룹을 필터링한 후, 전배 희망자의 비율을 계산하고 그 비율을 나누어야 합니다.

728x90
반응형