1

SFrame である「sales」というデータセットがあります。「sqft_living」という列があり、それをログ値に変換したいと考えています。列のデータ型は float です。しかし、log()関数で変換しようとすると、すでにフロートですが、フロートを要求します。コードとエラーのスクリーンショットを次に示します。問題を見つけて列をログに変換するのを手伝ってくれませんか

a=train_data['sqft_living']
a

result of a
dtype: float
Rows: 17384
[1180.0, 2570.0, 770.0, 1960.0,...]

これは、「a」が浮動小数点であることを示しています

次に、以下のコードを使用して、「log_sqft_living」という新しい列に値を記録するように変換しました

train_data['log_sqft_living']= log(a)

しかし、それは以下のエラーを与えます

---------------------------------------------------------------------------
TypeError                                 Traceback (most recent call last)
<ipython-input-23-6de995ee575f> in <module>()
----> 1 train_data['log_sqft_living']= log(a)

TypeError: a float is required
4

4 に答える 4

2

numpy.log配列で使用できます

>>> import numpy
>>> a = numpy.array([180.0, 2570.0, 770.0, 1960.0])
>>> b = numpy.log(a)
>>> b
array([ 5.19295685,  7.85166118,  6.64639051,  7.58069975])
于 2016-07-03T17:27:48.807 に答える
1

あなたの例でaは、float 型の SArray です。float を取る関数に渡すことはできません。ただし、次のように SArray に float を取る任意の関数を適用できます。

import math
log_a = a.apply(math.log)
于 2016-07-05T05:42:34.250 に答える
0

Python シェルを使用して Windows 10 で Python 3.5 を使用する

Rahulが指摘したようにa、リストです。
以下に示すように、リストの要素を取得できます。これは機能します。

>>> import math
>>> train_data=[12.1, 14.5, 56.5, 43.2]
>>> a=train_data
>>> a
[12.1, 14.5, 56.5, 43.2]
>>> another_train_data=math.log(a[1])
>>> another_train_data
2.6741486494265287
>>> 
于 2016-07-03T17:21:31.450 に答える