# 导入相关应用包
import pandas as pd
import numpy as np
import seaborn as sns
import matplotlib.pyplot as plt
# 忽略警告信息
import warnings
warnings.filterwarnings("ignore")
#%matplotlib inline
# 读取数据
path = './dataset/'
train = pd.read_csv(path + 'train.csv') # 训练集
test = pd.read_csv(path + 'test.csv') # 测试集
训练集
1. 数据特征类型
- 数据中有4个int64类型(filed_id,label,tid,index)和1个object类型(api);
- 整个数据集的大小大于3.3.GB
- 数据一共有89806693条记录
2. 数据分布
#使用箱线图查看单个变量的分布情况,取前10000条数据绘制“tid”变量的箱线图
sns.boxplot(x=train.iloc[:10000]["tid"])
3. 缺失值
train.isnull().sum() #查看训练集数据的缺失情况
4. 异常值
train['index'].describe() #分析训练集的“index”特征
index最小为0,最大为5000,看不出异常值
train['tid'].describe() #分析训练集的“tid”特征
tid最小为100,最大为20896,该字段表示线程,目前无法判断是否有异常值。
5. 标签分布
train['label'].value_counts() #统计标签取值的分布情况
train['label'].value_counts().sort_index().plot(kind = 'bar') #条形图
train['label'].value_counts().sort_index().plot(kind = 'pie') #饼图
测试集
1. 数据信息
test.head() #测试集的头几行数据
test.info() #查看测试集的大小、数据类型等信息
2. 缺失值
test.isnull().sum() #查看测试集数据的缺失情况
数据不存在缺失情况
3. 数据分布
test.nunique() #查看测试集中变量取值的分布
4. 异常值
test['index'].describe() #查看测试集的index特征
看不出异常情况
test['tid'].describe() #查看测试集的tid特征
无法判断是否有异常值
数据集联合分析
# 导入相关应用包
import pandas as pd
import numpy as np
import seaborn as sns
import matplotlib.pyplot as plt
# 忽略警告信息
import warnings
warnings.filterwarnings("ignore")
#%matplotlib inline
# 读取数据
path = './dataset/'
train = pd.read_csv(path + 'train.csv') # 训练集
test = pd.read_csv(path + 'test.csv') # 测试集
train_fileids = train['file_id'].unique()
test_fileids = test['file_id'].unique()
train_apis = train['api'].unique()
test_apis = test['api'].unique()
1. 对比分析file_id在训练集和测试集中分布的重合情况
len(set(train_fileids)-set(test_fileids))
len(set(test_fileids)-set(train_fileids))
有932个训练文件是测试文件中没有的,测试文件中有的文件在训练文件中都有。
2. 对比分析API在训练集和测试集中分布的重合情况
set(test_apis)-set(train_apis)
set(train_apis)-set(test_apis)
测试集中有6种API未出现在训练集中,训练集中有3种API未出现在测试集中。