将网络流CSV数据转换为Numpy阵列

时间:2019-03-21 04:58:00

标签: python pandas numpy machine-learning data-science

对此很难,因此请寻求一些建议。

我有多个包含交通流的大型CSV文档(80列,10万行)。这些列代表流量的不同特征,并为流量类型(Benign,DDoS,Bot等)提供标签列。

我的最终目标是将这些CSV文件分解为小的numpy数组,然后在行中添加0或1的标签类型的附加列。 (0 =正常流量,1 =任何类型的恶意流量)。 numpy数组可以表示为图像,我可以使用这些数据将其馈入转换神经网络。

到目前为止,我已经尝试将其分解为更小的步骤,我的方法是使用熊猫将数据提取到数据帧中,选择要使用的数据列,然后将数据读取为大块。我遇到的两个主要问题是将Label列重新标记为0或1。我收到以下错误:AttributeError:'TextFileReader'对象没有属性'Label' 当我尝试使用np.where读取块时,如果不按块读取它会起作用,但是稍后在将数据帧转换为np数组时遇到内存问题。 另外,我面临的另一个问题是如何将这些数据帧块转换为它们自己的numpy文件。由于即时通讯软件目前正在获取空的npy文件(每个文件320字节)。

非常感谢您的见解,干杯

import glob
import os
import numpy as np
import pandas as pd


mycsvdir = '/home/my/path/CSV_Data/'

csvfiles = glob.glob(os.path.join(mycsvdir, '*.csv'))

my_list = []

for csvfile in csvfiles:


    df = pd.read_csv(csvfile, sep = ',', usecols = ['Dst Port', 'Protocol', 'Flow Duration', 'Tot Fwd Pkts', 'Tot Bwd Pkts', 'Flow IAT Mean', 
 'Flow IAT Std', 'Flow IAT Max', 'Flow IAT Min', 'Fwd IAT Tot', 'Fwd IAT Mean', 'Fwd IAT Std', 'Fwd IAT Max', 'Fwd IAT Min', 
 'Bwd IAT Tot', 'Bwd IAT Mean', 'Bwd IAT Std', 'Bwd IAT Max', 'Bwd IAT Min', 'Label'],  dtype=None, low_memory=False, chunksize = 1000)

    for chunk in df:
        x=my_list.append(chunk)
        x['Label'] = np.where( df.Label == 'Benign', 0, 1) 

    np.save(csvfile, np.array(x))

0 个答案:

没有答案