用Python分析Cars.csv文件--完整指南

378 阅读4分钟

在本教程中,让我们了解如何使用Python探索carls.csv数据集。我们将首先加载数据集,然后处理数据。我们还将对数据集进行可视化处理,当准备好最终的数据集后,同样的数据集可以用来开发各种模型。


用Python分析Cars.csv数据集的步骤

我们将使用PandasNumpy进行分析。我们还将使用Seaborn库来进行可视化的操作。让我们直接进入这个环节。

1.加载Cars.csv数据集

由于数据集已经是CSV格式,我们所要做的就是将数据格式化为pandas数据框。这是通过导入pandas 库,使用一个名为read_csv 的pandas数据框架方法来完成的。

read_csv 数据框架方法的使用方法是将CSV文件的路径作为一个参数传给函数。当我们使用head 函数时,代码会产生一个整齐的pandas数据框架。

让我们先把所有必要的模块和库导入我们的代码中。

import pandas as pd 
import numpy as np
import seaborn as sns 
import matplotlib.pyplot as plt
sns.set(color_codes=True)

现在,在pandas 模块的帮助下,数据被加载。

df = pd.read_csv("CARS.csv")
df.head()

这个数据集有428 rows15 features ,其中有关于不同汽车品牌的数据,如宝马、奔驰、奥迪等,并有关于这些汽车的多种特征,如型号、类型、产地、传动系统、售价等。


2.删除不相关的特征

在后面的章节中,如果我们被要求根据给我们的一些特征来计算汽车的价格。但并不是所有的特征都是确定汽车价格所必需的,我们的目标是从我们的数据集中删除同样的不相关的特征。

我们要删除的特征有:传动系统、车型、发票、类型和产地。所有这些特征对于确定成本都是不必要的。你可以根据你的喜好来删除或保留特征。

df = df.drop(['Model','DriveTrain','Invoice', 'Origin', 'Type'], axis=1)
df.head()


3.寻找重复的数据

在任何数据集中,都可能有重复/多余的数据,为了去除这些数据,我们利用reference feature (在本例中是MSRP)。我之所以将MSRP作为参考,是因为两辆车的价格很少能100%匹配。

为了删除重复的数据,我们使用了下面提到的代码。你可以看到,行数从428行减少到410行。

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

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 列中有两个空值,其余的都很清楚。我们的目的是处理该列的两个空值。我们发现空值属于第247 and 248 行,所以我们将用所有数值的平均值来代替。

# 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.将对象值转换为整数类型

如果你还没有观察到,MSRP的值以$ 开始,但是我们需要这些值是整数类型的。因此,我们需要确保在该列的所有数值中去掉美元符号。

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.热力图的可视化

热力图是寻找特征之间相关性的最佳方式之一。当热图被绘制出来时,我们可以看到MSRP和马力之间有很强的相关性。

plt.figure(figsize=(10,10))
plt.style.use("seaborn")
c= df.corr()
sns.heatmap(c,cmap='PiYG',annot=True)


希望你能理解这个概念,并将其应用于其他各种CSV文件。谢谢您的阅读!