python读取大量csv

python读取大量csv

  • 问题描述
  • 文件夹和文件不能以数字作为开头
  • 读取csv
  • python字符串与数值转换
  • python中的hdf5

问题描述

需要对近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

python读取大量csv_第1张图片
第一次用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读取大量csv_第2张图片

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'][:]

你可能感兴趣的:(Pyhton)