Skip to main content
 首页 » 编程设计

Python 如何进行探索性数据分析

2022年07月19日227zdz8207

一般数据分析项目第一步都需要探索性数据分析。主要包括三个方面:

  • 使用描述性统计汇总数据
  • 使用图标可视化数据
  • 识别缺失值

通过上述三个方面分析,可以在执行假设检验或统计模型之前对数据集的分布情况有基本理解,并检测获得问题数据情况。

下面通过示例说明探索性数据分析,并给出Python代码实现。

准备示例数据

首先创建pandas数据框:

import pandas as pd 
import numpy as np 
 
#create DataFrame 
df = pd.DataFrame({'team': ['A', 'A', 'A', 'A', 'B', 'B', 'B', 'B'], 
                   'points': [18, 22, 19, 14, 14, 11, 20, 28], 
                   'assists': [5, 7, 7, 9, 12, 9, 9, 4], 
                   'rebounds': [11, 8, 10, 6, 6, np.nan, 9, 12]}) 

通过head()函数查看前五行数据:

df.head() 
 
# 	team	points	assists	rebounds 
# 0	A	18	5	11.0 
# 1	A	22	7	8.0 
# 2	A	19	7	10.0 
# 3	A	14	9	6.0 
# 4	B	14	12	6.0 

查看数据概况

使用describe() 函数可以快速查看每个数值变量的概况:

df.describe() 
 
#       points	    assists 	rebounds 
# count	8.0000000	8.00000 	7.000000 
# mean	18.250000	7.75000 	8.857143 
# std	5.3652320	2.54951 	2.340126 
# min	11.000000	4.00000 	6.000000 
# 25%	14.000000	6.50000 	7.000000 
# 50%	18.500000	8.00000 	9.000000 
# 75%	20.500000	9.00000 	10.50000 
# max	28.000000	12.0000     12.00000 

每个数值变量的信息说明:

count: 非缺失值数量
std: 均值
min: T最小值
25%: 第一四分位值 (前25%)
50%: 中位数 (前50%)
75%: 第三四分位值 (前75%)
max: 最大值

对于类别变量,可以使用value_counts获得每个值的频数:

df['team'].value_counts() 
 
# A    4 
# B    4 
# Name: team, dtype: int64 

通过输出可以看到:

A: 共出现4次.
B: 共出现4次.

通过shape属性可以获得数据框的维度:即行数和列数:

df.shape 
 
# (8, 4) 

数据可视化

下面通过可视化方式了解数据集。举例,pandas的hist()函数创建每个数值变量的直方图:

每个直方图的x轴现实每个值,y轴现实值的频数。

import matplotlib.pyplot as plt 
 
df.hist(grid=False, edgecolor='black') 
plt.show() 

在这里插入图片描述

我们还可以使用pandas的boxplot()函数创建箱线图:

# 创建每个变量的箱线图 
 
df.boxplot(grid=False) 

上面代码在一张图上展示多个变量的箱线图。但有时因单位不同,需要单独对每个变量画箱线图:

df['points'].plot(kind='box') 
 
# 或下面语法 
 
df.boxplot(column='points', grid=False) 

在这里插入图片描述

也可以使用pandas的corr函数创建协方差矩阵:

df.corr() 
 
#          points	  assists	 rebounds 
# points	1.000000	-0.725841	 0.767007 
# assists	-0.725841	 1.000000	-0.882046 
# rebounds  0.767007	-0.882046	 1.000000 

识别缺失值

下面代码统计所有缺失值:

df.isnull().sum() 
 
# team        0 
# points      0 
# assists     0 
# rebounds    1 
# dtype: int64 

输出显示仅rebounds变量一个缺失值,其他列没有缺失值。

总结

经过上面步骤,我们基本已经完成了该数据集的基本探索性数据分析,并且较好地理解了数据集中每个变量值的如何分布情况。


本文参考链接:https://blog.csdn.net/neweastsun/article/details/125362564