Python数据分析及可视化之Seaborn可视化-实训

文章中的素材StudentPerformance.csv下载链接

链接:https://pan.baidu.com/s/1gYIIqOyHLWfl21KaJsZvFA 
提取码:7br2

实训的目的:学生数据可视化分析

1、导入模块

import pandas as pd
import numpy as  np
import seaborn as sns
import matplotlib.pyplot as plt
plt.rcParams['font.sans-serif']=['simhei']
plt.rcParams['font.serif'] = ['simhei']
plt.rcParams['axes.unicode_minus'] = False
from matplotlib.font_manager import FontProperties
myfont=FontProperties(fname=r'C:\Windows\Fonts\SimHei.ttf',size=12)

2、获取数据

(1)导入数据---read_csv

df = pd.read_csv('data//StudentPerformance.csv')
print(df.head(20))

(2)修改表的列名--rename

df.rename(columns={'gender':'性别','NationalITy':'国藉','PlaceofBirth':'出生地','StageID':'学段','GradeID':'年级','SectionID':'班级','Topic':'科目','Semester':'学期','Relation':'监管人','raisedhands':'举手次数','VisITedResources':'浏览课件次数','AnnouncementsView':'浏览公告次数','Discussion':'讨论次数','ParentAnsweringSurvey':'父母问卷','ParentschoolSatisfaction':'家长满意度','StudentAbsenceDays':'缺勤次数','Class':'成绩'},inplace=True)

 

(3)显示学期和学段的取值---- unique(去重)

print('学段取值:',df['学段'].unique())
print('学期取值:',df['学期'].unique())

(4)修改数据---replace(替换)

df.replace({'lowerlevel':'小学','MiddleSchool':'中学','HighSchool':'大学'},inplace=True)
df.replace({'M':'男','F':'女'},inplace=True)
df.replace({'S':'春季','F':'秋季'},inplace=True)
print(df)

(5)查看空值数据情况

 

#各列的空值数量
print(df.isnull().sum())
print('性别空值的数量为:',df['性别'].isnull().sum())

3、可视化展示

(1)按成绩绘制计数柱状图

sns.countplot(x='成绩',order=['L','H','M'],data=df,linewidth=2,edgecolor=sns.color_palette('dark',4))
plt.show()

(2)按性别绘制计数柱状图

sns.set_style('whitegrid')
sns.countplot(x='性别',order=['男','女'],data=df)
plt.show()

输出结果:

 

(3)按科目绘制计数柱状图

sns.set_style('whitegrid')
#设置画布大小  16*8英寸
sns.set(rc={'figure.figsize':(16,8)},font=myfont.get_name())
sns.countplot(x='科目',data = df)
plt.show()

输出结果:

 

(4)按科目绘制不同成绩的计数柱状图

sns.set_style('whitegrid')
sns.set(rc={'figure.figsize':(20,10)},font=myfont.get_name())
sns.countplot(x='科目',hue='成绩',hue_order=['L','M','H'],data=df)
plt.show()

输出结果:

 

(5)按性别和成绩绘制计数柱状图

sns.countplot(x='性别',hue='成绩',order=['女','男'],hue_order=['L','M','H'],data=df)
plt.show()

输出结果:

 

(6)按班级查看成绩的分布比例

sns.countplot(x='班级',hue='成绩',hue_order=['L','M','H'],data=df)
plt.show()

输出结果:

 

(7)分析四个表现和成绩的相关性---barplot

#2行2列的子画布,尺寸14*10英寸,
fig,axes = plt.subplots(2,2,figsize=(14,10))
#axes代表两个轴的位置:第几行,第几列 (索引从0开始)
sns.barplot(x='成绩',y='浏览课件次数',data=df,order=['L','M','H'],ax=axes[0,0])
sns.barplot(x='成绩',y='浏览公告次数',data=df,order=['L','M','H'],ax=axes[0,1])
sns.barplot(x='成绩',y='举手次数',data=df,order=['L','M','H'],ax=axes[1,0])
sns.barplot(x='成绩',y='讨论次数',data=df,order=['L','M','H'],ax=axes[1,1])
plt.show()

输出结果:

 

(8)分析不同成绩学生的讨论情况

sns.set(rc={'figure.figsize':(8,6)},font=myfont.get_name())
sns.barplot(x='成绩',y='讨论次数',data=df,order=['L','M','H'])
plt.show()

输出结果:

 

(9)分析举手次数和参加讨论次数的相关性

sns.regplot(x='举手次数',y='讨论次数',order=4,data=df)
plt.show()

输出结果:

 

(10)分析浏览课件课件次数,举手次数,浏览公告次数,讨论次数之间的相关性

corr = df[['浏览课件次数','举手次数','浏览公告次数','讨论次数']].corr()
print(corr)

输出结果:

 

(11)将相关矩阵可视化

corr = df[['浏览课件次数','举手次数','浏览公告次数','讨论次数']].corr()
sns.heatmap(corr,xticklabels=corr.columns,yticklabels=corr.columns)
plt.show()

输出结果:

 

  • 3
    点赞
  • 30
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值