2016-09-29 5 views
0

私の顧客のデータ間の相関関係を計算するプログラムを作成しています。相関値をCSVに出力して、データをさらに分析することができます。Numpy Savetxt上書き、ループを配置する場所を特定できない

私は、複数のアレンジのそれぞれの相関関係を計算しながら、すべての顧客(各12ヶ月のデータ)をループすることに成功しました。私はダイアログに印刷するとこれを見ることができます。

しかし、Savetxtを使用して保存しようとすると、私は計算した最終値のみを取得しています。

私は間違った場所に私のループを置いたと思う、どこに行かなければならないのだろうか?私は他の質問をチェックしようとしましたが、あまりにも多くの光をあてにしませんでした。

EDIT:私は、外側のforループと内側のforループの両方で書き込みをアライメントしようとしましたが、両方とも同じ結果が得られました。

for x_customer in range(0,len(overalldata),12): 

     for x in range(0,13,1): 
       cust_months = overalldata[0:x,1] 
       cust_balancenormal = overalldata[0:x,16] 
       cust_demo_one = overalldata[0:x,2] 
       cust_demo_two = overalldata[0:x,3] 
       num_acct_A = overalldata[0:x,4] 
       num_acct_B = overalldata[0:x,5] 
    #Correlation Calculations 
       demo_one_corr_balance = numpy.corrcoef(cust_balancenormal, cust_demo_one)[1,0] 
       demo_two_corr_balance = numpy.corrcoef(cust_balancenormal, cust_demo_two)[1,0] 
       demo_one_corr_acct_a = numpy.corrcoef(num_acct_A, cust_demo_one)[1,0] 
       demo_one_corr_acct_b = numpy.corrcoef(num_acct_B, cust_demo_one)[1,0] 
       demo_two_corr_acct_a = numpy.corrcoef(num_acct_A, cust_demo_two)[1,0] 
       demo_two_corr_acct_b = numpy.corrcoef(num_acct_B, cust_demo_two)[1,0] 

       result_correlation = [(demo_one_corr_balance),(demo_two_corr_balance),(demo_one_corr_acct_a),(demo_one_corr_acct_b),(demo_two_corr_acct_a),(demo_two_corr_acct_b)] 

     result_correlation_combined = emptylist.append([result_correlation]) 
     cust_delete_list = [0,(x_customer),1] 
     overalldata = numpy.delete(overalldata, (cust_delete_list), axis=0) 

numpy.savetxt('correlationoutput.csv', numpy.column_stack(result_correlation), delimiter=',') 
print result_correlation 
+0

あなたは仮説が正しいと思います。最後の 'savetxt'行のインデントを解除する必要があります –

+0

"予期しないインデントエラー "が発生しています –

+0

インデントが一切ありません(外側の' for'と並んでいます) –

答えて

1

コードのこの部分は単なるずさんです:

   result_correlation = [(demo_one_corr_balance),...] 

     result_correlation_combined = emptylist.append([result_correlation]) 
     cust_delete_list = [0,(x_customer),1] 
     overalldata = numpy.delete(overalldata, (cust_delete_list), axis=0) 

numpy.savetxt('correlationoutput.csv', numpy.column_stack(result_correlation), delimiter=',') 
print result_correlation 

あなたが最も内側のループでresult_correlationを設定し、あなたは、保存や印刷、最終的にそれを使用します。明らかに、最後のループの結果が出力されます。

xループの外側にあるresult_correlation_combinedにループを追加すると、x_customerループの傾向に近づきます。しかし、あなたはリストで何もしません。

最後にx_customerループでは、overalldataで再生しますが、これ以上使用することはありません。

今のところsavetxtを忘れて、データ収集をまっすぐにしてください。

+0

こんにちは、ありがとう。私はあなたをアップアップしました、私の評判が高くなるとそれは表示されます。 –

0

私は上記のポスターのアドバイスを受けて、自分のコードを修正しました。私は今、ファイルに書き込むことができます。しかし、私は反復回数の問題に悩まされています。それは無関係なので別の質問で投稿します。ここで私が使用したソリューションがあります。

