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)
例外:数据必须是一维的
因此,使用
np.random.random(大小=(10))
制作一维数组,然后可以用来制作数据帧。考虑将np.random.random(大小=(10,1))*2更改为np.random.random(大小=10)*2