2025年Python数据分析项目卷_第1页
2025年Python数据分析项目卷_第2页
2025年Python数据分析项目卷_第3页
2025年Python数据分析项目卷_第4页
2025年Python数据分析项目卷_第5页
已阅读5页,还剩1页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

2025年Python数据分析项目卷考试时间:______分钟总分:______分姓名:______一、数据采集1.请使用Python编写一个爬虫程序,从指定的新闻网站(例如:/)抓取首页的新闻标题和链接。要求使用`requests`库获取网页内容,并使用`BeautifulSoup`库解析HTML,提取所需信息。假设新闻标题位于`<a>`标签的`title`属性中,新闻链接位于`<a>`标签的`href`属性中。2.假设有一个提供天气数据的API,其URL为`/data`,需要API密钥`your_api_key`。请编写Python代码,调用该API获取指定城市(例如:"Beijing")的当前温度和天气状况描述。要求使用`requests`库发送GET请求,并在请求参数中包含必要的API密钥和城市名称。二、数据清洗3.假设你有一个包含学生成绩的CSV文件`grades.csv`,其中包含列:`StudentID`,`Subject`,`Score`。请使用Python的`pandas`库读取该文件,并处理以下问题:a.删除包含缺失值(`NaN`)的行。b.将`Score`列的数据类型转换为浮点型。c.找出`Score`列中超过100的异常值,并将其替换为该学生所在科目的平均分。d.为数据框添加一个新列`Pass/Fail`,如果`Score`大于等于60,则值为`Pass`,否则为`Fail`。三、数据分析4.继续使用上一题中的`grades.csv`数据框。请使用`pandas`库进行以下分析:a.计算每个科目的平均分。b.找出成绩最高的3名学生,并显示他们的`StudentID`、`Subject`和`Score`。c.使用`groupby`功能,按`Subject`分组,计算每个科目的及格率(通过人数/总人数)。d.假设新增一列`GradeLevel`,其值根据`Score`分为三个等级:`A`(90分及以上)、`B`(60分至89分)、`C`(60分以下)。计算每个等级的学生人数。四、数据可视化5.基于上一题的分析结果,请使用`matplotlib`库或`seaborn`库完成以下可视化任务:a.绘制一个条形图,展示每个科目的平均分。b.绘制一个饼图,展示不同`GradeLevel`(A、B、C)的学生人数占比。c.绘制一个散点图,横轴为学生的`Score`,纵轴为`GradeLevel`,并使用不同的颜色区分不同的`GradeLevel`。试卷答案一、数据采集1.```pythonimportrequestsfrombs4importBeautifulSoupurl='/'headers={'User-Agent':'Mozilla/5.0(WindowsNT10.0;Win64;x64)AppleWebKit/537.36(KHTML,likeGecko)Chrome/58.0.3029.110Safari/537.3'}response=requests.get(url,headers=headers)soup=BeautifulSoup(response.text,'html.parser')news_list=[]fora_taginsoup.find_all('a',title=True):title=a_tag.get('title')link=a_tag.get('href')iftitleandlink:news_list.append({'title':title,'link':link})#news_list包含了所有找到的新闻标题和链接```2.```pythonimportrequestsapi_key='your_api_key'city='Beijing'url=f'/data?city={city}&appid={api_key}'response=requests.get(url)data=response.json()current_temp=data['current']['temp']#假设温度单位是摄氏度weather_description=data['current']['weather'][0]['description']#current_temp,weather_description包含了当前温度和天气状况描述```二、数据清洗3.```pythonimportpandasaspd#读取CSV文件df=pd.read_csv('grades.csv')#a.删除包含缺失值的行df=df.dropna()#b.将Score列的数据类型转换为浮点型df['Score']=df['Score'].astype(float)#c.找出Score列中超过100的异常值,并替换为该学生所在科目的平均分forindex,rowindf.iterrows():ifrow['Score']>100:subject_avg=df[df['Subject']==row['Subject']]['Score'].mean()df.at[index,'Score']=subject_avg#d.为数据框添加一个新列Pass/Faildf['Pass/Fail']=df['Score'].apply(lambdax:'Pass'ifx>=60else'Fail')```三、数据分析4.```python#继续使用上一题的df数据框#a.计算每个科目的平均分subject_avg_scores=df.groupby('Subject')['Score'].mean()#b.找出成绩最高的3名学生top_students=df.nlargest(3,'Score')#c.计算每个科目的及格率pass_rates=df.groupby('Subject').apply(lambdax:(x['Pass/Fail']=='Pass').sum()/len(x)).reset_index(name='PassRate')#d.计算每个等级的学生人数grade_level_counts=df['GradeLevel'].value_counts()```四、数据可视化5.```pythonimportmatplotlib.pyplotasplt#或importseabornassns#a.绘制条形图,展示每个科目的平均分subject_avg_scores.plot(kind='bar')plt.xlabel('Subject')plt.ylabel('AverageScore')plt.title('AverageScorebySubject')plt.show()#b.绘制饼图,展示不同GradeLevel的学生人数占比grade_level_counts.plot(kind='pie',autopct='%1.1f%%')plt.title('GradeLevelDistribution')plt.ylabel('')#隐藏y轴标签plt.show()#c.绘制散点图,横轴为Score,纵轴为GradeLevel#首先为不同GradeLevel设置不同颜色color_map={'A':'red','B':'green','C':'blue'}df.plo

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论