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")
輸出結果:
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文件內容爲:
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()
輸出結果:
但是上面這個程序會出現一個問題,每執行一次程序原先的數據就會被更新,
再來看下面這個程序
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")
現在就不會進行數據更新了。
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