nandeisiga 2023-10-29 20:41 采纳率: 33.3%
浏览 12
已结题

python大数据分析

具体要求:
1.数据集介绍
有一数据集存于csv文件中,数据包括学校数,在校学生数,招生数、教职员工数、毕业生数等,完成以下实践任务。
2.实践任务描述
(1)读入数据
读取csv文件,采用适当数据结构存放;用适当方法查看读入后数据类型信息和读入数据结构信息。
(2)排序
按年度升序对读入数据进行排序,显示排序结果。
按年度升序、招生数倒序对读入数据进行排序,显示排序结果。
(3)计算
基于数据集中的数据进行一些计算并将结果存入数据集中;
计算生师比(在校学生数/专任教师数);保留2位小数;
计算校平均教职工人数(教职员工数/学校数),保留1位小数;
(4)查询
给定一些条件,对数据集进行查询。
如:仅查询:2000年后生师比小于18的数据;
查询并计算:2010年后招生数少于毕业生数的年度和毕业生数、招生数和差额。
(5)选取与更新
①从读入后的数据集中删除“序号”列;
②从读入后的数据集中删除2000年之前的数据。
③选取“年度”、“学校数”、“在校学生数”,“专任教师数”“生师比”形成一个新的数据集;
④选取2000年度后的年度、学校数、招生数,毕业生数信息,形成一个新的数据集;
(6)绘图
选取适合的图表类型,绘图显示生师比随年度变化趋势,因为太早的数据意义不大,绘图时可以筛选2010年后的数据。
编程语言:python,使用pandas库

img

  • 写回答

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")
    
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(3条)

报告相同问题?

问题事件

  • 已结题 (查看结题原因) 10月29日
  • 已采纳回答 10月29日
  • 创建了问题 10月29日

悬赏问题

  • ¥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如何向数据库中添加自动生成的字段数据。