タイトル一部訂正:誤=標準偏差を求める、正:相関係数を求める
- 前説:「Error Occurred: 'float' object has no attribute 'shape'」と表示され困りました。
- 列ごとに nx = np.array(df['コラム名').astype(np.float64) のように書き「相関係数」をもとめる作業に入ることができました。
- 恥ずかしながらのスクリプトは次の通りです。
- 失敗した横着 np.array(df).astype(np.float64) など一気にやろうとしたら対応関係がNGになったみたいで
前説:「Error Occurred: 'float' object has no attribute 'shape'」と表示され困りました。
- VSCode上でPythonを使いMySQLからデータを引っ張ってきます。
- データをpandasのデータフレーム(df)に収めます。
- dfに収めたデータの「相関係数」を求めるためイロイロ操作しますが、冒頭のエラーが表示されます。
- importしてあるのは mysql.connector, pandas, numpy
列ごとに nx = np.array(df['コラム名').astype(np.float64) のように書き「相関係数」をもとめる作業に入ることができました。
- 「Error Occurred: 'float' object has no attribute 'shape'」の意味がよくわかりませんでした。
- 何か「属性」を付加するなりハッキリさせたら良さそうだということがネット検索でわかりました。
- ネット検索など繰り返し、「.astype(np.float64)」を加えたりすることでエラーが出なくなりました。
- 到達点が正解かどうかよくわかりませんが、とりあえず動いてくれてます。詳しい方、ご教示ください。
恥ずかしながらのスクリプトは次の通りです。
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配列にしようとしたらダメでした。
ひとまず働いているようだ、という以上のことがわかりません。手探りの結果、こうなっている、という程度です。詳しくおわかりのみなさん、ご教示のほど。