具体要求:
1.数据集介绍
有一数据集存于csv文件中,数据包括学校数,在校学生数,招生数、教职员工数、毕业生数等,完成以下实践任务。
2.实践任务描述
(1)读入数据
读取csv文件,采用适当数据结构存放;用适当方法查看读入后数据类型信息和读入数据结构信息。
(2)排序
按年度升序对读入数据进行排序,显示排序结果。
按年度升序、招生数倒序对读入数据进行排序,显示排序结果。
(3)计算
基于数据集中的数据进行一些计算并将结果存入数据集中;
计算生师比(在校学生数/专任教师数);保留2位小数;
计算校平均教职工人数(教职员工数/学校数),保留1位小数;
(4)查询
给定一些条件,对数据集进行查询。
如:仅查询:2000年后生师比小于18的数据;
查询并计算:2010年后招生数少于毕业生数的年度和毕业生数、招生数和差额。
(5)选取与更新
①从读入后的数据集中删除“序号”列;
②从读入后的数据集中删除2000年之前的数据。
③选取“年度”、“学校数”、“在校学生数”,“专任教师数”“生师比”形成一个新的数据集;
④选取2000年度后的年度、学校数、招生数,毕业生数信息,形成一个新的数据集;
(6)绘图
选取适合的图表类型,绘图显示生师比随年度变化趋势,因为太早的数据意义不大,绘图时可以筛选2010年后的数据。
编程语言:python,使用pandas库
python大数据分析
- 写回答
- 好问题 0 提建议
- 追加酬金
- 关注问题
- 邀请回答
-
4条回答 默认 最新
- 社区专家-Monster-XH 2023-10-29 21:52关注
import pandas as pd import matplotlib.pyplot as plt # (1)读入数据 df_original = pd.read_csv("cata1.csv", encoding="gbk") df_original.to_csv("df_original.csv", index=False, encoding="gbk") # (2)排序 df_sorted_by_year = df_original.sort_values(by='年度', ascending=True) df_sorted_by_year.to_csv("df_sorted_by_year.csv", index=False, encoding="gbk") df_sorted_by_year_and_enrollment = df_original.sort_values(by=['年度', '招生数'], ascending=[True, False]) df_sorted_by_year_and_enrollment.to_csv("df_sorted_by_year_and_enrollment.csv", index=False, encoding="gbk") # (3)计算 df_calculated = df_original.copy() df_calculated['生师比'] = (df_calculated['在校学生数'] / df_calculated['专任教师数']).round(2) df_calculated['校平均教职工人数'] = (df_calculated['教职员工数'] / df_calculated['学校数']).round(1) df_calculated.to_csv("df_calculated.csv", index=False, encoding="gbk") # (4)查询 df_filtered = df_calculated[(df_calculated['年度'] > 2000) & (df_calculated['生师比'] < 18)] df_filtered.to_csv("df_filtered.csv", index=False, encoding="gbk") df_query = df_calculated[df_calculated['年度'] > 2010].copy() # Make a copy to avoid the warning df_query.loc[:, '差额'] = df_query['毕业生数'] - df_query['招生数'] df_query_result = df_query[df_query['招生数'] < df_query['毕业生数']] df_query_result.to_csv("df_query_result.csv", index=False, encoding="gbk") # (5)选取与更新 df_without_serial = df_calculated.drop(columns=['序号']) df_without_serial.to_csv("df_without_serial.csv", index=False, encoding="gbk") df_after_2000 = df_without_serial[df_without_serial['年度'] > 2000] df_after_2000.to_csv("df_after_2000.csv", index=False, encoding="gbk") df_selected_columns = df_after_2000[['年度', '学校数', '在校学生数', '专任教师数', '生师比']] df_selected_columns.to_csv("df_selected_columns.csv", index=False, encoding="gbk") df_post_2000_selected = df_after_2000[['年度', '学校数', '招生数', '毕业生数']] df_post_2000_selected.to_csv("df_post_2000_selected.csv", index=False, encoding="gbk") # (6)绘图 df_2010_onwards = df_calculated[df_calculated['年度'] >= 2010] plt.rcParams['font.sans-serif'] = ['SimHei'] # 用来正常显示中文标签 plt.rcParams['axes.unicode_minus'] = False # 用来正常显示负号 plt.figure(figsize=(10, 6)) plt.plot(df_2010_onwards['年度'], df_2010_onwards['生师比'], marker='o', linestyle='-') plt.title("生师比随年度变化趋势 (2010年后)") plt.xlabel("年度") plt.ylabel("生师比") plt.grid(True) plt.tight_layout() plt.savefig("life_teacher_ratio_2010_onwards.png")
本回答被题主选为最佳回答 , 对您是否有帮助呢?解决 1无用
悬赏问题
- ¥15 ansys fluent计算闪退
- ¥15 有关wireshark抓包的问题
- ¥15 需要写计算过程,不要写代码,求解答,数据都在图上
- ¥15 向数据表用newid方式插入GUID问题
- ¥15 multisim电路设计
- ¥20 用keil,写代码解决两个问题,用库函数
- ¥50 ID中开关量采样信号通道、以及程序流程的设计
- ¥15 U-Mamba/nnunetv2固定随机数种子
- ¥15 vba使用jmail发送邮件正文里面怎么加图片
- ¥15 vb6.0如何向数据库中添加自动生成的字段数据。