在處理數據的時候經常需要讀取txt文件類型的數據轉換為可執行的list,但是當我們有excel的文件,如何將excel文件轉換為每行固定長度的txt文件呢!如果數據量很少的情況下,人工處理還好,可是在大數據的情況下就顯得不可能了,這時如果我們利用程序執行這一命令就輕松多了,廢話不多說,下面介紹代碼。
首先在python中import兩個必要的包(我們面向的對象是.csv的excel文件)
1
2
|
import numpy as np import csv |
接下來,就是讀取excel文件,在讀取的文件路徑上本文采用絕對路徑的方式:
1
2
3
4
5
6
7
|
with open ( 'f:/data/data/airquality1.csv' , 'rb' ) as csv_file: all_lines = csv.reader(csv_file) for one_line in all_lines: list_file.append(one_line) #逐行讀取excel文件中的每一行append列表中 list_file.remove(list_file[ 0 ]) #該行表示我們去除excel文件的第一行,因為第一行往往都是數據的名稱介紹,如果沒有介紹就不用該行代碼了 arr_file = np.array(list_file) #轉換為矩陣形式 label = arr_file[:, 0 ] #第一列 //該行表示我們取excel文件中第一列數據進行實驗,下述貼出數據樣式(或者excel只有第一列有數據) |
然后進行一次額外的篩選,篩選的目的是因為我們所采集到的數據中一般都有一些數據缺失的情況,也就是顯示為“null”的情況,或者其他的形式,可以根據自己數據的缺失情況進行靈活更改(如果沒有數據缺失這部分代碼就不需要了):
1
2
3
|
for i in range ( len (label)): if label[i] = = 'null' : #注意我們文件中數據缺失時記錄為“null”,注意替換 label[i] = label[i - 1 ] |
上述步驟已經完成了在excel上的各種操作,接下來就是將我們讀取到的excel文件存儲到指定的txt文件中了:
1
2
3
4
|
file = open ( "f:/data/data/airquality48.txt" , "w" ) for n in range ( int ( len (label) / 48 )): #該行命令用來計算數據的長度,因為我們要存儲的txt文件中要使得每行包含48個數據,所以這里使用48 file .write(label[n * 48 :n * 48 + 48 ]) #將提取好的數據寫入到txt文件中 file .write( '\n' ) #注意轉換后文件最后一行空白需要刪除(寫完48個數據進行換行) |
好了,上述就行所描述的程序步驟,下面用結果展示下本程序所使用的數據樣式及運行結果,為了避免出錯先完整的貼下整體程序:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
|
# excel.csv文件轉換成txt # import numpy as np import csv def loadcsvfile1(): list_file = [] with open ( 'f:/data/data/airquality1.csv' , 'rb' ) as csv_file: all_lines = csv.reader(csv_file) for one_line in all_lines: list_file.append(one_line) list_file.remove(list_file[ 0 ]) arr_file = np.array(list_file) label = arr_file[:, 0 ] #第一列 # 處理文件中null情況 for i in range ( len (label)): if label[i] = = 'null' : label[i] = label[i - 1 ] #將數據以天為單位寫入txt文件中 file = open ( "f:/data/data/airquality48.txt" , "w" ) for n in range ( int ( len (label) / 48 )): file .write(label[n * 48 :n * 48 + 48 ]) file .write( '\n' ) #注意轉換后文件最后一行空白需要刪除 return label loadcsvfile1() |
本程序所使用的excel數據樣式為:
程序的運行結果將轉換為下述txt樣式(每行包含48個數據):
以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持服務器之家。
原文鏈接:https://blog.csdn.net/zijinmu69/article/details/80630858