python数据预处理——Excel和txt文本的数据储存和读取

python数据预处理——Excel和txt文本的数据储存和读取

一、读取txt文件

首先在python程序目录下新建一个须要读取的txt文件(我这里的数据是一个简单的矩阵)命名为datapython

1 2 3 4 5
6 7 8 9 10
11 12 13 14 15
16 17 18 19 20web

注意数据之间不要打逗号svg

import numpy as np
np.loadtxt('data.txt')
print(a)

输出结果:ui

[[ 1. 2. 3. 4. 5.]
[ 6. 7. 8. 9. 10.]
[11. 12. 13. 14. 15.]
[16. 17. 18. 19. 20.]]spa

import numpy as np
a=np.loadtxt('data.txt',skiprows=1,dtype=int)
print(a)

输出结果:3d

[[ 6 7 8 9 10]
[11 12 13 14 15]
[16 17 18 19 20]]code

这里的skiprows是指跳过第几行,dtype是将数据类型设置为整型xml

import numpy as np
a=np.loadtxt('data.txt',skiprows=1,usecols=(0,2),dtype=int)
print(a)

输出结果:对象

[[ 6 8]
[11 13]
[16 18]]blog

usecols是指输出第几列,这里的usecols=(0,2)是指输出的第一列和第三列。

import numpy as np
(a,b)=np.loadtxt('data.txt',skiprows=1,usecols=(0,2),dtype=int,unpack=True)
print(a,b)

输出结果:

[ 6 11 16] [ 8 13 18]

unpack=True是指会把每一列当成一个向量输出, 而不是合并在一块儿.

二、储存数据到txt文件

import numpy as np
a=1,2,3,4,5,6,7,8
np.savetxt('text.txt',a,fmt="%d",delimiter="\n")

输出结果:

在这里插入图片描述

text.txt指你要建立的txt文件名称、a表明你要存储的数据,fnt指你把数据存储为何类型,delimiter="\n"换行。

fnt的类型表示方法跟C语言类似,具体能够参见C语言,这里我把输出整型换成双精度浮点型,

import numpy as np
a=1,2,3,4,5,6,7,8
np.savetxt('text.txt',a,fmt="%lf",delimiter="\n")

输出结果:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-en5BaPC5-1574495839295)(C:\Users\jh\AppData\Roaming\Typora\typora-user-images\1574487466537.png)]

三、读取存储联合使用

import numpy as np
(a,b)=np.loadtxt('data.txt',skiprows=1,usecols=(0,2),dtype=int,unpack=True)
print(a,b)
np.savetxt('text.txt',a,fmt="%d",delimiter="\n")

意义:将data文件中的”部分“数据存储到text中。

输出结果:

(a,b)=[ 6 11 16] [ 8 13 18]

text文件内容为:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-euosiExU-1574495839295)(C:\Users\jh\AppData\Roaming\Typora\typora-user-images\1574487873116.png)]

四、数据导入Excel

import xlsxwriter
a=[1,2,3,4,5,6,7,8,9,10]
workbook = xlsxwriter.Workbook('haha.xlsx')    # 建立一个名为‘haha.xlsx’的工做表
worksheet = workbook.add_worksheet()            # 建立一个工做表对象
for i in range(len(a)):
    worksheet.write(0,i,a[i])  
workbook.close()

输出结果:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-3NJFXH5D-1574495839296)(C:\Users\jh\AppData\Roaming\Typora\typora-user-images\1574488468936.png)]

可是上面这个程序会出现一个问题,每执行一次程序原先的数据就会被更新,

再来看下面这个程序

from openpyxl import load_workbook
import openpyxl
a=[1,2,3,4,5,6,7,8,9,10]
wb = load_workbook("haha.xlsx")
worksheet = wb.active
for i in range(len(a)):
    worksheet.cell(1,i+1,a[i])
wb.save("haha.xlsx")

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-tpxfDUkf-1574495839296)(C:\Users\jh\AppData\Roaming\Typora\typora-user-images\1574490180686.png)]

如今就不会进行数据更新了。

五、读取Excel数据

import xlrd
data=xlrd.open_workbook("haha.xlsx")
table=data.sheets()[0]
c=table.row_values(1)
print(c)

输出结果:

[1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0, 10.0]

读取出Excel中第2行的数据。

import xlrd
data=xlrd.open_workbook("haha.xlsx")
table=data.sheets()[0]
nrows = table.nrows  # 有效行数
ncols = table.ncols  # 有效列数
table.col_slice(1, start_rowx=0, end_rowx=None) #返回由该列中全部的单元格对象组成的列表

第二列对象组成:[number:2.0, number:2.0]

table.col_values(1, start_rowx=0, end_rowx=None) #返回由该列中全部单元格的数据组成的列表

第二列数据组成:[2.0, 2.0]

table.row_values(rowx, start_colx=0, end_colx=None) #第二行中全部单元格的数据组成的列表

[1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0, 10.0]

table.cell(1,2)  #返回第二行第三列单元格对象

number:3.0

table.cell_value(1,1) #返回第二行第二列的数据

二行中全部单元格的数据组成的列表

[1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0, 10.0]

```python
table.cell(1,2)  #返回第二行第三列单元格对象

number:3.0

table.cell_value(1,1) #返回第二行第二列的数据

2.0