经过几天的奋战,完成一段简单的学生成绩分析代码,供大家学习参考
代码构成
- random模块的使用
- DataFrame列的类型转化
- DataFrame求和列的添加
- DataFrame范围的筛选
- DataFrame数据的统计
- DataFrame数据的绘制
- 本地文件的导入
- 结束
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()
配图输出:
以上为本次代码自动生成的分析图。