深度学习有了网络,还得加载进来,读取进来。
常用地方法就是用pandas包
比如我们有个excel文件,名叫"test.xlsx"
文件中我们随便输入一些数:
1 2 3 4 5 6 7 8 9 10 11 12然后我们用panda包进行读取并且打出来
import pandas as pd data = pd.read_excel('test.xlsx') print(data)但是打印出来的结果如下:
1 2 3 4 0 5 6 7 8 1 9 10 11 12可以发现这是一件很奇怪的事情,最左侧对每一行进行了标注序号,从0开始,并且它默认将第一行数据当作了表头,或者说列名。这是因为,pd.read_excel有一个默认的参数"header=0",0表示第1行,我们可以发现python数据逻辑中的索引都是从0开始的。
为了不让它将第一行作为表的列名,我们可以在读取数据的时候,传给它参数:
import pandas as pd data = pd.read_excel('test.xlsx',header=None) print(data)打印出的结果:
0 1 2 3 0 1 2 3 4 1 5 6 7 8 2 9 10 11 12它自动给每一行每一列都添加了索引。
如何查看数据信息
首先我们可以打印出这个数据的大小:
print(data.shape)也就是(3,4),表示数据是一个3行4列的矩阵。
print(data.info())会打印DataFrame的详细信息。
比如我重新读取一个excel文件,并且打印它的详细信息:
读取excel数据已经完成! <class 'pandas.core.frame.DataFrame'> RangeIndex: 1500 entries, 0 to 1499 Columns: 800 entries, 0 to 799 dtypes: float64(800) memory usage: 9.2 MB None它告诉我们有1500,800列,dtypes64(800)说明这800列数据,都是64位浮点型。
我们可以算一下,1个64位的浮点数需要占用64bit,即64/8=8Byte,1500X800个浮点数就需要占用1500X800X8=9.610^6Byte。
也就是9.610^6/1024=9375KB,也就是9375/1024=9.15527 MB≈\approx≈9.2MB。
print(data.describe())打印出的信息是数据的摘要,每一列数据
0 1 ... 798 799 count 1500.000000 1500.000000 ... 1500.000000 1500.000000 mean 1.372601 1.372463 ... 4.958753 4.968210 std 0.685117 0.671365 ... 3.926098 3.953220 min 0.036198 0.031655 ... 0.036077 0.093626 25% 0.854522 0.866613 ... 1.217818 1.179935 50% 1.311026 1.306155 ... 2.404762 2.327359 75% 1.805137 1.796843 ... 8.893706 8.957338 max 4.146413 4.711889 ... 11.713591 12.103350 [8 rows x 800 columns]它给出了每一列数据的统计信息
如何在读取后取出来索引某些数据
我觉得,pandas的逻辑还是以列为单位保存数据的,因为它会统计每一列的数据的统计信息。
如果要取第i列,那么可以用data[i-1],比如第1列,就是data[0]。每一列都是Series数据类型:
firstCol = data[0] #取第一列 print(f"firstCol的数据类型:{type(firstCol)}") print(f"data的数据类型:{type(data)}")最终打印信息如下:
firstCol的数据类型:<class ‘pandas.core.series.Series’>
data的数据类型:<class ‘pandas.core.frame.DataFrame’>
有一种更好操作的方法:
data.iloc[0,:]表示取出来第1行,
data.iloc[:,0]表示取出来第1列
data.iloc[0,0]表示取出来第1行第1列。
.iloc表示按位置提取,这和matab的操作很像。