数学建模老哥-python基础和机器学习(四)数据导入+数据理解+数据可视化

该笔记为个人学习笔记,看的课程是B站-数学建模老哥:4 Pandas速成+数据理解_哔哩哔哩_bilibili

数据集的来源在 pima-indians-diabetes.csv · biabianm/pima-indians-diabetes - 码云 - 开源中国 (gitee.com)

目录

2.3数据处理

2.3.1数据理解

2.3.1.1数据导入

2.3.1.1.1通过标准的Python库导入CSV文件

2.3.1.1.2通过NumPy库导入CSV文件

2.3.1.1.3通过Pandas库导入CSV文件

2.3.1.2数据理解 

2.3.1.2.1查看数据

2.3.1.2.2数据维度

2.3.1.2.3数据属性和类型

2.3.1.2.4描述性统计

2.3.1.2.5数据分组分布(适用于分类算法)

2.3.1.2.6数据属性相关性

2.3.1.2.7数据分布分析

2.3.1.3数据可视化

2.3.1.3.1单一图表

2.3.1.3.1.1直方图

2.3.1.3.1.2密度图

2.3.1.3.1.3箱线图

​编辑2.3.1.3.2多重图表

2.3.1.3.2.1相关矩阵图

2.3.1.3.2.2散点矩阵图

2.3.1.4总代码


2.3数据处理

2.3.1数据理解

2.3.1.1数据导入

训练机器学习模型时,需要用到大量数据,最常用的方法是利用历史数据来训练模型。

这些数据通常会以CSV的格式来储存,国赛题目中数据一般也会以CSV储存,在开始建模

之前,必须先将数据导入到Python中,下面将介绍三种导入方法:

2.3.1.1.1通过标准的Python库导入CSV文件
# csv特征:,分隔文件头:字段属性
from csv import reader
import numpy as np
from pandas import read_csv
import matplotlib.pyplot as plt
filename ='pima.csv'
with open(filename,'rt')as raw_data:  #'rt'防止乱码
    readers =reader(raw_data,delimiter=',')
    x= list(readers)
    data = np.array(x).astype('float')
    print(data.shape)
2.3.1.1.2通过NumPy库导入CSV文件
# Pandas导入
from pandas import read_csv

filename ='pima.csv'
names =['preg','plas','pres','skin','test','mass','pedi','age','class']
data =read_csv(filename, names=names)
print(data.shape)
2.3.1.1.3通过Pandas库导入CSV文件
# numpy导入
from numpy import loadtxt
filename ='pima.csv'
with open(filename,'rt') as raw_data:
    data = loadtxt(raw_data, delimiter=',')
    print(data.shape)
2.3.1.2数据理解 
2.3.1.2.1查看数据
# 查看数据
filename = 'pima.csv'
names = ['preg', 'plas', 'pres', 'skin', 'test', 'mass', 'pedi', 'age', 'class']
data = read_csv(filename, names=names)
print(data.head(10))
2.3.1.2.2数据维度
# 数据的维度
print(data.shape)
2.3.1.2.3数据属性和类型
# 数据的属性和类型
print(data.dtypes)
2.3.1.2.4描述性统计
# 描述性统计
print(data.describe())
2.3.1.2.5数据分组分布(适用于分类算法)
# 数据的分布
print(data.groupby('class').size())
2.3.1.2.6数据属性相关性
# 数据的相关性:皮尔逊相关系数  r=0只能说明二者没有线性关系,不能说明没有关系
print(data.corr(method='pearson'))
2.3.1.2.7数据分布分析
# 数据的分布分析:高斯分布
print(data.skew())
2.3.1.3数据可视化
2.3.1.3.1单一图表
2.3.1.3.1.1直方图
# 直方图
data.hist()

 

2.3.1.3.1.2密度图
# 密度图
data.plot(kind='density', subplots=True, layout=(3,3), sharex=False)

2.3.1.3.1.3箱线图
# 箱线图
data.plot(kind='box', subplots=True, layout=(3,3), sharex=False)

