クイックフィックスが必要であると確信していますが、説明がわかりません。私は、データフレーム上で反復処理を行い、パンダを持つ各列のペアのクロス集計を作成したいと考えています。私は元のデータから2つの列をサブセット化し、不適切なデータで行を削除しました。残りのデータを使用して、私は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
サンプルとは何ですか? –