Pandas “如何修复”;数据必须是一维的;python中的异常

Pandas “如何修复”;数据必须是一维的;python中的异常,pandas,dataframe,Pandas,Dataframe,我试图创建一个数据集来检查我的逻辑回归算法,但是我无法从字典中创建一个数据帧。 我得到一个“数据必须是一维”的例外 x1 = np.random.random(size=(10,1))*2 x2 = np.random.random(size=(10,1))*2 x3 = np.random.random(size=(10,1))*2 + 2 x4 = np.random.random(size=(10,1))*2 + 2 y0 = np.zeros(

我试图创建一个数据集来检查我的逻辑回归算法,但是我无法从字典中创建一个数据帧。 我得到一个“数据必须是一维”的例外

    x1 = np.random.random(size=(10,1))*2
    x2 = np.random.random(size=(10,1))*2

    x3 = np.random.random(size=(10,1))*2 + 2
    x4 = np.random.random(size=(10,1))*2 + 2

    y0 = np.zeros(shape=(10,1))
    y1 = np.ones(shape=(10,1))

    plt.scatter(x1,x2, color='g', marker='o')
    plt.scatter(x3,x4, color='r', marker='o')

    dict_data = { 'X1':np.concatenate((x1,x3)), 
                  'X2':np.concatenate((x2,x4)),
                   'Y':np.concatenate((y0,y1))}

    data = pd.DataFrame(dict_data, index=np.arange(20))
我把它作为输出,错误数据必须是一维

    --------------------------------------------------------------------------
Exception                                 Traceback (most recent call last)
<ipython-input-49-fe81f079ebc6> in <module>
     13 dict_data = { 'X1':np.concatenate((x1,x3)), 'X2':np.concatenate((x2,x4)),'Y':np.concatenate((y0,y1))}
     14 #print(dict_data.shape)
---> 15 data = pd.DataFrame(dict_data, index=np.arange(20).reshape(20))

~/anaconda3/lib/python3.6/site-packages/pandas/core/frame.py in __init__(self, data, index, columns, dtype, copy)
    328                                  dtype=dtype, copy=copy)
    329         elif isinstance(data, dict):
--> 330             mgr = self._init_dict(data, index, columns, dtype=dtype)
    331         elif isinstance(data, ma.MaskedArray):
    332             import numpy.ma.mrecords as mrecords

~/anaconda3/lib/python3.6/site-packages/pandas/core/frame.py in _init_dict(self, data, index, columns, dtype)
    459             arrays = [data[k] for k in keys]
    460 
--> 461         return _arrays_to_mgr(arrays, data_names, index, columns, dtype=dtype)
    462 
    463     def _init_ndarray(self, values, index, columns, dtype=None, copy=False):

~/anaconda3/lib/python3.6/site-packages/pandas/core/frame.py in _arrays_to_mgr(arrays, arr_names, index, columns, dtype)
   6166 
   6167     # don't force copy because getting jammed in an ndarray anyway
-> 6168     arrays = _homogenize(arrays, index, dtype)
   6169 
   6170     # from BlockManager perspective

~/anaconda3/lib/python3.6/site-packages/pandas/core/frame.py in _homogenize(data, index, dtype)
   6475                 v = lib.fast_multiget(v, oindex.values, default=np.nan)
   6476             v = _sanitize_array(v, index, dtype=dtype, copy=False,
-> 6477                                 raise_cast_failure=False)
   6478 
   6479         homogenized.append(v)

~/anaconda3/lib/python3.6/site-packages/pandas/core/series.py in _sanitize_array(data, index, dtype, copy, raise_cast_failure)
   3273     elif subarr.ndim > 1:
   3274         if isinstance(data, np.ndarray):
-> 3275             raise Exception('Data must be 1-dimensional')
   3276         else:
   3277             subarr = _asarray_tuplesafe(data, dtype=dtype)

Exception: Data must be 1-dimensional
--------------------------------------------------------------------------
异常回溯(最后一次最近调用)
在里面
13 dict_data={'X1':np.连接((X1,x3)),'X2':np.连接((X2,x4)),'Y':np.连接((y0,y1))}
14#打印(dict#u data.shape)
--->15数据=局部数据帧(dict_数据,索引=np.arange(20).重塑(20))
~/anaconda3/lib/python3.6/site-packages/pandas/core/frame.py in\uuuuuu init\uuuuuu(self,data,index,columns,dtype,copy)
328数据类型=数据类型,复制=复制)
329 elif isinstance(数据、指令):
-->330 mgr=self.\u init\u dict(数据、索引、列、数据类型=dtype)
331 elif isinstance(数据,ma.MaskedArray):
332将numpy.ma.mrecords作为mrecords导入
~/anaconda3/lib/python3.6/site-packages/pandas/core/frame.py in_init_dict(self、data、index、columns、dtype)
459数组=[k个键的数据[k]
460
-->461将_数组_返回给_mgr(数组、数据名、索引、列、dtype=dtype)
462
463 def_init_ndarray(self、value、index、columns、dtype=None、copy=False):
~/anaconda3/lib/python3.6/site-packages/pandas/core/frame.py in_arrays\u to_mgr(数组、arr\u名称、索引、列、数据类型)
6166
6167#不要强行复制,因为不管怎么说,都会被排成一排
->6168数组=_均匀化(数组、索引、数据类型)
6169
6170#从BlockManager的角度
~/anaconda3/lib/python3.6/site-packages/pandas/core/frame.py in_同质化(数据、索引、数据类型)
6475 v=lib.fast\u multiget(v,oindex.values,默认值=np.nan)
6476 v=_sanitize_数组(v,索引,dtype=dtype,copy=False,
->6477提升(铸造失败=错误)
6478
6479均质。附加(v)
阵列中的~/anaconda3/lib/python3.6/site-packages/pandas/core/series.py(数据、索引、数据类型、复制、提升/转换失败)
3273 elif Subar.ndim>1:
3274如果存在(数据,np.N阵列):
->3275 raise异常('数据必须是一维')
3276其他:
3277 subar=\u asarray\u tuplesafe(数据,dtype=dtype)
例外:数据必须是一维的
生成形状(10,1)的二维数组,但熊猫将数据帧构造为一维数组的集合


因此,使用
np.random.random(大小=(10))
制作一维数组,然后可以用来制作数据帧。

考虑将
np.random.random(大小=(10,1))*2更改为
np.random.random(大小=10)*2