使用以下方法:
import numpy as np import pandas as p print "loading data.." traindata = np.array(p.read_table('train.tsv'))[:,2] column_headings = np.array(p.read_table('train.tsv'))[:,-1] print "complete..."
当我尝试运行以下命令时:
m,n = traindata.shape
我收到错误:
--------------------------------------------------------------------------- ValueError Traceback (most recent call last) <ipython-input-13-570e485a0a88> in <module>() ----> 1 m,n = traindata.shape ValueError: need more than 1 value to unpack
我希望能够运行:
打印 m、n、列标题
在我看来,它应该返回类似这样的内容:
7395,27,“url”“urlid”“样板”“alchemy_category” “alchemy_category_score”“avglinksize”“commonlinkratio_1” “commonlinkratio_2”“commonlinkratio_3”“commonlinkratio_4” “compression_ratio”“embed_ratio”“framebased” “frameTagRatio”“hasDomainLink”“html_ratio”“image_ratio” “is_news”“lengthyLinkDomain”“linkwordscore”“news_front_page”“non_markup_alphanum_characters”“ numberOfLinks”“numwords_in_url”“parametrizedLinkRatio”“spelling_errors_ratio”“标签”
(总行数为 7,395,总列数为 27)。
最终我希望能够通过类似于以下的单个命令获取每列的值:
url_values = traindata.function('url')
但是,通过调查我发现 column_headers 打印不正确,而且出于某种原因,我只返回了一个维度。我如何才能以这种方式获取每列的值?
我做错了什么?如何才能实现所需的输出?
您使用 将数据转换traindata为一维数组[:,2],这就是为什么traindata.shape()只返回一个值。这会导致您的错误
traindata
[:,2]
traindata.shape()
ValueError:需要多于 1 个值才能解包
因此,您可以省略该部分并按如下方式调整代码以获得所需的输出:
import numpy as np import pandas as p print("loading data..") traindata = np.array(p.read_table('train.tsv'))#[:,2] column_headings = np.array(p.read_table('train.tsv', header=None))[0] print("complete...") m,n = traindata.shape print(m, n, column_headings)
输出:
6 27 ['url' 'urlid' 'boilerplate' 'alchemy_category' 'alchemy_category_score' 'avglinksize' 'commonlinkratio_1' 'commonlinkratio_2' 'commonlinkratio_3' 'commonlinkratio_4' 'compression_ratio' 'embed_ratio' 'framebased' 'frameTagRatio' 'hasDomainLink' 'html_ratio' 'image_ratio' 'is_news' 'lengthyLinkDomain' 'linkwordscore' 'news_front_page' 'non_markup_alphanum_characters' 'numberOfLinks' 'numwords_in_url' 'parametrizedLinkRatio' 'spelling_errors_ratio' 'label']