1

我有一个名为“sales”的数据集,它是一个 SFrame。有一个名为“sqft_living”的列,我想将其转换为对数值。列的数据类型是浮点数。但是当我尝试用 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是一个浮点类型的 SArray。它不能传递给任何接受浮点数的函数。但是,您可以将任何带浮点数的函数应用于 SArray,如下所示:

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

Using Python 3.5 on Windows 10 using Python shell

As pointed out by Rahul, a is a list.
You can take an element of the list as shown below and it would work:

>>> 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 回答
0

如果您需要获取 SFrame 的日志,您需要这样做:

from math import log train_data['sqft_living'].apply(log)

于 2018-03-31T14:54:56.693 回答