数据可视化实验一之单变量数据的统计图表可视化

单变量数据的统计图表可视化

一、实验目的

通过实验,使学生能够理解数据的统计特征,并利用合适的图表可视化和分析数据的统计特征。

二、实验要求

通过Python中的常用统计图表函数调用,可视化给定的数据集,分析数据集的统计特征。

三、实验数据

这些数据是通过对外国某中学修习数学课程的学生进行调查而获得的。 它包含许多有关学生的性别、饮酒信息、学习信息和其他家庭信息等。

四、实验内容

1.确定可视化任务目标(分析和推理出学生工作日饮酒的可能原因和饮酒与学习之间的关系)
比如:与家庭情况(父母、家庭关系等)、与健康状况、自己的学业规划(是否接受更高教育)等。
2.数据处理与变换(数据预处理,提取可视化需要的重要数据属性)
3.可视化映射与交互(标记和视觉通道的设计。柱状图、直方图、饼图、箱图等统计图表至少选择绘制3个,注意可视化美学因素)
4.计算机编码实现可视化方案(利用python 的pandas扩展库读取数据,matplotlib扩展库进行可视化)
import pandas as pd
pd.read_csv(‘student-mat.csv’)
5.利用数据可视化的功能,进行可视化分析

五、实验步骤

1.可视化设计
a)任务目标
分析学生工作日饮酒和自己的学业规划之间的关系。
b)数据预处理(所使用属性)
使用了‘Dalc’属性和‘higher’属性
c)可视化编码
在这里插入图片描述
2.计算机编码实现

# 导入需要的包
from matplotlib import rc
import pandas as pd
from matplotlib import pyplot as plt

# 导入数据
data = pd.read_csv('student-mat.csv')
# 将需要的数据提取出来
x1 = data['Dalc']
y1 = data['higher']
# 转换为列表
list_x1 = list(x1)
list_y1 = list(y1)
# 设置横坐标
_x = [1, 2, 3, 4, 5]
# 统计人数
count_dalc = {1: 0, 2: 0, 3: 0, 4: 0, 5: 0}
count_higher = [{'yes': 0, 'no': 0}, {'yes': 0, 'no': 0}
    , {'yes': 0, 'no': 0}, {'yes': 0, 'no': 0}
    , {'yes': 0, 'no': 0}]
for i in range(len(x1)):
    x = list_x1[i]
    count_dalc[x] += 1
for i in range(len(y1)):
    x = list_x1[i]  # 饮酒等级
    y = list_y1[i]  # 是否接受更高教育
    (count_higher[x - 1])[y] += 1
# 统计不同等级饮酒的人数
yes_y1 = [0, 0, 0, 0, 0]
no_y1 = [0, 0, 0, 0, 0]
for i in range(len(count_higher)):
    yes_y1[i] = (count_higher[i])['yes']
    no_y1[i] = (count_higher[i])['no']
# 设置字体
font = {'family': 'MicroSoft YaHei',
        'weight': 'bold',
        'size': '12'}
rc("font", **font)

# 创建柱状图
plt.figure()
# 设置宽度
total_width, n = 0.8, 2
width = total_width / n
# 设置标签
_xtick_label = ["{}级".format(i) for i in _x]
plt.bar(_x, yes_y1, width=width, label='是', fc='y')
for i in range(len(_x)):
    _x[i] = _x[i] + width
plt.bar(_x, no_y1, width=width, label='否', tick_label=_x, fc='r')
plt.xticks(_x, _xtick_label)
# 基本信息描述
plt.xlabel('工作日饮酒程度')
plt.ylabel('是否有升学意愿的人数')
plt.title('学生工作日饮酒与升学意愿的关系')
plt.text(2, 200, s='19电计余治酉', alpha=0.2, fontsize=30)
plt.legend()
plt.savefig("./test_2.png")
plt.show()
# 创建饼状图
label = ['等级1', '等级2', '等级3', '等级4', '等级5']
plt.pie(list(count_dalc.values()), labels=label, explode=(0.1, 0, 0, 0, 0), autopct='%1.2f%%', shadow=True)

plt.title("不同等级饮酒程度的人数比例")
plt.text(-1.8, 0.2, s='19电计余治酉', alpha=0.4)
plt.legend(loc="upper right", fontsize=10, bbox_to_anchor=(1.1, 1.05), borderaxespad=0.3)
plt.savefig('./test_pie.png')
plt.show()

label = ['有升学意愿', '无升学意愿']
plt.pie(list(count_higher[0].values()), labels=label, explode=(0.2, 0.2), autopct='%1.2f%%', shadow=True)
plt.subplot()
plt.title("dalc=1的人中是否有升学意愿的比例")
plt.legend(loc="upper right", fontsize=10, borderaxespad=0.3)
plt.savefig('./test_pie.png')
plt.show()
# 创建折线图
_xtick_label = ["{}级".format(i) for i in _x]
plt.plot(_x,yes_y1,label='有升学意愿')
plt.plot(_x,no_y1,label='无升学意愿')
plt.title('学生不同饮酒程度与升学意愿关系')
plt.xlabel('饮酒程度')
plt.ylabel('人数')
plt.xticks(_x, _xtick_label)
plt.legend()
plt.show()

3.数据可视化效果图与分析推理
在这里插入图片描述
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

bestkasscn

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值