python实现数据可视化笔记

效果:

import pandas as pd
#读取数据
data = pd.read_csv('homework.csv')
#数据清洗
data = data.drop_duplicates() #去重
data = data.dropna() #删除空白数据
data.index=range(197) #index重新计数
#数据分组
class_avg = data.groupby(['class'],as_index=False)[['chinese','math','english']].mean() #班级平均分
class_max = data.groupby(['class'],as_index=False)[['chinese','math','english']].max() #班级最高分
class_min = data.groupby(['class'],as_index=False)[['chinese','math','english']].min() #班级最低分
grade_chinese_avg  = data['chinese'].mean() #年级中文平均分
grade_math_avg  = data['math'].mean() #年级数学平均分
grade_english_avg  = data['english'].mean() #年级语文平均分
import matplotlib.pyplot as plt
fig = plt.figure()
fig.patch.set_facecolor('#c0d9d9') #设置画布背景色
fig.subplots_adjust(wspace=0.6,hspace=0.6) #设置子图间距
plt.rcParams['font.sans-serif'] = ['SimHei'] #设置中文不乱码
bar_width = 0.2 #设置柱子的位置,间隔和宽度

plt.subplot(2,2,1) #创建第一个子图
plt.bar(class_max['class'],class_max['chinese'],bar_width,label='chinese') #bar_width:设置柱子宽度,label设置这个颜色的柱子的注释,label要结合plt.legend一起使用才有效果
plt.bar(class_max['class']+bar_width,class_max['math'],bar_width,label='math') #class_max+bar_width设置这个柱子的位置,比上一个柱子多0.2
plt.bar(class_max['class']+bar_width*2,class_max['english'],bar_width,label='english')
plt.xlabel('班级')  #设置x坐标标题
plt.ylabel('分数')  #设置y坐标标题
plt.title('各班各科最高成绩统计图')  #设置图标标题
plt.legend(fontsize=6)  #配合bar中的label注释产生各个颜色柱子的注释,fontsize设置图例大小
plt.ticklabel_format(useOffset=False,style='plain') #解决班级名称被自动转成科学计数法
plt.ylim(0,150)  #将y轴的坐标延长,这样才能让各个颜色柱子的注释位置在图的右上角
# plt.xticks(class_max['class']+bar_width) #设置x坐标在三个柱子的正中间,但是班级名称会有小数,没找到解决办法
plt.xticks(class_max['class'])

plt.subplot(2,2,2)#创建第二个子图
plt.bar(class_avg['class'],class_avg['chinese'],bar_width,label='chinese') #bar_width:设置柱子宽度,label设置这个颜色的柱子的注释,label要结合plt.legend一起使用才有效果
plt.bar(class_avg['class']+bar_width,class_avg['math'],bar_width,label='math') #class_max+bar_width设置这个柱子的位置,比上一个柱子多0.2
plt.bar(class_avg['class']+bar_width*2,class_avg['english'],bar_width,label='english')
plt.xlabel('班级')  #设置x坐标标题
plt.ylabel('分数')  #设置y坐标标题
plt.title('各班各科平均成绩统计图')  #设置图标标题
plt.legend(fontsize=6)  #配合bar中的label注释产生各个颜色柱子的注释,fontsize设置图例大小
plt.ticklabel_format(useOffset=False,style='plain') #解决班级名称被自动转成科学计数法
plt.ylim(0,120)  #将y轴的坐标延长,这样才能让各个颜色柱子的注释位置在图的右上角
# plt.xticks(class_max['class']+bar_width) #设置x坐标在三个柱子的正中间,但是班级名称会有小数,没找到解决办法
plt.xticks(class_avg['class'])

