0
点赞
收藏
分享

微信扫一扫

pandas学生成绩分析代码解读

得一道人 2022-05-01 阅读 55

经过几天的奋战,完成一段简单的学生成绩分析代码,供大家学习参考

代码构成

  1. random模块的使用
  2. DataFrame列的类型转化
  3. DataFrame求和列的添加
  4. DataFrame范围的筛选
  5. DataFrame数据的统计
  6. DataFrame数据的绘制
  7. 本地文件的导入
  8. 结束
import random

import matplotlib.pyplot as plt
import numpy as np
import pandas as pd

plt.rcParams['font.sans-serif']=['SimHei']
pd.set_option('display.max_columns',None)
df = pd.read_csv('stu2.csv', encoding='gbk')
df.loc[8,'语文'] = 89
df.loc[11,'英语'] =88
tel = []
for i in range(18):
    tel.append(np.random.randint(10000000,99999999)+np.random.choice([15900000000,13800000000,15600000000,13700000000]))

yw = df['语文'].apply('int64')

yy=pd.to_numeric(df['英语'],errors='ignore')
df.insert(loc=6,column='英语1',value=yy,allow_duplicates=True)
df.insert(loc=5,column='语文1',value=yw,allow_duplicates=True)
df_new = df.drop(columns=['英语'],axis=1)

sx = df['数学'].astype('float32')
df.insert(loc=3,column='数学1',value=sx,allow_duplicates=True)
df_xm = df.filter(items=['姓名','性别','语文1','数学1','英语1','电话'])
df_xm['总分']=df_xm['语文1'] + df_xm['数学1'] + df_xm['英语1']


xk = input('学科:')
if xk == '语文1' or xk == '数学1' or xk == '英语1':
    fen1=random.randint(90,100)
    fen2=random.randint(60,75)
elif xk == '总分':
    fen1=random.randint(280,300)
    fen2=random.randint(190,200)
df_xm = df_xm.query(f'{fen1}>{xk}>{fen2}')


df_ct = df_xm['姓名'].count() #统计满足条件列的总人数,只统计姓名
print(df_xm)
plt.figure(figsize=(10,8))
df_xm.plot(x='姓名',y=xk,kind='line',color='r',marker='o',markersize=10,label=f'{xk}成绩单,成绩区间:{fen1}>{xk}>{fen2},总人数:{df_ct}人')

plt.xticks([i for i in range(len(df_xm['姓名'].values))],[i for i in df_xm['姓名'].values],rotation=45)
plt.grid(axis='both')
plt.legend(loc='upper left')
plt.title(f'学生{xk}成绩展示图')
plt.ylabel(f'学生{xk}成绩/分')
plt.show()

配图输出:
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
以上为本次代码自动生成的分析图。

举报

相关推荐

0 条评论