pagetakaBlog

最近リフォームと鳥取県日南町の記事多め。写真、PC、ネット等の話題も

Python:「相関係数」を求める前に、no attribute 'shape' と表示されるエラー

タイトル一部訂正:誤=標準偏差を求める、正:相関係数を求める

前説:「Error Occurred: 'float' object has no attribute 'shape'」と表示され困りました。

  1. VSCode上でPythonを使いMySQLからデータを引っ張ってきます。
  2. データをpandasのデータフレーム(df)に収めます。
  3. dfに収めたデータの「相関係数」を求めるためイロイロ操作しますが、冒頭のエラーが表示されます。
  4. importしてあるのは mysql.connector, pandas, numpy

列ごとに nx = np.array(df['コラム名').astype(np.float64) のように書き「相関係数」をもとめる作業に入ることができました。

  1. 「Error Occurred: 'float' object has no attribute 'shape'」の意味がよくわかりませんでした。
  2. 何か「属性」を付加するなりハッキリさせたら良さそうだということがネット検索でわかりました。
  3. ネット検索など繰り返し、「.astype(np.float64)」を加えたりすることでエラーが出なくなりました。
  4. 到達点が正解かどうかよくわかりませんが、とりあえず動いてくれてます。詳しい方、ご教示ください。

恥ずかしながらのスクリプトは次の通りです。

import mysql.connector as mydb
import pandas as pd
import numpy as np

conn= mydb.connect(
	host='localhost',  #このあたりは皆さんの環境に合わせてください
	port='',
	user='user
	password='',
	database='data_base'
	)
cursor = conn.cursor(buffered = True)
sql = f''' SELECT x, y FROM table_data;'''
cursor.execute(sql)
df = pd.DataFrame(cursor.fetchall())
df.columns = ['x','y']
nx = np.array(df['x']).astype(np.float64)
ny = np.array(df['y']).astype(np.float64)
print(np.corrcoef(nx,ny))

conn.close()

失敗した横着 np.array(df).astype(np.float64)  など一気にやろうとしたら対応関係がNGになったみたいで

小見出しの通り、一気にDataframe(今回は「df」)をnumpy配列にしようとしたらダメでした。

ひとまず働いているようだ、という以上のことがわかりません。手探りの結果、こうなっている、という程度です。詳しくおわかりのみなさん、ご教示のほど。