python數據預處理——Excel和txt文本的數據儲存和讀取

python數據預處理——Excel和txt文本的數據儲存和讀取

1、讀取txt文件

首先在python程序目錄下新建一個需要讀取的txt文件(我這裏的數據是一個簡單的矩陣)命名爲data

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

注意數據之間不要打逗號

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

輸出結果:

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

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

輸出結果:

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

這裏的skiprows是指跳過第幾行,dtype是將數據類型設置爲整型

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

輸出結果:

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

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是指會把每一列當成一個向量輸出, 而不是合併在一起.

2、儲存數據到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)]

3、讀取存儲聯合使用

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)]

4、數據導入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)]

現在就不會進行數據更新了。

5、讀取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

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章