在数据科学领域,很多人刚开始时并不清楚数据分析(Data Analysis)和探索性数据分析(Exploratory Data Analysis, EDA)之间的区别。虽然两者之间的差异不大,但它们各自有着不同的目标和应用场景。
探索性数据分析是统计推断的补充,它相对于后者来说更加灵活,不拘泥于规则和公式。在高级应用中,EDA涉及到从不同角度观察和描述数据集,然后对其进行总结。
数据分析则是利用统计学和概率论来识别数据集中的趋势。它通过使用一些分析工具来展示历史数据,帮助深入挖掘信息,将度量、事实和数字转化为改进措施。
将探索一个数据集,并在Python中执行探索性数据分析。可以参加在线Python课程来学习Python。
将使用pandas库加载EDA汽车Excel文件,使用read_excel函数。
import pandas as pddata = pd.read_excel('cars.xlsx')
在这一步,将执行以下操作来检查数据集包含的内容。将检查以下事项:
head函数将显示数据集中的顶部记录。默认情况下,Python只显示前5条记录。
print(data.head())
shape属性告诉数据集中有多少观测值和变量。它用于检查数据的维度。汽车数据集有303个观测值和13个变量。
print(data.shape)
info()用于检查数据的信息以及每个属性的数据类型。
data.info()
通过查看head函数和info中的数据,知道Income和travel time变量的数据类型是float而不是object。因此,将它们转换为float。此外,数据中还有一些无效值,如@@和*,将这些视为缺失值。
data['Income'] = data['Income'].astype(float)data['TravelTime'] = data['TravelTime'].astype(float)
describe方法将帮助了解数值数据的分布情况。可以清楚地看到最小值、均值、不同百分位的值和最大值。
print(data.describe())
可以看到,在相应的列中存在各种缺失值。处理数据集中的缺失值有多种方法,具体使用哪种技术实际上取决于处理的数据类型。
在这个练习中,将用中位数值替换数值列,对于分类列,将删除缺失值。
data.fillna(data.median(), inplace=True)data.dropna(subset=['CategoricalColumn'], inplace=True)
由于数据集中有14条重复记录,将从数据集中删除这些记录,以便只得到不同的记录。删除重复项后,将检查数据集中是否已经删除了重复项。
data.drop_duplicates(inplace=True)print(data.duplicated().sum())
异常值作为最极端的观测值,可能包括样本最大值或样本最小值,或两者都有,这取决于它们是否远离其他观测值。然而,样本最大值和最小值并不总是异常值,因为它们可能并不异常远离其他观测值。
通常使用箱线图来识别异常值,因此箱线图显示了一些数据点超出了数据的范围。
import seaborn as snssns.boxplot(data=data['INCOME'])
查看箱线图,似乎变量INCOME中存在异常值。这些异常值需要处理,处理它们有几种方法:
Q1 = data['INCOME'].quantile(0.25)Q3 = data['INCOME'].quantile(0.75)IQR = Q3 - Q1data = data[~((data['INCOME'] < (Q1 - 1.5 * IQR)) |(data['INCOME'] > (Q3 + 1.5 * IQR)))]
当谈论双变量分析时,意味着分析两个变量。由于知道有数值变量和分类变量,有一种方法可以分析这些变量,如下所示:
如果需要找到相关性,可以计算所有变量之间的相关性。
correlation_matrix = data.corr()
通常,数据集中的变量处于不同的尺度,即一个变量以百万计,而其他变量只有100。例如,在数据集中,Income的值以千计,而年龄只有两位数。由于这些变量的数据范围可能差异很大,因此在数据预处理中,使用机器学习算法时,这是一个必要的步骤。
特征缩放(也称为数据归一化)是一种将具有不同测量尺度的变量转换为单一尺度的方法。由于数据的值范围可能差异很大,因此在数据预处理中,使用机器学习算法时,这是一个必要的步骤。
在这种方法中,将具有不同尺度测量的变量转换为单一尺度。StandardScaler使用公式(x-均值)/标准差来归一化数据。只对数值变量执行此操作。
from sklearn.preprocessing import StandardScalerscaler = StandardScaler()data['Income'] = scaler.fit_transform(data[['Income']])data['Age'] = scaler.fit_transform(data[['Age']])
One-Hot-Encoding用于创建虚拟变量,将分类变量中的类别替换为每个类别的特征,并根据记录中是否存在分类值使用1或0来表示。
这是因为机器学习算法只处理数值数据。因此,需要将分类列转换为数值列。
get_dummies方法是为每个分类变量创建虚拟变量的方法。
data = pd.get_dummies(data)
Ritika Singh - 数据科学家
是一名专业的数据科学家,也是一名热情的博客。已经在机器学习项目上工作了两年多。在这里,将找到关于“机器学习、统计学、深度学习、自然语言处理和人工智能”的文章。