最近在获取physionet.org网站的数据时,发现是psv文件存储的,虽然网站提供了基于os.argv数据流形式的处理方式,但是由于tensorflow的环境太难配置了,懒得配,所以写了个代码,进行psv文件转csv文件的操作。
import pandas as pd
import numpy as np
import os
#读取psv文件
def read_psv(path):
Coursedata=[]
Coursedataform=[]
dic={}
with open(path, 'r', newline="") as psvfile:
for line in psvfile.readlines():
Coursedata.append(line[0:len(line)-1])#去掉最后的换行符
for i in Coursedata:
Coursedataform.append(i.split("|"))#psv文件使用|符号分割数据
return Coursedataform
#psv转csv文件
def psv_to_csv(psv_data):
temp_df = pd.DataFrame(columns = psv_data[0]) #构建dataframe
temp_array = np.array(psv_data[1:]).T #数据转置
for i in range(len(psv_data[0])):
temp_df[psv_data[0][i]] = temp_array[i]
return temp_df
psv_path = r'psv所在的文件目录地址'
psv_files = os.listdir(psv_path) #得到文件夹下的所有文件名称
if 1 - os.path.exists(psv_path + '\\转成csv文件'):
os.mkdir(psv_path + '\\转成csv文件')
for file in psv_files:
if 'psv' in file:
try:
psv_data = read_psv(psv_path + '\\' + file)
csv_data = psv_to_csv(psv_data)
csv_data.to_csv(psv_path + '\\转成csv文件\\' + file.split('.')[0] + '.csv')
except:
print('转换失败的文件', file)