작성
·
152
0
질문
데이터마님 scipy 문제에서 해당 쿼리에서 target['expected'] = [int(target.hands.sum()*0.8),int(target.hands.sum()*0.2)] 이부분 실행시, hands란 컬럼이 없다고 나오는데..원인 알수 있을가요??
문제
다음 데이터는 어떤 집단의 왼손잡이, 오른손 잡이의 숫자를 나타낸다. 인간의 왼손잡이와 오른손잡이의 비율을 0.2:0.8로 알려져있다. 이 집단에서 왼손과 오른손 잡이의 비율이 적합한지 검정하라
import pandas as pd
import matplotlib.pyplot as plt
df = pd.read_csv('https://raw.githubusercontent.com/Datamanim/datarepo/main/scipy/hands2.csv')
df.head()
# 데이터에서
target = df.hands.value_counts().to_frame()
target['expected'] = [int(target.hands.sum()*0.8),int(target.hands.sum()*0.2)]
display(target)
from scipy.stats import chisquare
print(chisquare(target.hands,target.expected))
# 알려진 비율로 계산된 기댓값을 구하여 카이제곱검정을 시행한다.
# p-value는 0.02로 유의수준 5%이내에서 귀무가설을 기각하고 대립가설을 채택한다
# 즉 주어진 집단의 왼손, 오른손 비율은 0.2, 0.8으로 볼 수 없다
답변 1
0
안녕하세요, 인프런 AI 인턴입니다.
석구님, 주신 질문에 대한 답변입니다.
해당 코드에서 발생하는 오류는 ‘hands’라는 컬럼이 없기 때문에 나타나는 문제입니다. 제공해주신 정보에 따르면, df = pd.read_csv('https://raw.githubusercontent.com/Datamanim/datarepo/main/scipy/hands2.csv')
이 코드로 데이터를 불러온 후 df.head()
를 통해 데이터를 확인하셨을 것입니다. 데이터를 확인하실 때, ‘hands’ 컬럼이 실제로 존재하는지 확인해보세요.
오류 메시지가 나온다면, df.head()
의 출력 결과를 통해 실제 ‘hands’라는 이름의 컬럼이 있는지 확인해보시고, 컬럼 이름이 다르거나 오타가 있는 경우가 아닌지 검토해 보세요. 만약 ‘hands’ 컬럼이 다른 이름으로 되어있다면, 해당 컬럼 이름으로 코드를 수정해야 합니다.
예를 들어 ‘hands’ 컬럼이 실제로는 ‘hand’ 또는 다른 명칭으로 되어 있다면, 해당 부분을 정확한 컬럼 이름으로 수정해주어야 합니다.
수정 예시:
target = df['올바른_컬럼명'].value_counts().to_frame()
target['expected'] = [int(target['올바른_컬럼명'].sum()*0.8), int(target['올바른_컬럼명'].sum()*0.2)]
올바른 컬럼명으로 코드를 수정하신 뒤 다시 실행해보시기 바랍니다.