内容正文:
pandas+算法专题
班级 姓名
1.【202210学军】市教育局为增强学生体质,督促学生进行必要的体育锻炼,每学年会举行一次高三学生体能测试,在每个学校的高三学生中随机抽取30名学生参加体测并要求全部达标。小明用Python编写一个程序模拟随机抽取学生的过程,程序运行后部分结果如图 13b,随机抽取前,小明将高三年级的学生的基本信息存于相应的数据文件“学生信息.xlsx”中,部分内容如下左图所示。
程序如下,在划线处填入合适的代码。
from random import randint
import pandas as pd
df=pd.read_excel('学生信息.xlsx')
xm=[]
for i in range(len(df)):
tmp=[① ,df.at[i,'班级'],i+1]
xm. append(tmp)
② #创建循环链表
jd=[0]*len(xm)
cla=[]
head=q=0
for i in range(30):
t=randint(0,len(xm)-1)
while jd[t]==1:
③
while t!=q:
④
jd[t]=1
cla.append(xm[t])
print('被抽中的 30 位同学是:')
for i in range(len(cla)):
print(f'{i+1:2}',' ',cla[i][0],' ',cla[i][1])
#f'{i+1:2}'为使 i+1按2位宽度格式化输出
2.【202212镇海】小明利用Python对“足球世界杯历史进球前20名(图a)”数据进行分析,他先按国家分类,统计出各个国家的球员人数,并把球员人数最多国家的球员,按“场均进球”数进行排序,并用图形显示(图b)。
请在划线处填入合适的代码。
import csv
import pandas as pd
import matplotlib.pyplot as plt
plt.rcParams['font.sans-serif']=['SimHei'] #用来正常显示中文标签
plt.rcParams['axes.unicode_minus']=False #用来正常显示负号
① =open("历史进球.csv","r")
reader=csv.reader(csvfile)
a=list(reader) ; country={}
for i in range(1,len(a)): #按国家分类
if a[i][1] not in country:
②
else:
country[a[i][1]].append(i)
max=0 ; country_max=""
for i in country.keys(): #找出前20名中人员最多的国家,country.keys()表示字典的键
if ③ :
max=len(country[i])
country_max=i
df=pd.DataFrame(data=[],columns=["姓名","进球个数","出场次数"])
for i in country[country_max]:
df=df.append({"姓名":a[i][0],"进球个数":int(a[i][2]),"出场次数":int(a[i][3])},ignore_index=True)
④ =df["进球个数"]/df["出场次数"] #df最后插入1列"场均进球"
df=df.sort_values(⑤ ) #按"场均进球"排序
plt.⑥ (df["姓名"],df["场均进球"],label="场均进球")
plt.title("前20名中人数最多国家球员