Pandas编程作业实验报告

本次实验涉及创建一个8行5列的DataFrame,填充随机成绩,处理缺失值,进行数据连接操作,包括内连接、外连接、左连接、右连接,并使用concat进行并联和交联。实验还包括数据清洗、重置索引、查找不及格成绩及导出到Excel文件。手动计算与编程结果一致,证明掌握Pandas关键功能。
摘要由CSDN通过智能技术生成

实验要求:

  1. 创建一个8行5列的DataFrame对象,列名为[‘Num’, ‘Name’,‘C++’, ‘Java’, ‘Python’],分别代表学号,姓名,C++成绩,Java成绩,Python成绩。所有成绩要求分布在[50,100)区间,是随机生成的整数。(以下所述的行号和列号均代表行列索引的默认编号。请使用本章所学的知识按顺序解决这些问题,不要投机取巧!)
    • 复制第4个(从0开始)学生的全部信息,把它作为新行追加到表尾;
    • 将(3, 4)、(6, 3)、(5, 2)、(2, 3)、(1, 0)这几个位置上的元素置为NaN;
    • 输出所有包含缺失值的行;
    • 删除学号为缺失值的行;
    • 将成绩列上的所有缺失值用其同列上的前一个和后一个成绩的平均值替换;
    • 检测是否存在重复行;如果存在,保留最后一行,删除其余行;
    • 重置行索引;
    • 在2,3,4列上分别找到大于60的最小值,然后把这些值用55替换(如果某列上有多个最小值,则全部替换);
    • 输出Java成绩不及格的学生的信息(学号,姓名,Java成绩);
    • 输出“挂科”学生的全部信息。
    • 自己人工仔细检查以上每一道小题的操作结果是否正确。如果确认无误,用DataFrame的to_excel方法将数据存储到“Scores.xlsx”文件中,用Excel打开并查看数据是否正确。如果以上都正确,最后输出 :“我做对了!”
  2. 创建2个行、列大小均不相同的DataFrame对象(要求有部分行索引名和列索引名相同)。
    • 手工计算按某个列索引(或列索引的组合)内连接、外连接、左连接和右连接的结果;然后通过编程验证计算结果的正确性。(用merge函数验证)
    • 手工计算在0轴和1轴分别并联和交联的结果;然后通过编程验证计算结果的正确性。(用concat函数验证)
    • 手工计算按行索引作为连接键左连接的结果;然后通过编程验证计算结果的正确性。(用join函数验证)

实验内容和实验结果:

    • 导入必要的库:pandas 用于数据处理,random 用于生成随机数,numpy 用于数值计算。
    import pandas as pd
    import random
    import numpy as np
    
    • 创建一个空的DataFrame pds,包含8行和5列,分别是’Num’, ‘Name’, ‘C++’, ‘Java’, ‘Python’。
    pds = pd.DataFrame(index=list(range(8)), columns=['Num', 'Name', 'C++', 'Java', 'Python'])
    
    • 填充 ‘Num’ 和 ‘Name’ 列。
    pds['Num'] = [1, 2, 3, 4, 5, np.nan, 7, 8]
    pds['Name'] = ['特朗普', '拜登', '康熙', '雍正', '乾隆', '和珅', '张廷玉', '姚启圣']
    
    
    • 使用随机数填充 ‘C++’, ‘Java’, ‘Python’ 列。
    for i in range(8):
    	pds.loc[i, 'C++'] = random.randint(50, 100)
    	pds.loc[i, 'Java'] = random.randint(50, 100)
    	pds.loc[i, 'Python'] = random.randint(50, 100)
    
    Num Name C++ Java Python
    1.0 特朗普 67 98 74
    2.0 拜登 65 70 60
    3.0 康熙 77 83 92
    4.0 雍正 72 70 97
    5.0 乾隆 93 79 93
    NaN 和珅 97 94 81
    7.0 张廷玉 55 78 95
    8.0 姚启圣 52 69 71
    • 将第8行设置为第5行的复制。
    pds.loc[8] = pds.loc[4]
    
    Num Name C++ Java Python
    1.0 特朗普 67 98 74
    NaN 拜登 65 70 60
    3.0 康熙 77 NaN 92
    4.0 雍正 72
  • 18
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值