使用 Pandas 创建 NumPy 数组
Posted
技术标签:
【中文标题】使用 Pandas 创建 NumPy 数组【英文标题】:Creating NumPy array with Pandas 【发布时间】:2015-12-16 21:33:24 【问题描述】:我正在尝试将 scikit 与一个电子表格 (.xlsx) 中的一些数据一起使用。为了实现这一点,我使用 Pandas 来读取电子表格,然后我打算使用 numpy 来使用 scikit。
这里的问题是,当我将我的 DF 结构转换为 numpy 时,我几乎丢失了所有数据!我认为这是因为它没有列名。只有原始数据。例如:
28.7967 16.0021 2.6449 0.3918 0.1982
31.6036 11.7235 2.5185 0.5303 0.3773
162.052 136.031 4.0612 0.0374 0.0187
到目前为止我的代码:
def split_data():
test_data = pd.read_excel('magic04.xlsx', sheetname=0, skip_footer=16020)
#code below prints correctly the data
print test_data.iloc[:, 0:10]
#none of the code below work as expected
test1 = np.array(test_data.iloc[:, 0:10])
test2 = test_data.as_matrix()
我真的迷路了。非常欢迎任何帮助...
【问题讨论】:
【参考方案1】:我建议您在read_excel
中使用header=None
。请参阅以下内容:
df = pd.read_excel('stuff.xlsx')
>> df
28.7967 16.0021 2.6449 0.3918 0.1982
0 31.6036 11.7235 2.5185 0.5303 0.3773
1 162.0520 136.0310 4.0612 0.0374 0.0187
>> df.ix[:, 1: 2]
0
1
对比:
df = pd.read_excel('stuff.xlsx', header=None)
>> df
0 1 2 3 4
0 28.7967 16.0021 2.6449 0.3918 0.1982
1 31.6036 11.7235 2.5185 0.5303 0.3773
2 162.0520 136.0310 4.0612 0.0374 0.0187
>> df.ix[:, 1: 2]
1 2
0 16.0021 2.6449
1 11.7235 2.5185
2 136.0310 4.0612
【讨论】:
成功了!!!它适用于两种方式:属性“.iloc[:, 0:X]”和方法“as_matrix()”!真的谢谢!以上是关于使用 Pandas 创建 NumPy 数组的主要内容,如果未能解决你的问题,请参考以下文章
如何使用 numpy 或 pandas 创建(或更改)数组/列表的维度?
使用包含多种类型的 numpy 数组创建 Pandas DataFrame
如何使用for循环创建一定长度的numpy数组(或pandas数据框)?