Python对CSV文件的一些处理方法
该文将在jupyter notebook平台对已给csv数据进行处理。使用python3.8。用到的库有numpy,pandas,seaborn,matplotlib
数据集已上传:点此下载数据集
目标
提供linpack、mlc、tpc、fio四个场景下所采集的数据,这些数据未作任何处理。进行数据预处理操作,并设计一个简单的分类模型,实现以上四个场景的分类功能。
数据预处理包括:合并数据集、数据清洗、数据集成、数据变换、数据规约
读入数据
对于csv文件,可以用padas库来进行读取数据
import pandas as pd
fio_Raw_data=pd.read_csv('fio_Raw_data.csv')#读入数据
fio_Raw_data.head()#显示前5行,从0行开始
# fio_Raw_data.shape = (2853, 20)
鉴于我们直接读入的数据可能有部分列是我们所不希望的,这里可以用padas的drop()函数进行对列(或者行)的删除。
这里已经知道给定的csv文件有20列,其中有1列为我们用不到的
fio=fio_Raw_data.drop(['Unnamed: 0'],axis=1)#去掉这几列变为18个特征,加1个类别
fio.head()
数据预处理
合并数据集
因为我们要对整个数据进行分类,所以最好将这4个csv文件进行合并。这里用到padas中的concat()函数。
其详细内容在https://pandas.pydata.org/pandas-docs/stable/user_guide/merging.html可查。
对于concat有:
pd.concat(
objs,
axis=0,
join="outer",
ignore_index=False,
keys=None,
levels=None,
names=None,
verify_integrity=False,
copy=True,
)
因为4个数据我们要忽略他们的索引,具体代码如下
#合并数据集
frames=[fio,linpack,mcl,tpc]
merge_Raw=pd.concat(frames,ignore_index=True)
merge_Raw
数据清洗
缺失值检查
对采集的数据集进行缺失值检查,若出现缺失值可以采用删除法,替换法、插补法等多种方法。
可以用isnull()函数来检查是否存在缺失值。(只能检测NaN,如果有特殊的缺失值可以先用replace()函数转换为NaN)
如果存在缺失值,使用pandas的dropna()函数进行去除(该函数为删除整行)。或者使用fillna()函数替换(只替换NaN)
#缺失值检查
merge_Raw.isnull().sum()
异常值处理
异常点在预测问题中是不受开发者欢迎的,因为预测问题通产关注的是整体样本的性质,而异常点的生成机制与整体样本完全不一致,如果算法对异常点敏感,那么生成的模型并不能对整体样本有一个较好的表达,从而预测也会不准确。
在正态分布数据中,我们认为当前值与均值之差如过超过3倍标准差,那么可以将其视为异常值。而如果数据不服从正态分布,也可以用远离平均值的多少倍标准差来描述。
∣ x − m e a n ∣ > 3 ∗ s t d |x-mean|>3*std ∣x