探索性数据分析【EDA】:揭开数据的“面纱”(含源码)

——探索性数据分析(EDA):由浅入深的完整指南

目录

一、探索性数据分析(EDA)概述

二、EDA的基本步骤

1. 数据加载与清理

        1.1数据加载

        1.2 数据清理

2. 描述性统计分析

3. 数据可视化

4. 异常值检测

三、EDA简单实践示例

四、常见的EDA工具与库

五、总结


一、探索性数据分析(EDA)概述

探索性数据分析(Exploratory Data Analysis,EDA)是一种用于理解数据的初步分析方法,重点是通过洞察的方式揭示数据的基本特征和潜在模式。EDA不依赖于任何预设模型或假设,而是通过本身数据的分布、趋势和关联性,帮助分析者理解数据的结构。

  • 目的:通过图形化和统计方法,发现数据中的异常、趋势、关系及潜在模式。
  • 工具:EDA的主要工具包括描述性统计、数据可视化和异常值分析等。

二、EDA的基本步骤

可以将EDA分为几个主要步骤:数据加载与清洗、描述性统计分析、数据可视化等。下面每个步骤进行详细讲解。

1. 数据加载与清理

        1.1数据加载

首先,需要从不同的数据源(如CSV文件、数据库、API等)加载数据。在Python中,通常使用Pandas库来处理数据加载。

import pandas as pd
# 加载数据
data = pd.read_csv('your_data.csv')

        1.2 数据清理

数据清理是EDA的重要部分。数据通常包含缺失值、重复数据或异常值,这些问题需要被处理。

  • 缺失值处理:可以用均值、中差、最值来替换缺失值,或者删除缺失值的行。
  • 重复值处理:去除数据中的重复行。
# 删除重复行
data.drop_duplicates(inplace=True)
# 用均值填补缺失值
data.fillna(data.mean(), inplace=True)

2. 描述性统计分析

描述性统计分析帮助快速了解数据的基本特征,包括均值、标准差、顶点等统计量。

  • 数据类型与结构:了解数据的维度、每列数据类型以及是否包含缺失值。
# 查看数据结构和基本信息
data.info()

 pandas.DataFrame.info()方法会显示以下信息:

  • 行数和列数:数据框的总行数和列数。
  • 每列的名称和数据类型:列名以及数据类型(如int64float64object)。
  • 非空数据的数量:每列中非空数据的个数。
  • 内存占用:数据框占用的内存大小。
#举个栗子
<class 'pandas.core.frame.DataFrame'>
RangeIndex: 5 entries, 0 to 4
Data columns (total 3 columns):
 #   Column    Non-Null Count  Dtype 
---  ------    --------------  ----- 
 0   age       4 non-null      float64
 1   income    4 non-null      float64
 2   education 5 non-null      object
dtypes: float64(2), object(1)
memory usage: 203.0+ bytes
  • 描述性统计量:查看数据的中心趋势、离散程度等统计量。
# 查看描述性统计信息
data.describe()

pandas.DataFrame.describe()方法用于生成数据得分列的统计摘要,通常用于了解数据的分布和趋势。它会返回每个得分列的以下统计量:

  • count:非空值的数量。
  • mean:均值(平均数)。
  • std:标准差,数据的离散程度。
  • min:最小值。
  • 25%:第一个四分(25%的数据小于这个值)。
  • 50%:中分配(50%的数据小于该值,通常等于第二四分分配)。
  • 75%:第三个四分(75%的数据小于此值)。
  • max:最大值。
#举个栗子
             age        income
count   4.000000      4.000000
mean   32.500000  67500.000000
std     6.454972   12990.381295
min    25.000000  50000.000000
25%    27.500000  57500.000000
50%    32.500000  65000.000000
75%    37.500000  72500.000000
max    40.000000  80000.000000

这些统计量有助于初步理解数据分布,评估是否存在明显的偏差或不规则性的问题。

3. 数据可视化

数据可视化是EDA的核心内容。通过观察图表,能够更容易发现数据中的模式和异常。常用的可视化方法包括:

  • 单变量分析:分析单个变量的分布情况,常用的图表有直方图、箱线图、密度图等。
import seaborn as sns
import matplotlib.pyplot as plt

# 绘制单变量直方图
sns.histplot(data['column_name'], kde=True)
plt.show()
  • 多变量分析:分析不同变量之间的关系,常用的图表包括散点图、热力图、成对关系图等。
# 绘制相关性热力图
sns.heatmap(data.corr(), annot=True, cmap='coolwarm')
plt.show()

4. 异常值检测

异常值是指在数据中与其他数据点差异过大的值,这些值可能是错误的,也可能是有意义的。在EDA阶段,识别异常值对于数据质量非常重要。

  • 箱线图:箱线图可以帮助检测数据中的离群点。
# 绘制箱线图查看异常值
sns.boxplot(x=data['column_name'])
plt.show()
  • Z-score:Z-score可以用于检测异常值,通常Z-score大于3的值被认为是异常值。
from scipy import stats
z_scores = stats.zscore(data.select_dtypes(include='number'))
data_cleaned = data[(z_scores < 3).all(axis=1)]  # 删除Z-score大于3的行

三、EDA简单实践示例

假设有一个客户包含购买记录的数据集(sales_data.csv)。下文将一步一步完成 EDA 过程。

步骤1:加载数据并检查基本信息

# 加载数据
data = pd.read_csv('sales_data.csv')
# 检查数据的基本信息
print(data.info())

步骤2:描述性统计分析

# 查看数值型数据的基本统计量
print(data.describe())

步骤3:数据可视化

  • 单变量分析:产品价格分布情况。
sns.histplot(data['price'], kde=True)
plt.title('价格分布')
plt.show()
  • 多变量分析:分析购买金额与顾客年龄的关系。
sns.scatterplot(x='age', y='purchase_amount', data=data)
plt.title('购买金额与顾客年龄的关系')
plt.show()

步骤4:异常值检测

sns.boxplot(x=data['purchase_amount'])
plt.title('购买金额的箱线图')
plt.show()

四、常见的EDA工具与库

  • Pandas:处理数据清理、加载、转换等任务的基础工具。
  • Matplotlib 和 Seaborn:用于数据可视化,支持多种图表类型。
  • Plotly:用于制作交互式图表。
  • Pandas Profiling 和 Sweetviz:自动生成数据分析报告,快速了解数据。

五、总结

EDA是分析数据的第一步,帮助理解数据的结构和潜在模式。通过数据清理、描述性统计、数据可视化和异常值检测等方法,能够发现数据中的问题,并为后续的建模或分析打下基础。在进行EDA时,结合实际业务背景和数据的具体特点,逐步推进分析,从基础到深度,确保得出可靠的结论。

希望本文能够帮助您了解与理解FTP的上传以及下载操作,并在实际业务中灵活应用。但由于作者水平有限,难免有不足之处,若疏漏或谬误,欢迎留言指正!!!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值