for x_customer in range(0,len(overalldata),12): 

     for x in range(0,13,1): 
       cust_months = overalldata[0:x,1] 

       cust_balancenormal = overalldata[0:x,16] 

       cust_demo_one = overalldata[0:x,2] 
       cust_demo_two = overalldata[0:x,3] 

       num_acct_A = overalldata[0:x,4] 
       num_acct_B = overalldata[0:x,5] 

       out_mark_channel_one = overalldata[0:x,25] 
       out_service_channel_two = overalldata[0:x,26] 
       out_mark_channel_three = overalldata[0:x,27] 
       out_mark_channel_four = overalldata[0:x,28] 


    #Correlation Calculations 

       #Demographic to Balance Correlations 
       demo_one_corr_balance = numpy.corrcoef(cust_balancenormal, cust_demo_one)[1,0] 
       demo_two_corr_balance = numpy.corrcoef(cust_balancenormal, cust_demo_two)[1,0] 


       #Demographic to Account Number Correlations 
       demo_one_corr_acct_a = numpy.corrcoef(num_acct_A, cust_demo_one)[1,0] 
       demo_one_corr_acct_b = numpy.corrcoef(num_acct_B, cust_demo_one)[1,0] 
       demo_two_corr_acct_a = numpy.corrcoef(num_acct_A, cust_demo_two)[1,0] 
       demo_two_corr_acct_b = numpy.corrcoef(num_acct_B, cust_demo_two)[1,0] 

       #Marketing Response Channel One 
       mark_one_corr_acct_a = numpy.corrcoef(num_acct_A, out_mark_channel_one)[1, 0] 
       mark_one_corr_acct_b = numpy.corrcoef(num_acct_B, out_mark_channel_one)[1, 0] 
       mark_one_corr_balance = numpy.corrcoef(cust_balancenormal, out_mark_channel_one)[1, 0] 

       #Marketing Response Channel Two 
       mark_two_corr_acct_a = numpy.corrcoef(num_acct_A, out_service_channel_two)[1, 0] 
       mark_two_corr_acct_b = numpy.corrcoef(num_acct_B, out_service_channel_two)[1, 0] 
       mark_two_corr_balance = numpy.corrcoef(cust_balancenormal, out_service_channel_two)[1, 0] 

       #Marketing Response Channel Three 
       mark_three_corr_acct_a = numpy.corrcoef(num_acct_A, out_mark_channel_three)[1, 0] 
       mark_three_corr_acct_b = numpy.corrcoef(num_acct_B, out_mark_channel_three)[1, 0] 
       mark_three_corr_balance = numpy.corrcoef(cust_balancenormal, out_mark_channel_three)[1, 0] 

       #Marketing Response Channel Four 
       mark_four_corr_acct_a = numpy.corrcoef(num_acct_A, out_mark_channel_four)[1, 0] 
       mark_four_corr_acct_b = numpy.corrcoef(num_acct_B, out_mark_channel_four)[1, 0] 
       mark_four_corr_balance = numpy.corrcoef(cust_balancenormal, out_mark_channel_four)[1, 0] 


       #Result Correlations For Exporting to CSV of all Correlations 
       result_correlation = [(demo_one_corr_balance),(demo_two_corr_balance),(demo_one_corr_acct_a),(demo_one_corr_acct_b),(demo_two_corr_acct_a),(demo_two_corr_acct_b),(mark_one_corr_acct_a),(mark_one_corr_acct_b),(mark_one_corr_balance), 
             (mark_two_corr_acct_a),(mark_two_corr_acct_b),(mark_two_corr_balance),(mark_three_corr_acct_a),(mark_three_corr_acct_b),(mark_three_corr_balance),(mark_four_corr_acct_a),(mark_four_corr_acct_b), 
             (mark_four_corr_balance)] 
       result_correlation_nan_nuetralized = numpy.nan_to_num(result_correlation) 
       c.writerow(result_correlation) 

     result_correlation_combined = emptylist.append([result_correlation]) 
     cust_delete_list = [0,x_customer,1] 
     overalldata = numpy.delete(overalldata, (cust_delete_list), axis=0) 
関連する問題