Pandas编程作业实验报告(二)

实验涉及从npz文件中读取国民经济核算数据,创建DataFrame,按年份分组计算GDP、产业及行业总值,计算误差,并存储为CSV。同时分析mtcars数据集,输出大小、数值型特征的描述统计和按汽缸数、化油器分组的统计信息。
摘要由CSDN通过智能技术生成

实验要求:

  1. 从“国民经济核算季度数据.npz”文件(在matplotlib作业中已经给出)中读取2000年第一季度到2017年第一季度的所有数据并存储在ndarray对象中。
    • 创建一个DataFrame对象,其数值数组不包含原ndarray对象的第0列和最后一行数据(即不包含“序号”那一列数据和“2017年第一季度”那一行数据);其列索引为:[‘时间’, ‘GDP’, ‘一产’, ‘二产’, ‘三产’, ‘农业’, ‘工业’, ‘建筑’, ‘批发’, ‘交通’, ‘餐饮’, ‘金融’, ‘房地产’, ‘其他’];

    • 按“年份”分组(需提取“时间”那一列数据中包含的“年份”信息)。在此基础上,计算每年总的GDP,三个产业以及各行业的全年GDP;(“年份”的跨度为:2000~2016年。或许在这一步,你能用上df.astype()函数呦!)

    • 在每个年份上,计算三个产业的全年GDP之和以及各行业的全年GDP之和;并分别以“产业GDP之和”和“行业GDP之和”为列索引名将计算结果添加到对应的DataFrame对象中。

    • 在每个年份上,分别计算“产业GDP之和”之于年“GDP”(年“GDP”就是第(2)小题所说的每年总的GDP,也就是每年4个季度的GDP之和)以及“行业GDP之和”之于年“GDP”的相对误差,计算公式为(以“产业……”为例):
      (“产业GDP之和”-“GDP”)/“GDP”
      然后,分别以“产业之和的误差”和“行业之和的误差”为列索引名将计算结果添加到对应的DataFrame对象中;

    • 抽取并输出“GDP”,“产业GDP之和”,“产业之和的误差”,“行业GDP之和”,“行业之和的误差”这几列数据,其部分显示结果如下所示:

      年份 GDP 产业GDP之和 产业之和的误差 行业GDP之和 行业之和的误差
      2000 100280.1 100280.0 -9.972068e-07 100280.0 -9.972068e-07
      2001 110863.1 110863.1 0.000000e+00 110863.1 0.000000e+00
      2002 121717.4 121717.4 -1.195549e-16 121717.5 8.215752e-07
      2015 689052.0 689052.2 2.902539e-07 689051.9 -1.451269e-07
      2016 744127.2 744127.3 1.343856e-07 744127.2 0.000000e+00

      仔细看看是不是所有误差都在万分之一以内,并以此来判定“国民经济核算季度数据.npz”文件 中的数据是不是“有效”的;

    • 如果数据是有效的,将第(2)小题分组计算所得的DataFrame对象的行索引命名为“年份”。然后再将该数据(包括行索引和列索引)存储在“GDP年度数据.csv”文件中。

  2. “mtcars.csv”文件中存储了某些汽车型号的特征数据,包括name(汽车型号),cyl(汽缸数),carb(化油器),mpg(油耗),hp(马力)等特征。
    • 使用pandas读取mtcars数据集,输出数据集的大小(shape);
    • 抽取并输出5个数值型特征的描述性统计信息,自行解释这些数据的含义;
    • 按cyl和carb进行分组,计算并输出hp列每个分组所包含的有效数据的个数、每个分组的最大马力、每个分组的最小马力以及mpg列每个分组所包含的有效数据的个数、每个分组的平均油耗。

实验内容:

    • 导入numpy和pandas库
    import numpy as np
    import pandas as pd
    
    • 导入数据
    data = np.load(r"C:\Users\LCX\Documents\python\data\国民经济核算季度数据.npz",allow_pickle=True)
    values = data['values']
    
    • 创建dataframe对象,去除最后一行和第一列,加入列索引
    columns = ['时间', 'GDP', '一产', '二产', '三产', '农业', '工业',
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值