在本教程中,我们将了解如何使用 Python 探索 cars.csv 数据集。我们将首先加载数据集,然后处理数据。我们还将可视化数据集,当准备好最终数据集时,相同的数据集可用于开发各种模型。
在 Python 中分析 Cars.csv 数据集的步骤
我们将使用Pandas和Numpy进行此分析。我们还将使用 Seaborn 库来尝试可视化。让我们开始吧。
1.加载Cars.csv数据集
由于数据集已经是 CSV 格式,我们需要做的就是将数据格式化为 pandas 数据框。read_csv
这是通过使用导入库调用的 pandas 数据框方法来完成的pandas
。
read_csv
通过将 CSV 文件的路径作为参数传递给函数来使用数据框方法。当我们使用该head
函数时,代码会生成一个组织整齐的 pandas 数据框。
首先,我们将所有必要的模块和库导入到我们的代码中。
1
2
3
4
5
|
import pandas as pd import numpy as np import seaborn as sns import matplotlib.pyplot as plt sns. set (color_codes = True ) |
现在,数据已在pandas
模块的帮助下加载。
1
2
|
df = pd.read_csv( "CARS.csv" ) df.head() |
该数据集具有428 rows
有关15 features
不同汽车品牌(例如宝马、梅赛德斯、奥迪等)的数据,并且具有有关这些汽车的多种特征,例如型号、类型、原产地、传动系统、建议零售价等特征。
2. 删除不相关的特征
在后面的部分中,如果我们需要根据提供给我们的一些功能来计算汽车的价格。但并非所有特征都是确定汽车价格所必需的,我们的目标是从数据集中删除相同的不相关特征。
我们要删除的功能包括传动系、型号、发票、类型和原产地。所有这些功能都不是确定成本所必需的。您可以根据自己的喜好删除或保留功能。
1
2
|
df = df.drop([ 'Model' , 'DriveTrain' , 'Invoice' , 'Origin' , 'Type' ], axis = 1 ) df.head() |
3. 查找重复数据
在任何数据集中,都可能存在重复/冗余数据,为了删除相同的数据,我们使用reference feature
(在本例中为建议零售价)。我之所以以建议零售价作为参考,是因为两辆车的价格很少能100%匹配。
为了删除重复项,我们使用下面提到的代码。您可以观察到行数从 428 行减少到 410 行。
1
2
|
print ( "Count before Removing Duplicates: " ) df.count() |
输出如下所示。
Count before Removing Duplicates: Make 428 MSRP 428 EngineSize 428 Cylinders 426 Horsepower 428 MPG_City 428 MPG_Highway 428 Weight 428 Wheelbase 428 Length 428 dtype: int64 |
1
2
3
4
|
df = df.drop_duplicates(subset = 'MSRP' , keep = 'first' ) print ( "Count after Removing Duplicates: " ) df.count() |
Count after Removing Duplicates: Make 410 MSRP 410 EngineSize 410 Cylinders 408 Horsepower 410 MPG_City 410 MPG_Highway 410 Weight 410 Wheelbase 410 Length 410 dtype: int64 |
4. 查找缺失值或空值
没有数据集是完美的,数据集中缺失值是很常见的事情。现在,有几种方法可以处理缺失值。
可以删除任一行或用该列中所有值的平均值填充空值。最好取列值的平均值,而不是删除整行,因为每一行对于开发人员都很重要。
让我们首先看看数据集中有多少个空值。
print (df.isnull(). sum ()) |
您可以观察到该列中有两个空值Cylinders
,其余值都清晰可见。我们的目标是处理该列的 2 个空值。发现空值属于 row 247 and 248
,因此我们将其替换为所有值的平均值。
1
2
3
4
5
6
7
8
9
|
# Calculate mean of all the values of the column val = df[ 'Cylinders' ].mean() print ( "The mean of the column is: " ,val) val = round (val) print ( "Rounded value of the mean of the column is: " ,val) # Replace the null value with the mean of the column df[ 'Cylinders' ][ 247 ] = val df[ 'Cylinders' ][ 248 ] = val |
5. 将对象值转换为整数类型
如果您还没有观察到,建议零售价的值以 开头,$
但我们需要这些值是整数类型。因此,我们需要确保从该列中的所有值中删除美元符号。
1
2
3
4
5
6
7
|
df[ 'MSRP' ] = [x.replace( '$' ,' ') for x in df[' MSRP']] df[ 'MSRP' ] = [x.replace( ',' ,' ') for x in df[' MSRP']] df[ 'MSRP' ] = pd.to_numeric(df[ 'MSRP' ],errors = 'coerce' ) df.head() |
6. 可视化热图
热图是查找特征之间相关性的最佳方法之一的地图。绘制热图后,我们可以看到建议零售价和马力之间存在很强的依赖性。
1
2
3
4
|
plt.figure(figsize = ( 10 , 10 )) plt.style.use( "seaborn" ) c = df.corr() sns.heatmap(c,cmap = 'PiYG' ,annot = True ) |
希望您理解这个概念,并将其应用到其他各种 CSV 文件中。感谢您的阅读!