天天看點

python之資料集制作讀取——CSV格式

      在Python機器學習中,如何讀取CSV資料呢,可以通過cvs或者pandas兩種方式讀取。

def Load_csv(csv_file_name="test.csv"):
    """
    從CSV檔案中讀取資料資訊
    :param csv_file_name: CSV檔案名
    :return: Data:二維數組
    """
    import csv
    csv_reader = csv.reader(open(csv_file_name))
    Data=[]
    for row in csv_reader:
        Data.append(row)
    print("Read All!")
    return Data

def get_mnist_test_data():
    """label 在前,相應的參數可以根據實際需求更改"""
    import pandas as pd
    import numpy as np
    data = pd.read_csv('Train.csv')
    images = data.iloc[:,1:].values
    labels = data.iloc[:,:1].values.ravel()
    images = np.multiply(images,1.0/255.0)
    images = images.reshape(images.shape[0],1,28,28)
    # print(images)
    return images,labels

def get_mnist_test_data1():
    """label在後,相應的參數可以根據實際需求更改"""
    import pandas as pd
    import numpy as np
    data = pd.read_csv('Train.csv')
    images = data.iloc[:,0:784].values
    labels = data.iloc[:,784:785].values.ravel()
    images = np.multiply(images,1.0/255.0)
    images = images.reshape(images.shape[0],1,28,28)
    return images,labels
           

      如何将檔案中的圖像資料存儲成CSV檔案呢?通過資料把圖像資料.append到數組中,然後通過CSV将數組中的資料下入CSV檔案。

def Write_csv(Data=[[None]],csv_file_name="Train.csv"):
    """
    向CSV檔案中寫入資料資訊,有标簽的話存放在資料最後位
    :param csv_file_name: CSV檔案名
    :return: None,檔案夾中會顯示寫入的資料資訊
    """
    import csv
    with open(csv_file_name,"w",newline='') as csvfile:
        writer = csv.writer(csvfile)#寫出來存在逗号
        # 沒有逗号的寫入方式,但是在讀取的時候需要更改并處理資料
        # writer=csv.writer(csvfile, delimiter=' ',quotechar='|', quoting=csv.QUOTE_MINIMAL)
        #寫入多行用writerows,寫入單行用writerow
        writer.writerows(Data)
    print("Write All!")

def Write_Data():
    import os
    import cv2
    #第一層檔案夾目錄
    filename="..\\imgout\\"
    Data = []
    for file_1 in os.listdir(filename):
        #第二層檔案夾目錄,第一層檔案夾下的下一層檔案夾目錄
        # print(file_1)file_1為檔案名
        filename_1 = os.path.join(filename, file_1)
        Data_tmp = []
        # print(file_1)
        for file_2 in os.listdir(filename_1):
            #第三層檔案夾,找到對應檔案的位址
            filename_2 = os.path.join(filename_1, file_2)
            Data_tmp1=[]
            # print(filename_2)
            img = cv2.imread(filename_2,0)
            w,h=img.shape[:2]
            # data=np.reshape(img,[w*h])
            for i in range(w):
                for j in range(h):
                    Data_tmp1.append(img[i,j])
            #添加标簽
            Data_tmp1.append(file_1)
            Data_tmp.append(Data_tmp1)
        Data=Data+Data_tmp

    Write_csv(Data)
           

      下面是TensorFlow的資料制作:https://blog.csdn.net/zx520113/article/details/84556489