python读取大量csv
问题描述
需要对近5w个csv进行归并处理,使用pandas
文件夹和文件不能以数字作为开头
开头的话,python会加上各种/x,看了些教程,最后觉得不如改名,往前面添加同样的字母来解决问题。
#给文件夹和子文件夹加上ds
#作用:避免以数字开头,python无法读取
import os
import sys
path = "F:\xxx"
files = os.listdir(path)
newName = ""
for name in files:
path1 = path +'\\'+ name; # 第一层目录fsk_csv
files1 = os.listdir(path1)
for name1 in files1:
path2 = path1 + '\\' + name1; # 第二层目录2FSK_0dB
files2 = os.listdir(path2)
for name2 in files2: #读取第二层目录内文件并改名
a = os.path.split(name2)
os.rename(path2+'\\'+name2, path2+'\\ds'+ str(a[1]))
工作了1分钟全搞定。
读取csv
第一次用pandas的read_csv读取出现问题:读取时总把第一行作列属性,使我的数据少了一行。
pd.read_csv( csv_name_list[0],header=None),加上header=None可解决问题
import pandas as pd
import os
# 要拼接的文件夹及其完整路径,注不要包含中文
## 待读取批量csv的文件夹
read_path = "F:\xxx"
# 修改当前工作目录
os.chdir(read_path)
# 将该文件夹下的所有文件名存入列表
csv_name_list = os.listdir()
# 读取第一个CSV文件并包含表头,用于后续的csv文件拼接
df = pd.read_csv( csv_name_list[0],header=None) #不把第一行作列属性
dfv = df.values
搞定
python字符串与数值转换
https://www.cnblogs.com/chenfulin5/p/7813791.html
这里主要用了int().
python中的hdf5
纠结了很久,发觉如果实时读取csv进python存储成变量速度还是太慢,意义不大。
加上这批数据是用来存储训练模型的数据,所以要求不用那么高,不如直接存成一个hdf5,提供给后面的兄弟训练模型。
由于我只需要dataset,hdf5中的group和其他概念我也暂时用不上,贴一个pyhton最简单的构建hdf5的方式
import h5py
f = h5py.File("mytestfile.hdf5", "w")
dsetx = f.create_dataset("X", data=ndarrayX)
dsety = f.create_dataset("Y", data=ndarrayY)
dsetz = f.create_dataset("Z", data=ndarrayZ)
f.close()
读取更简单,直接读:
test_file = h5py.File(test_filename, 'r')
X = test_file['X']
Y = test_file['Y'][:]
Z = test_file['Z'][:]