pandas自己创建且用图表展示前几名的成绩

import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
plt.rcParams['font.sans-serif']=['SimHei']#解决中文乱码
plt.rcParams['axes.unicode_minus']=False#解决符号乱码
#创建数据
sex=["男","女"]
df1=pd.DataFrame({
    "names":["student"+str(i) for i in range(1,32) ],
    "sex":[sex[np.random.randint(2)] for i in range(31) ],
    "python":np.random.randint(60,101,31),
    "spark":np.random.randint(60,90,31),
    "linux":np.random.randint(60,98,31)
})
# #1)  用折线图呈现python,spark,linux的前5名
# pythontop5=df1["python"].sort_values(ascending=False)[:5]
# sparktop5=df1["spark"].sort_values(ascending=False)[:5]
# linuxtop5=df1["linux"].sort_values(ascending=False)[:5]
# print(pythontop5)
# nums=range(1,6)
# plt.plot(nums,pythontop5,color='red',marker='o',linestyle='-')
# plt.plot(nums,sparktop5,color='green',marker='o',linestyle='--')
# plt.plot(nums,linuxtop5,color='blue',marker='o',linestyle='--')
# labels=["第%s名"%x for x in range(1,6)]
# plt.xticks(nums,labels)#设置X轴的标签
# plt.title("分数TOP5")#设置标题
# plt.xlabel(["python前五名","spark前五名","linux前五名"])# 设置x轴的标签o
# plt.ylabel("分数")# 设置y轴的标签
# plt.show()#显示图形


#2)    用堆积柱状图呈现总分前5名的各科成绩,
# 横轴显示学生的姓名,纵轴显示分数,共3个图例。总分标注出来
df1["总分"]=df1["python"]+df1["spark"]+df1["linux"]
top5=df1.sort_values(by=["总分"],ascending=False)[:5]
nums=np.arange(1,10,2)
plt.bar(nums,top5["python"],width=0.3)
plt.bar(nums,top5["spark"],bottom=top5["python"],width=0.3)
plt.bar(nums,top5["linux"],bottom=top5["python"]+top5["spark"],width=0.3)
plt.xticks(nums,top5["names"])
plt.legend(["python","spark","linux"])
plt.ylim(0,350)
plt.ylabel("分数")
plt.title("总分TOP5")
for x,y in zip(nums,top5["总分"]):
    plt.text(x,y+3,"%s分"%y)
plt.show()
#3)    用并列柱状图分别呈现男生和女生的python,spark,linux的平均分
gs=df1.groupby(by="sex").mean()
nums=np.arange(0,4,2)
print(gs)
w=0.5
plt.bar(nums,gs["python"],color="red",width=w)
plt.bar(nums+w,gs["spark"],color="green",width=w)
plt.bar(nums+w*2,gs["linux"],color="blue",width=w)
plt.xticks(nums,["女生","男生"])
plt.xlabel("性别")
plt.ylabel("分数")
plt.ylim(0,120)
plt.legend(["python平均分","spark平均分","linux平均分"])
plt.show()

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

普甜i

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

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

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

打赏作者

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

抵扣说明:

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

余额充值