2.3.1.3.2多重图表
2.3.1.3.2.1相关矩阵图
# 相关矩阵图
# 计算相关系数矩阵
correlations = data.corr()
# 创建图表和子图
fig = plt.figure()
ax = fig.add_subplot(111)
# 显示相关系数矩阵
cax = ax.matshow(correlations, vmin=-1, vmax=1)  # vmin=-1, vmax=1 通常是用于标准化颜色映射的范围,但相关系数矩阵的值域是[-1, 1]
fig.colorbar(cax)  # 添加颜色条
# 设置x轴和y轴刻度
ticks = np.arange(0, 9, 1)  # 使用NumPy库时,np.arange(0, 9, 1)是一个生成数组的函数调用,它创建了一个从0开始(包括0),到9结束(不包括9),步长为1的整数数组
ax.set_xticks(ticks)
ax.set_yticks(ticks)
ax.set_xticklabels(names)
ax.set_yticklabels(names)

2.3.1.3.2.2散点矩阵图
#散点矩阵图
import numpy as np
from pandas import read_csv
import matplotlib.pyplot as plt
from pandas.plotting import scatter_matrix
filename = 'pima.csv'
names = ['preg', 'plas', 'pres', 'skin', 'test', 'mass', 'pedi', 'age', 'class']
scatter_matrix(data)
plt.show()

2.3.1.4总代码
# 1、数据的导入
# 三种方式
# csv特征:,分隔文件头:字段属性
from csv import reader
import numpy as np
from pandas import read_csv
import matplotlib.pyplot as plt
filename ='pima.csv'
with open(filename,'rt')as raw_data:  #'rt'防止乱码
    readers =reader(raw_data,delimiter=',')
    x= list(readers)
    data = np.array(x).astype('float')
    print(data.shape)

# Pandas导入
from pandas import read_csv

filename ='pima.csv'
names =['preg','plas','pres','skin','test','mass','pedi','age','class']
data =read_csv(filename, names=names)
print(data.shape)


# numpy导入
from numpy import loadtxt
filename ='pima.csv'
with open(filename,'rt') as raw_data:
    data = loadtxt(raw_data, delimiter=',')
    print(data.shape)

# 2、数据理解
# 查看数据
filename = 'pima.csv'
names = ['preg', 'plas', 'pres', 'skin', 'test', 'mass', 'pedi', 'age', 'class']
data = read_csv(filename, names=names)
print(data.head(10))

# 数据的维度
print(data.shape)

# 数据的属性和类型
print(data.dtypes)

# 描述性统计
print(data.describe())

# 数据的分布
print(data.groupby('class').size())

# 数据的相关性:皮尔逊相关系数  r=0只能说明二者没有线性关系,不能说明没有关系
print(data.corr(method='pearson'))

# 数据的分布分析:高斯分布
print(data.skew())

# 3、数据可视化
import matplotlib.pyplot as plt

filename = 'pima.csv'
names = ['preg', 'plas', 'pres', 'skin', 'test', 'mass', 'pedi', 'age', 'class']
data = read_csv(filename, names=names)
# 直方图
data.hist()

# 密度图
data.plot(kind='density', subplots=True, layout=(3,3), sharex=False)

# 箱线图
data.plot(kind='box', subplots=True, layout=(3,3), sharex=False)

# 相关矩阵图
# 计算相关系数矩阵
correlations = data.corr()
# 创建图表和子图
fig = plt.figure()
ax = fig.add_subplot(111)
# 显示相关系数矩阵
cax = ax.matshow(correlations, vmin=-1, vmax=1)  # vmin=-1, vmax=1 通常是用于标准化颜色映射的范围,但相关系数矩阵的值域是[-1, 1]
fig.colorbar(cax)  # 添加颜色条
# 设置x轴和y轴刻度
ticks = np.arange(0, 9, 1)  # 使用NumPy库时,np.arange(0, 9, 1)是一个生成数组的函数调用,它创建了一个从0开始(包括0),到9结束(不包括9),步长为1的整数数组
ax.set_xticks(ticks)
ax.set_yticks(ticks)
ax.set_xticklabels(names)
ax.set_yticklabels(names)

#散点矩阵图
import numpy as np
from pandas import read_csv
import matplotlib.pyplot as plt
from pandas.plotting import scatter_matrix
filename = 'pima.csv'
names = ['preg', 'plas', 'pres', 'skin', 'test', 'mass', 'pedi', 'age', 'class']
scatter_matrix(data)
plt.show()

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值