퀵 픽스가 있어야하지만 좋은 설명이있는 답을 찾을 수 없습니다. 데이터 프레임을 반복하고 팬더가있는 열 쌍마다 크로스 탭을 만들려고합니다. 원본 데이터에서 2 cols를 부분 집합하고 부적절한 데이터로 행을 제거했습니다. 나머지 데이터를 사용하여 ChiX 테스트를 수행하기위한 비상 계획 테이블을 궁극적으로 구축하기 위해 교차 분석을 수행하려고합니다. 여기 내 코드는 다음과 같습니다.팬더 크로스 탭을 사용할 때 ValueError
my_data = pd.read_csv(DATA_MATRIX, index_col=0) #GET DATA
AM = pd.DataFrame(columns=my_data.columns, index = my_data.columns) #INITIATE DF TO HOLD ChiX-result
for c1 in my_data.columns:
for c2 in my_data.columns:
sample_df = pd.DataFrame(my_data, columns=[c1,c2]) #make df to do ChiX on
sample_df = sample_df[(sample_df[c1] != 0.5) | (sample_df[c2] != 0.5)].dropna() # remove unsuitable rows
contingency = pd.crosstab(sample_df[c1], sample_df[c2]) ##This doesn't work?
# DO ChiX AND STORE P-VALUE IN 'AM': CODE STILL TO WRITE
데이터 프레임의 값은 0.0, 0.5, 1.0입니다. '0.5'는 데이터가 누락되어 있으므로 우발 테이블을 만들기 전에이 행을 제거하고 우발 테이블을 만들려는 나머지 값은 모두 0.0 또는 1.0입니다. 나는이 시점까지 코드 작업을 점검했다. 콘솔에 인쇄 된 오류는 다음과 같습니다.
ValueError: If using all scalar values, you must pass an index
누군가가 왜 작동하지 않는지 설명 할 수 있습니까? 어떤 방법 으로든 해결하도록 도울 수 있습니까? 또는 열에 ChiX 테스트를 수행하는 대체 방법을 제공하면 도움이 될 것입니다. 미리 감사드립니다!
EDIT : sample_df
col1 col2
sample1 1 1
sample2 1 1
sample3 0 0
sample4 0 0
sample5 0 0
sample6 0 0
sample7 0 0
sample8 0 0
sample9 0 0
sample10 0 0
sample11 0 0
sample12 1 1
물론 빠른 수정이 있습니다. 데이터를 우리에게 보여주는 것은 어떨까요? –
기본적으로 2 개의 열과 100 개의 행을 가진 데이터 프레임이며 모든 값은 1 또는 0입니다. 원본 데이터 프레임 'my_data'는 sample_df가 파생되는 위치이며 ~ 3000 열을 제외하고는 유사하며 값이 ' 0.5 ', sample_df에서 제거되었습니다. – user3062260
샘플이란 무엇입니까? –