一、数据分析
1.1 载入各种数据科学以及可视化库
ModuleNotFoundError: No module named 'missingno'
解决方法:
尚未安装名为 missingno
的库。该错误信息显示了 ModuleNotFoundError: No module named 'missingno'
,这意味着 Python 找不到名为 missingno
的库。
要解决这个问题,需要先安装 missingno
库。在 Jupyter Notebook 中,可以使用以下命令来安装 missingno
:
!pip install missingno
1.2载入数据
##载入训练集和测试集
path='C:/Users/Lenovo/Desktop/'
Train_data=pd.read_csv(path+'used_car_train_20200313.csv',sep=' ')
Test_data=pd.read_csv(path+'used_car_testA_20200313.csv',sep=' ')
## 2) 简略观察数据(head()+shape)
Train_data.head().append(Train_data.tail())
Train_data.shape
Test_data.head().append(Test_data.tail())
append()
是一个Python列表的方法,用于将一个序列(如另一个列表)追加到当前列表的末尾。
在这个问题中,Train_data.head()
返回了Train_data
数据集的前几行,而Train_data.tail()
返回了Train_data
数据集的最后几行。通过使用append(Train_data.tail())
,可以将Train_data.tail()
返回的最后几行追加到Train_data.head()
返回的前几行后面,生成一个新的列表或数据框。
所以,Train_data.head().append(Train_data.tail())
是将Train_data
数据集的头部和尾部进行合并,展示了数据集的整体内容。
1.3 总览数据概况
1.3.1通过describe()来熟悉数据的相关统计量
describe种有每列的统计量,个数count、平均值mean、方差std、最小值min、中位数25% 50% 75% 、以及最大值 看这个信息主要是瞬间掌握数据的大概的范围以及每个值的异常值的判断,比如有的时候会发现999 9999 -1 等值这些其实都是nan的另外一种表达方式,有的时候需要注意下
## 在上面的代码框继续编代码
Train_data.describe() ## 通过describe()来熟悉数据的相关统计量
Test_data.describe()
1.3.2通过info()来熟悉数据类型
info 通过info来了解数据每列的type,有助于了解是否存在除了nan以外的特殊符号异常
## 2) 通过info()来熟悉数据类型
Train_data.info()
##运行结果:
<class 'pandas.core.frame.DataFrame'>
RangeIndex: 150000 entries, 0 to 149999
Data columns (total 31 columns):
# Column Non-Null Count Dtype
SaleID 150000 non-null int64
name 150000 non-null int64
regDate 150000 non-null int64
model 149999 non-null float64
这是一个Pandas数据框(DataFrame)的概览。下面是对每个信息的解释:
RangeIndex: 150000 entries:数据框的索引范围是从0到149999,共有150000个条目。
Data columns (total 31 columns)::数据框总共有31列。
Column:列名
Non-Null Count:非空值的数量,即该列中存在的有效数据的数量。
Dtype:列的数据类型
有一种数据类型是object,object
是 Pandas 中的一种数据类型,用于表示混合类型或不同类型的数据。在 Pandas 中,object
数据类型通常用于存储字符串(包括文本)或其他Python对象。
使用 object
数据类型可以处理多种不同的数据,但也可能导致一些性能问题,因为它需要更多的内存和计算资源来处理和操作这些数据。如果可以确定数据的具体类型,最好是将其转换为更适合的数据类型,以提高计算效率和减少内存占用。
1.4判断数据缺失和异常
1.4.1查看每列的存在nan情况
nan
是一个缩写,表示 "Not a Number"(不是一个数字)。在许多编程语言和数据分析库中,包括Python和Pandas,nan
用于表示缺失值或无效的数值。
当数据中存在缺失值时,通常会以 nan
的形式出现。例如,在一个包含数值的数据集中,某些单元格可能没有被填充,或者是由于数据采集过程中的错误而导致数值无效。这些未知、缺失或无效的数值会被表示为 nan
。
在Pandas中,nan
是一个特殊的浮点数值(numpy.nan
),用于表示缺失值。它可以出现在Pandas数据框中的任何列或单元格中,通常会与 float64
数据类型一起使用。当进行数据分析和处理时,需要注意处理和处理 nan
值,以避免对计算和统计结果产生不良影响。
## 1) 查看每列的存在nan情况
Train_data.isnull().sum()
Test_data.isnull().sum()
Train_data.isnull().sum()
是一个 Pandas DataFrame(数据框)的操作,用于计算每列中缺失值(NaN)的数量。
具体而言,isnull()
方法会将数据框中的每个单元格检查是否为缺失值,并返回一个新的布尔类型数据框,其中缺失值对应的单元格为True,非缺失值对应的单元格为False。
接着,sum()
方法会对每一列进行求和操作,计算出每列中 True 数量(即缺失值的数量),因为 True
被解释为1,False
被解释为0。
所以,Train_data.isnull().sum()
返回的结果是一个包含了每一列缺失值数量的数据框。
1.4.2nan可视化
## nan可视化
missing=Train_data.isnull().sum()
missing=missing[missing>0]
missing.sort_values(inplace=True)
colors=['yellow','green','red']
missing.plot.bar(color=colors)
Train_data.isnull().sum()
会计算每列中的缺失值数量,并将结果存储在 missing
变量中。
missing = missing[missing > 0]
会筛选出具有缺失值的列,并将结果重新赋值给 missing
变量。
missing.sort_values(inplace=True)
会对 missing
数据框按照缺失值数量进行排序,使得条形图的顺序更加整齐。
sort_values(inplace=True)
是 Pandas 数据框的一个方法,用于对数据框进行排序操作。具体而言,sort_values()
方法按照指定的列或多个列的值对数据框进行排序。在这里,missing.sort_values(inplace=True)
表示将 missing
数据框按照缺失值数量进行排序,并修改原数据框而不创建副本。
参数 inplace=True
表示将排序后的结果直接替换原数据框,而不返回新的数据框。通过设置 inplace=True
,可以节省内存和避免创建不必要的数据副本。
因此,在代码中使用 missing.sort_values(inplace=True)
表示对 missing
数据框按照缺失值数量进行排序,并将排序后的结果保存在原数据框中。
在 missing.plot.bar()
中,plot
和 bar
都是 matplotlib.pyplot
库中的函数方法。matplotlib.pyplot
是一个用于绘制图表的子模块,通常将其简化为 plt
。在导入语句中使用 import matplotlib.pyplot as plt
将该库导入。
在这里,plot
是用于绘制图表的函数方法,而 bar
是该函数方法的一个参数,表示绘制条形图。missing.plot.bar()
的含义是使用 missing
数据框的索引作为横轴,数据框中的值作为纵轴,绘制条形图。
此外,还可以使用其他的 plot
函数方法绘制不同类型的图表,如线图、散点图等。bar
参数表示绘制条形图,我们也可以根据需要选择其他参数来绘制不同类型的图表。
上述代码的运行结果如下:
当使用 missing.plot.bar()
方法绘制条形图时,默认情况下,每个条形的颜色都是相同的。如果要让绘制的条形颜色不一样,可以通过传递一个颜色列表给 color
参数来实现。创建了一个包含不同颜色的列表 colors
。然后,在 missing.plot.bar()
方法中,通过将 colors
列表传递给 color
参数,为每个条形指定了不同的颜色。
1.4.3可视化看下缺省值
缺失值(或缺省值)指的是数据集中某些条目或观测值在特定列中缺少数值或信息的情况。在数据分析和统计建模过程中,经常会遇到缺失值的情况。
缺失值可能由于各种原因而产生,例如记录错误、数据采集问题、设备故障等。在实际应用中,缺失值的存在可能会对数据分析和模型构建产生影响。
常见的表示缺失值的方式包括:
NaN(Not a Number):在Python的NumPy和Pandas库中,缺失值通常以NaN表示。
None:在Python中,None是一个特殊的对象,常用于表示缺失值。
其他特定的符号或标记:有些数据集使用特定的符号或标记来表示缺失值,例如-9999或NA。
处理缺失值的方式包括:
删除缺失值:可以直接删除缺失值所在的行或列,但这可能会导致数据量减少或丢失重要信息。
填充缺失值:可以使用各种方法填充缺失值,例如平均值、中位数、众数或者根据其他相关特征进行插值计算。
在数据分析和建模过程中,处理缺失值是一个重要的任务,需要根据具体情况采取适当的方法来处理缺失值,以确保数据质量和模型的准确性。
msno.matrix(Train_data.sample(250))
msno.matrix(Train_data.sample(250))
是使用 missingno
库中的 matrix
函数来绘制一个缺失值矩阵图的代码。sample(250) 是对训练数据进行随机抽样,抽取其中的250个样本作为可视化的数据子集。msno.matrix() 是 missingno 库中用于绘制缺失值矩阵图的函数。它会将数据集中每个列的缺失值以矩阵的形式进行可视化,缺失值用白色表示,非缺失值用黑色表示。
通过绘制缺失值矩阵图,可以直观地了解整个数据集中每个特征的缺失情况。矩阵中每一列对应数据集的一个特征,每一行对应数据集中的一个样本。如果某个格子是白色,则表示该样本在该特征上存在缺失值;如果格子是黑色,则表示该样本在该特征上不存在缺失值。
这种图形展示方式有助于我们快速识别出哪些特征有较多的缺失值,以及缺失值的分布情况。从而可以更好地决定如何处理缺失值,选择适当的填充策略或者考虑删除缺失值所在的行或列。
1.4.4查看异常值检测
Train_data.info()
Train_data['notRepairedDamage'].value_counts()
1.4.4.1 value_counts()
Train_data['notRepairedDamage'].value_counts()
是 Pandas 库中的一个函数,用于计算指定列中各个唯一值的频数。
Train_data 是一个数据集,表示训练数据。
['notRepairedDamage'] 是数据集中的一个列名,表示要计算频数的列。
value_counts() 是 Pandas 库中的函数,用于统计指定列中每个唯一值出现的频数,并返回一个包含频数结果的序列(Series)。