70632


初歩的な質問ですみません。  
matplotlibで散布図を作成しようとした際に発生したエラーです。

実験の生データを読み込んだ後に加工して、下記のようなデータフレームを作成しました。

df1（401行×1列）  
[![画像の説明をここに入力](https://i.stack.imgur.com/sACNX.png)](https://i.stack.imgur.com/sACNX.png)

df2（401行×1列）  
[![画像の説明をここに入力](https://i.stack.imgur.com/NOFyP.png)](https://i.stack.imgur.com/NOFyP.png)

コードとしては質問欄にある1個目の表を df1、二個目の表を df2 に入れていて、下記のようにコードを記載していました。

[code]

    plt.scatter(df1, df2)
    
[/code]

コード実行後に `unhashable type: 'numpy.ndarray'` のエラーが発生していました。

このエラーの解決方法、この2つのデータフレームからのグラフの作成方法を教えて頂けないでしょうか。


CC BY-SA 4.0
2020-09-23T04:30:30.047
70620
2020-09-23T12:45:49.463
2020-09-23T08:54:23.743
19110
41905
question
python python3 numpy matplotlib
matplotlibのplt.scatterでエラーunhashable type: 'numpy.ndarray'が出る


そのエラー(おそらく正確には`TypeError: unhashable type:
'numpy.ndarray'`でしょう)は、df1[51]またはdf2[41]のどちらかが文字列の場合に発生するでしょう。  
表示されたデータフレームからすると、df2[41]の方が文字列と思われます。

両方とも文字列の場合はエラーは発生しないようです。

以下で確認できます。

[code]

    print(df1.dtypes)
    print(df2.dtypes)
    
[/code]

おそらく以下のように表示されるでしょう。

[code]

    41    object
    dtype: object
    
[/code]

そうしたら、以下のように変換すれば使えるようになるでしょう。

[code]

    df2[41] = df2[41].astype(np.float64)
    
[/code]

もしdf1[51]の方が文字列だった場合はこちらで変換します。

[code]

    df1[51] = df1[51].astype(np.int64)
    
[/code]

その後に以下を実行すれば正常に終了するはずです。

[code]

    plt.scatter(df1, df2)
    
[/code]


CC BY-SA 4.0
2020-09-23T12:45:49.463
70632
2020-09-23T12:45:49.463
26370
70620
answer