我想重塑我的数据向量,但是当我运行代码时
from pandas import read_csv
import numpy as np
#from pandas import Series
#from matplotlib import pyplot
series =read_csv('book1.csv', header=0, parse_dates=[0], index_col=0, squeeze=True)
A= np.array(series)
B = np.reshape(10,10)
print (B)
我发现了错误
result = getattr(asarray(obj),method)(* args,** kwds)
ValueError:新数组的总大小必须保持不变
我的数据
Month xxx
1749-01 58
1749-02 62.6
1749-03 70
1749-04 55.7
1749-05 85
1749-06 83.5
1749-07 94.8
1749-08 66.3
1749-09 75.9
1749-10 75.5
1749-11 158.6
1749-12 85.2
1750-01 73.3
.... ....
.... ....
答案 0 :(得分:1)
您尝试做的事情似乎有两个问题。第一个涉及你如何读取熊猫中的数据:
series = read_csv('book1.csv', header=0, parse_dates=[0], index_col=0, squeeze=True)
print(series)
>>>>Empty DataFrame
Columns: []
Index: [1749-01 58, 1749-02 62.6, 1749-03 70, 1749-04 55.7, 1749-05 85, 1749-06 83.5, 1749-07 94.8, 1749-08 66.3, 1749-09 75.9, 1749-10 75.5, 1749-11 158.6, 1749-12 85.2, 1750-01 73.3]
这并不是在数据框中为您提供一列浮点数,其中日期为索引,它将每行放入索引,日期和值。我认为你想添加delimtier=' '
以便它正确地分割行:
series =read_csv('book1.csv', header=0, parse_dates=[0], index_col=0, delimiter=' ', squeeze=True)
>>>> Month
1749-01-01 58.0
1749-02-01 62.6
1749-03-01 70.0
1749-04-01 55.7
1749-05-01 85.0
1749-06-01 83.5
1749-07-01 94.8
1749-08-01 66.3
1749-09-01 75.9
1749-10-01 75.5
1749-11-01 158.6
1749-12-01 85.2
1750-01-01 73.3
Name: xxx, dtype: float64
这会为您提供日期作为' xxx'的索引。列中的值。
其次是重塑。在这种情况下,错误是非常具有描述性的。如果您想使用numpy.reshape
,则无法重塑为与原始数据具有不同元素数量的布局。例如:
import numpy as np
a = np.array([1, 2, 3, 4, 5, 6]) # size 6 array
a.reshape(2, 3)
>>>> [[1, 2, 3],
[4, 5, 6]]
这很好,因为数组的长度为6,我正在重塑为2 x 3
,并且2 x 3 = 6。
但是,如果我尝试:
a.reshape(10, 10)
>>>> ValueError: cannot reshape array of size 6 into shape (10,10)
我收到了错误,因为我需要10 x 10 = 100个元素来重塑,而我只有6个。
如果没有完整的数据集,我们无法确切知道,但我认为这是您遇到的同样问题,尽管您将整个数据帧转换为numpy数组。