plt.subplot(2,2,3)#创建第三个子图
plt.bar('chinese',grade_chinese_avg,label='chinese') #bar_width:设置柱子宽度,label设置这个颜色的柱子的注释,label要结合plt.legend一起使用才有效果
plt.bar('math',grade_math_avg,label='math')
plt.bar('english',grade_english_avg,label='english')
plt.xlabel('课程')  #设置x坐标标题
plt.ylabel('分数')  #设置y坐标标题
plt.title('24级各科平均成绩统计图')  #设置图标标题
plt.legend(fontsize=6)  #配合bar中的label注释产生各个颜色柱子的注释,fontsize设置图例大小
plt.ylim(0,80)  #将y轴的坐标延长,这样才能让各个颜色柱子的注释位置在图的右上角
#
plt.subplot(2,2,4)#创建第四个子图
x = ['chinese','math','english']
y = [grade_chinese_avg,grade_math_avg,grade_english_avg]
plt.plot(x,y) #bar_width:设置柱子宽度,label设置这个颜色的柱子的注释,label要结合plt.legend一起使用才有效果
plt.xlabel('课程')  #设置x坐标标题
plt.ylabel('分数')  #设置y坐标标题
plt.title('24级各科平均成绩折线图')  #设置图标标题
plt.legend(fontsize=6)  #配合bar中的label注释产生各个颜色注释,fontsize设置图例大小
plt.ylim(0,80)  #将y轴的坐标延长,这样才能让各个颜色柱子的注释位置在图的右上角
plt.show()

依赖的数据:

class,id,chinese,math,english
24301,24301001,40,96,37
24301,24301001,40,96,37
24301,24301002,58,18,33
24301,24301002,58,18,33
24301,24301003,13,60,76
24301,24301003,13,60,76
24301,24301004,66,61,6
24301,24301004,66,61,6
24301,24301005,8,56,100
24301,24301005,8,56,100
24301,24301006,31,5,45
24301,24301006,31,5,45
24301,24301007,14,65,43
24301,24301008,22,4,71
24301,24301009,37,23,1
24301,24301010,0,67,77
24301,24301011,80,82,94
24301,24301012,70,14,70
24301,24301013,5,6,70
24301,24301014,85,84,27
24301,24301015,77,77,78
24301,24301016,61,93,39
24301,24301017,13,50,80
24301,24301018,79,70,57
24301,24301019,39,29,66
24301,24301020,41,37,77
24301,24301021,49,69,88
24301,24301022,43,38,1
24301,24301023,85,1,88
24301,24301024,21,79,53
24301,24301025,36,42,3
24301,24301026,98,32,66
24301,24301027,99,45,87
24301,24301028,31,90,37
24301,24301028,31,90,37
24301,24301029,36,64,33
24301,24301029,36,64,33
24301,24301030,47,78,60
24301,24301030,47,78,60
24302,24302001,3,27,9
24302,24302001,3,27,9
24302,24302002,73,36,86
24302,24302002,73,36,86
24302,24302003,25,60,29
24302,24302003,25,60,29
24302,24302004,48,88,19
24302,24302005,78,23,10
24302,24302006,44,48,59
24302,24302007,39,37,58
24302,24302008,23,90,9
24302,24302009,16,53,84
24302,24302010,37,21,21
24302,24302011,67,99,67
24302,24302012,91,78,3
24302,24302013,32,69,76
24302,24302014,45,48,35
24302,24302015,87,70,98
24302,24302016,85,16,46
24302,24302017,69,93,77
24302,24302018,76,50,19
24302,24302019,77,68,72
24302,24302020,29,90,14
24302,24302021,40,21,14
24302,24302022,77,45,46
24302,24302023,72,24,83
24302,24302024,32,82,80
24302,24302025,11,73,2
24302,24302026,11,66,14
24302,24302027,80,61,67
24302,24302028,70,1,0
24302,24302029,90,61,68
24302,24302030,14,29,51
24302,24302031,78,96,39
24302,24302032,53,1,86
24302,24302033,3,98,27
24302,24302034,59,34,63
24302,24302035,66,61,36
24303,24303001,63,65,60
24303,24303002,92,70,41
24303,24303003,36,72,25
24303,24303004,5,41,79
24303,24303005,60,27,8
24303,24303006,5,17,46
24303,24303007,84,50,73
24303,24303008,33,37,37
24303,24303009,13,45,74
24303,24303010,84,45,79
24303,24303011,31,42,43
24303,24303012,73,59,51
24303,24303013,75,91,80
24303,24303014,73,32,83
24303,24303015,25,74,17
24303,24303016,40,88,83
24303,24303017,7,55,24
24303,24303018,42,18,31
24303,24303019,14,52,59
24303,24303020,46,100,100
24303,24303021,87,93,52
24303,24303022,98,76,6
24303,24303023,97,75,5
24303,24303024,10,56,45
24303,24303025,33,65,44
24303,24303026,74,97,58
24303,24303027,35,27,48
24303,24303028,84,52,93
24303,24303029,65,87,47
24303,24303030,8,69,80
24303,24303031,10,32,90
24303,24303032,53,14,90
24303,24303033,28,68,2
24303,24303034,48,26,28
24303,24303035,88,49,3
24303,24303036,77,38,7
24303,24303037,2,85,23
24303,24303038,14,5,20
24303,24303039,71,17,2
24303,24303040,35,10,69
24303,24303041,68,60,39
24303,24303042,98,82,6
24303,24303043,72,79,75
24303,24303044,61,29,39
24304,24304001,78,9,5
24304,24304002,95,50,63
24304,24304003,80,90,14
24304,24304004,84,63,8
24304,24304005,43,53,76
24304,24304006,0,45,99
24304,24304007,99,24,7
24304,24304008,66,15,14
24304,24304009,61,78,54
24304,24304010,37,32,37
24304,24304011,66,16,100
24304,24304012,82,42,82
24304,24304013,22,49,15
24304,24304014,69,13,53
24304,24304015,80,87,55
24304,24304016,3,63,95
24304,24304017,69,44,40
24304,24304018,14,57,27
24304,24304019,100,44,4
24304,24304020,4,3,21
24304,24304021,2,46,19
24304,24304022,73,95,22
24304,24304023,95,56,61
24304,24304024,100,56,67
24304,24304025,86,84,62
24304,24304026,66,57,95
24304,24304027,3,22,37
24304,24304028,45,44,57
24304,24304029,57,65,49
24304,24304030,25,17,20
24304,24304031,51,47,35
24304,24304032,54,10,92
24304,24304033,84,51,34
24304,24304034,33,3,89
24304,24304035,65,19,69
24304,24304036,78,98,62
24304,24304037,35,98,53
24304,24304038,32,36,3
24304,24304039,22,24,98
24304,24304040,55,88,15
24304,24304041,13,75,44
24304,24304042,51,41,43
24304,24304043,14,94,72
24304,24304044,38,18,6
24304,24304045,40,88,84
24304,24304046,7,37,16
24304,24304047,53,69,70
24304,24304048,34,0,1
24304,24304049,23,90,40
24304,24304050,66,72,47
24304,24304051,13,3,66
24304,24304052,30,64,78
24304,24304053,95,7,5
24304,24304054,78,54,1
24304,24304054,78,54,1
24304,24304055,44,53,14
24304,24304055,44,53,14
24304,24304056,12,36,10
24304,24304056,12,36,10
24304,24304057,58,50,21
24304,24304058,23,3,27
24304,24304059,4,95,56
24304,24304060,91,67,94
24304,24304061,92,25,8
24304,24304062,75,76,21
24304,24304063,2,32,83
24304,24304064,64,97,20
24304,24304065,67,72,83
24304,24304066,82,20,13
24304,24304067,77,34,99
24304,24304068,24,27,44
24304,24304069,54,56,41
24304,24304070,8,2,
24304,24304071,55,91,60
24304,24304072,61,15,58
24304,24304073,46,20,9
24304,24304074,54,35,1
24304,24304075,14,84,74
24304,24304076,33,71,87
24304,24304077,76,9,20
24304,24304078,93,65,67
24304,24304079,92,49,81
24304,24304080,25,47,56
24304,24304081,55,69,59
24304,24304082,82,2,43
24304,24304083,96,68,97
24304,24304084,100,26,18
24304,24304085,63,62,72
24304,24304086,,94,90
24304,24304087,84,11,21
24304,24304088,62,18,71
24304,24304089,50,85,53
24304,24304090,100,27,5
24304,24304090,100,27,5
24304,24304090,100,27,5
24304,24304090,100,27,5
24304,24304090,100,27,5
24304,24304090,100,27,5
  • 17
    点赞
  • 19
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值