从Pandas数据帧转换为TensorFlow张量对象

时间:2017-02-16 23:56:26

标签: python pandas tensorflow

我还是Python,机器学习和TensorFlow的新手,但是我会尽力向前跳。我可以使用一些帮助。

我的数据目前处于Pandas数据框中。如何将其转换为TensorFlow对象?我试过了

dataVar_tensor = tf.constant(dataVar)
depth_tensor = tf.constant(depth)

但是,我收到错误[15780 rows x 9 columns] - got shape [15780, 9], but wanted []

我确定这可能是一个简单的问题,但我真的可以使用这个帮助。

非常感谢

PS。我在Windows 10上使用Anaconda Python 3.5运行tensorflow 0.12

6 个答案:

答案 0 :(得分:7)

我想我已经拥有了! :d

我使用.as_matrix()将我的Pandas数据帧转换为Numpy数组

现在,使用

dataVar_tensor = tf.constant(dataVar, dtype = tf.float32, shape=[15780,9])
depth_tensor = tf.constant(depth, 'float32',shape=[15780,1])

似乎有效。我不能说它确实存在,因为我有其他障碍需要克服以使我的代码正常工作,但它有望朝着正确的方向迈出一步。谢谢你的帮助

顺便说一下,我在下一个问题中继续尝试让教程处理我自己的数据Converting TensorFlow tutorial to work with my own data

答案 1 :(得分:3)

以下工作很容易基于numpy数组输入数据:

import tensorflow as tf
import numpy as np
a = np.array([1,2,3])
with tf.Session() as sess:
    tf.global_variables_initializer().run()

    dataVar = tf.constant(a)
    print(dataVar.eval())

-> [1 2 3]

不要忘记启动张量对象的sessionrun()eval()来查看其内容;否则它只会给你一般的描述。

我怀疑由于您的数据位于DataFrame中而不是简单数组,因此您需要尝试使用shape tf.constant() Thread.currentThread().interrupt(),而您当前未指定,为了帮助它理解DataFrame的维度并处理其索引等?

答案 2 :(得分:3)

这是我发现可以在google colab上运行的一种解决方案,也许也应该在本地计算机上运行

import pandas as pd
import tensorflow as tf
#Read the file to a pandas object
data=pd.read_csv('filedir')
#convert the pandas object to a tensor
data=tf.convert_to_tensor(data)
type(data)

这必须打印类似

tensorflow.python.framework.ops.Tensor

希望这会有所帮助:)

`

答案 3 :(得分:0)

hottbox.pdtools.utils(HOTTBOX API的熊猫集成工具)提供功能

   pd_to_tensor(df[, keep_index])
   tensor_to_pd(tensor[, col_name])

双向转换。

答案 4 :(得分:0)

您可以在tf.estimator.inputs.pandas_input_fn函数中使用make_input_fn(X, y, num_epochs)。但是,我没有设法使其与多索引一起使用。我通过使用df.reset_index(drop=True)

将其转换为标准整数索引来解决此问题

答案 5 :(得分:0)

您可以像这样将dataframe列转换为张量对象:

tf.constant((df['column_name']))

这应该返回一个张量变量,看起来像这样:

<tf.Tensor: id=275634, shape=(48895,), dtype=float64, numpy=
array([1, 2, ...])>

此外,您可以根据需要投放任意数量的数据框列,例如:

tf.constant(([cdf['column1'], cdf['column2']]))

希望这会有所帮助。