質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
NumPy

NumPyはPythonのプログラミング言語の科学的と数学的なコンピューティングに関する拡張モジュールです。

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

pandas

Pandasは、PythonでRにおけるデータフレームに似た型を持たせることができるライブラリです。 行列計算の負担が大幅に軽減されるため、Rで行っていた集計作業をPythonでも比較的簡単に行えます。 データ構造を変更したりデータ分析したりするときにも便利です。

Q&A

解決済

3回答

14217閲覧

object型からnp.float32への変換方法

loreeeee

総合スコア40

NumPy

NumPyはPythonのプログラミング言語の科学的と数学的なコンピューティングに関する拡張モジュールです。

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

pandas

Pandasは、PythonでRにおけるデータフレームに似た型を持たせることができるライブラリです。 行列計算の負担が大幅に軽減されるため、Rで行っていた集計作業をPythonでも比較的簡単に行えます。 データ構造を変更したりデータ分析したりするときにも便利です。

0グッド

0クリップ

投稿2018/07/05 08:31

編集2018/07/05 12:18

以下のコードはサイトのhtmlをpandasで抽出しdataframeにまとめ,特定の要素を抽出するコードです.要素抽出まではできたのですが,抽出した全要素の型をobject型⇒np.float32に変換したいのですが,AttributeError: module 'pandas' has no attribute 'float32'と怒られてしまいました.どなたか型変換の方法を教えていただけないでしょうか?

以下,コードと出力結果です.環境はpython3.6 on anacondaです

python

1import pandas as pd 2 3url='http://163.49.30.82/cgi-bin/DspWaterData.exe?KIND=6&ID=303031283301010&BGNDATE=20021201&ENDDATE=20021231&KAWABOU=NO' 4dfs = pd.read_html(url, header=0,index_col=0)#htmlを読み込む 5df = dfs[1] #headerを取り除く 6#print(df) 7 8raw_data = df.values #値を格納 9data = raw_data[1,:] #data.shape is (1,24) 10#data = raw_data[1,:] #要素を抽出 11print(data) 12print('type(data): ', type(data)) 13print('data.dtype: ', data.dtype) 14 15data_float = data(dtype=np.float32) #object -> np.float32に変換 16print(type(data_float))

出力結果は

python

1['222.67' '241.94' '234.14' '226.46' '222.67' '226.46' '222.67' '211.49' 2 '211.49' '209.66' '204.20' '198.82' '186.53' '177.99' '172.97' '166.38' 3 '161.52' '161.52' '164.75' '172.97' '190.00' '195.27' '193.50' '190.00'] 4type(data): <class 'numpy.ndarray'> 5data.dtype: object 6--------------------------------------------------------------------------- 7AttributeError Traceback (most recent call last) 8<ipython-input-39-f78f10ab5754> in <module>() 9 16 print('data.dtype: ', data.dtype) 10 17 11---> 18 data_float = data(dtype=np.float32) #object -> np.float32に変換したい... 12 19 print(type(data_float)) 13 20 14 15AttributeError: module 'pandas' has no attribute 'float32'

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答3

0

単純に読み込み方の問題かと思います。

1行目の余分なデータを skoprowsを用いてスキップすると、何の問題も無く
全てのデータが float64で読み込めました。

Python

1import pandas as pd 2 3url = 'http://163.49.30.82/cgi-bin/DspWaterData.exe?KIND=6&ID=303031283301010&BGNDATE=20021201&ENDDATE=20021231&KAWABOU=NO' 4df = pd.read_html(url, skiprows=[0], header=[0], index_col=0)[1] 5print(df.dtypes) 6#1時 float64 7#2時 float64 8#3時 float64 9#4時 float64 10#5時 float64 11#6時 float64 12#7時 float64 13#8時 float64 14#9時 float64 15#10時 float64 16#11時 float64 17#12時 float64 18#13時 float64 19#14時 float64 20#15時 float64 21#16時 float64 22#17時 float64 23#18時 float64 24#19時 float64 25#20時 float64 26#21時 float64 27#22時 float64 28#23時 float64 29#24時 float64 30#dtype: object

投稿2018/07/05 12:20

magichan

総合スコア15898

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

ベストアンサー

文字列ならnumpyの文字列型になりそうな気がしますが・・・まあ読み込み方によってはオブジェクト型もあり得るのか。

そして
AttributeError: module 'pandas' has no attribute 'float32'
というエラーメッセージがとても不可解な気がします。import pandas as npとかうっかりどこかに書いてたりしない?

それはそれとして、単純に型変換したければ

python

1data_float = data.astype(np.float32)

でできるんじゃないかなぁ、と思います。でもまずはAttributeErrorを解消しないと駄目ですけど。

投稿2018/07/05 12:11

hayataka2049

総合スコア30933

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

loreeeee

2018/07/05 12:25

>import pandas as npとかうっかりどこかに書いてたりしない? 書いてありました.それでよくわからないエラー文が出てしまったのですね...jupyter-notebbok上で作業していたのですが,,こういうのに気をつけないといけないのですね.自分の不注意でした. 型変換も回答の方法でできました.ありがとうございました.
guest

0

オブジェクト data が配列であることは、出力結果から明らかだと思います。

['222.67' '241.94' '234.14' '226.46' '222.67' '226.46' '222.67' '211.49'

'211.49' '209.66' '204.20' '198.82' '186.53' '177.99' '172.97' '166.38'
'161.52' '161.52' '164.75' '172.97' '190.00' '195.27' '193.50' '190.00']
type(data): <class 'numpy.ndarray'>
data.dtype: object

24個の実数からなる配列 data を、1つの実数にするには
1. 最初の要素の値を使う (data[0])
2. 全部の要素の合計を使う
3. 要素の平均を使う
4. 最後の要素の値をつかう (data[len(data)-1])
というような操作/変換のいずれかをしなくてはなりません。

loreeeeeさんは、以下の配列から、どのような実数が出てきたら満足ですか?

['222.67' '241.94' '234.14' '226.46' '222.67' '226.46' '222.67' '211.49'
'211.49' '209.66' '204.20' '198.82' '186.53' '177.99' '172.97' '166.38'
'161.52' '161.52' '164.75' '172.97' '190.00' '195.27' '193.50' '190.00']

まず、どうしたいのかを決めましょう。それが決まれば、コードにする方法はあります!

投稿2018/07/05 08:53

coco_bauer

総合スコア6915

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

loreeeee

2018/07/05 09:43 編集

目的が不明遼でしたので編集しました. やりたいことは['222.67' '241.94' '234.14' '226.46' '222.67' '226.46' '222.67' '211.49' '211.49' '209.66' '204.20' '198.82' '186.53' '177.99' '172.97' '166.38' '161.52' '161.52' '164.75' '172.97' '190.00' '195.27' '193.50' '190.00']の各要素はstr型になっているので全ての要素をnp.float32に変換する作業になります.
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問