更新时间: 试题数量: 购买人数: 提供作者:

有效期: 个月

章节介绍: 共有个章节

收藏
搜索
题库预览
3.【填空题】

任务要求:获取数据集中的维度信息;检查缺失值和重复值;删除含有缺失值的样本行。

下面代码中的样例数据集存放了2020年3月24日-4月2日若干个国家的的新冠肺炎确诊人数数据。

 

########代码开始########

import pandas as pd

 

# 样例数据

df = pd.DataFrame([

     ['China',81591,81661,81782,81897,81999,82122,82198,82279,82361,82432],

     ['US',53736,65778,83836,101657,121465,140909,161831,188172,213242,243622],

     ['Italy',69176,74386,80589,86498,92472,97689,101739,105792,110574,115242],

     ['Japan',1193,1307,1387,1468,1693,1866,1866,1953,2178,2495],

    ['US',0,0,0,0,0,0,0,0,0,0]

])

# 设置df中各个字段的名称 

df.columns= ['Country','3-24','3-25','3-26','3-27','3-28','3-29','3-30','3-31','4-1','4-2']

 

# 获取数据集中的行数和列数

rows = df.shape[____【1】____]

cols = df.shape[____【2】____]

print("数据集共", rows, "行,", cols, "列")

 

# 检查数据集中是否存在Country字段相同的两行数据(重复行)

dup_results = df.____【3】____(subset=['Country'])

if dup_results.any():

    print('存在Country字段值相同的数据行:')

    for dup_row_index in dup_results.index[dup_results == True]:

        # 输出该重复行的字段值

        print(df.loc[____【4】____].values)

else:

    print('数据集中不存在Country字段值相同的数据行。')

 

# 检查数据集中是否存在空值

if (df.____【5】____().any().any()):

    print('数据集中存在空值字段')

else:

    print('数据集中不存在空值字段')

########代码开始######## 

(12.50分)

____【1】________________________ 

____【2】________________________ 

____【3】________________________ 

____【4】________________________ 

____【5】________________________ 

4.【填空题】

任务要求:根据要求绘制每条数据样本的图像。

下面代码中的样例数据集存放了2020年3月24日-4月2日若干个国家的的新冠肺炎确诊人数数据。

 

########代码开始########

import pandas as pd

import numpy as np

import matplotlib.pyplot as plt

 

# 样例数据

df = pd.DataFrame([

     ['China',81591,81661,81782,81897,81999,82122,82198,82279,82361,82432],

     ['US',53736,65778,83836,101657,121465,140909,161831,188172,213242,243622],

     ['France',22622,25600,29551,33402,38105,40708,45170,52827,57749,59929],

    ['United Kingdom',8164,9640,11812,14745,17312,19780,22453,25481,29865,34173],

     ['Italy',69176,74386,80589,86498,92472,97689,101739,105792,110574,115242],

     ['Germany',32986,37323,43938,50871,57695,62095,66885,71808,77872,84794],

     ['Japan',1193,1307,1387,1468,1693,1866,1866,1953,2178,2495],

])

df.columns = ['Country','3-24','3-25','3-26','3-27','3-28','3-29','3-30','3-31','4-1','4-2']

 

countries = df['Country']

# 逐个国家绘制趋势图

for country in countries:

    # 获取当前country的样本行

    country_row = df.loc[df['____【1】____'] == ____【2】____]

    # 取出每天的确诊数据集合(从第2列'3-24'开始)

    y = country_row.values[0, ____【3】____:]

    x = np.arange(len(y))

    # 绘制数据点,并且在数据点之间连线

    plt.____【4】____(x, y, 'o-')

 

# 显示图例

plt.____【5】____(countries)

# x坐标刻度使用日期形式

xtick_values = np.arange(0, df.shape[1]-1)

xtick_labels = df.columns[xtick_values + 1]

plt.xticks(ticks=xtick_values, labels=xtick_labels)

plt.show()

########代码结束########

(12.50分)

____【1】________________________ 

____【2】________________________ 

____【3】________________________ 

____【4】________________________ 

____【5】________________________ 

5.【填空题】任务要求:合并数据集;对字段执行统计操作。

下面代码中分别给出了两组样本数据集,分别存放了2020年3月24日-4月2日若干个国家的的新冠肺炎确诊人数数据

 

########代码开始########

import pandas as pd

 

# 样例数据

df1 = pd.DataFrame([

     ['China',81591,81661,81782,81897,81999,82122,82198,82279,82361,82432],

     ['US',53736,65778,83836,101657,121465,140909,161831,188172,213242,243622],

     ['France',22622,25600,29551,33402,38105,40708,45170,52827,57749,59929],

    ['United Kingdom',8164,9640,11812,14745,17312,19780,22453,25481,29865,34173]

])

df2 = pd.DataFrame([

     ['Italy',69176,74386,80589,86498,92472,97689,101739,105792,110574,115242],

     ['Germany',32986,37323,43938,50871,57695,62095,66885,71808,77872,84794],

     ['Japan',1193,1307,1387,1468,1693,1866,1866,1953,2178,2495]

])

columns = ['Country','3-24','3-25','3-26','3-27','3-28','3-29','3-30','3-31','4-1','4-2']

df1.columns = columns

df2.columns = columns

 

# 将df2合并到df1中(追加到df1原始数据行的后面)

____【1】____ = pd.concat([ ____【2】____, df2], ignore_index=True)

 

# 按日期,将所有国家的确诊人数求和

total_counts = df1.iloc[:, 1:].____【3】____(axis=0)

# 输出每日确诊总人数信息

print(total_counts)     # 输出形如:3-24  296468 (换行)3-25  295695   等等

 

# 获取4月2日确诊人数最多的国家名称

max_index = df1['4-2'].____【4】____()     # 获取确诊人数最多的样本行的索引

print(df1.iloc[____【5】____, 0])    # 此处应输出US

########代码结束########

(12.50分)

____【1】________________________   

____【2】________________________  

____【3】________________________  

____【4】________________________  

____【5】________________________ 

6.【填空题】任务要求:生成标准正态分布的随机数,然后在-2.0~2.0之间以固定间隔划分20个区间,统计每个区间的随机点的数量。

 

########代码开始########

import numpy as np

 

num = 10000

# 生成num个标准正态分布的随机浮点数

data = np.____【1】____.normal(loc=0.0, scale=1.0, ____【2】____=num)

# 计算上述数据的均值和标准差

value1 = np.mean(data)      # 计算平均值

value2 = np.____【3】____(data)       # 计算标准差

print("生成的标准正态分布随机数均值:%.2f, 标准差:%.2f" % (value1, value2))

 

# 准备分区间统计每个区间内的样本点数量

section_max_value = 2.0     # 仅统计-2.0~2.0之间的样本数

section_min_value = -2.0

section_count = 20          # 区间数量为20个

# 计算区间的宽度

section_interval = (section_max_value - section_min_value) / section_count

 

# 定义数组,记录每个区间中数值点计数。各元素初始化为0

y = np.____【4】____(section_count)

# 按照-2.0~-1.9, -1.9~-1.8...... -0.1~0.0, 0.0~0.1, 0.1~0.2....1.9~2.0的区间计算data在各区间的数量

for value in data:

    # 如果在限定的值域范围之外,则不予统计

    if value > section_max_value or value < section_min_value:

        continue

    # 计算区间编号。只取计算结果的整数部分作为编号

    index = int((value - section_min_value) / section_interval)

    y[____【5】____] += 1    # 该区间数值点的计数增加

 

# 输出每个区间的数据点的数量

for i in range(section_count):

    print(y[i])

########代码结束########

 (12.50分)

____【1】________________________ 

____【2】________________________ 

____【3】________________________ 

____【4】________________________ 

____【5】________________________ 

7.【填空题】

任务要求:实现一维数组的选择法排序(升序)。具体过程是:第1次扫描数组,选出最小的值,与数组中的第1个元素交换位置;第2次扫描数组(从第2个元素开始),选出第2小的值,与数组中第2个元素交换位置;依次类推。

 

########代码开始########

def sort_selection(arr):

    length = ____【1】____(arr)

    for i in range(0, length - 1):

        min_value = arr[i]    # 首先假定第i轮扫描的最小值就是第i个元素

        min_value_index = i   # 用于记录第i轮扫描的最小值的索引号

        # 扫描每个元素,得到本轮最小元素值,存入min_value中;其对应的元素索引存入min_value_index中

        for j in range(i+1, length):

            if arr[j] < ____【2】____: 

                min_value = arr[____【3】____]       # 更新最小值

                min_value_index = j           # 更新最小值元素对应的索引号

        # 本轮扫描结束,如果第i个元素值并非本轮扫描的最小值,则与min_value交换

        if min_value_index != i:

            temp = arr[i]

            arr[____【4】____] = min_value

            arr[min_value_index] = ____【5】____

arr = [100, 3, 5, 8, 20, 100, 8, 34, 67, 3]

sort_selection(arr)

print("自定义选择排序结果:", arr)

########代码结束########

(12.50分)

____【1】________________________ 

____【2】________________________ 

____【3】________________________ 

____【4】________________________ 

____【5】________________________ 

12.(共12.5分)

任务要求:获取数据集中的维度信息;检查缺失值和重复值;删除含有缺失值的样本行。 

下面代码中的样例数据集存放了2020年3月24日-4月2日若干个国家的的新冠肺炎确诊人数数据。 

  

########代码开始######## import pandas as pd

 

# 样例数据

df = pd.DataFrame([

     ['China',81591,81661,81782,81897,81999,82122,82198,82279,82361,82432],

     ['US',53736,65778,83836,101657,121465,140909,161831,188172,213242,243622],

     ['Italy',69176,74386,80589,86498,92472,97689,101739,105792,110574,115242],

     ['Japan',1193,1307,1387,1468,1693,1866,1866,1953,2178,2495],

     ['US',0,0,0,0,0,0,0,0,0,0]

]) 

# 设置df中各个字段的名称 

df.columns= ['Country','3-24','3-25','3-26','3-27','3-28','3-29','3-30','3-31','4-1','4-2']

# 获取数据集中的行数和列数

rows = df.shape[____【1】____]

cols = df.shape[____【2】____]

print("数据集共", rows, "行,", cols, "列")

 

# 检查数据集中是否存在Country字段相同的两行数据(重复行)

dup_results = df.____【3】____(subset=['Country'])

if dup_results.any():

     print('存在Country字段值相同的数据行:')

    for dup_row_index in dup_results.index[dup_results == True]: 

         # 输出该重复行的字段值

         print(df.loc[____【4】____].values)

else:

     print('数据集中不存在Country字段值相同的数据行。')

 

# 检查数据集中是否存在空值

if (df.____【5】____().any().any()):

     print('数据集中存在空值字段')

else:

    print('数据集中不存在空值字段')

########代码开始######## 

  

____【1】________________________   

____【2】________________________  

____【3】________________________  

____【4】________________________  

____【5】________________________ 

13.(共12.5分)

任务要求:根据要求绘制每条数据样本的图像。

 

下面代码中的样例数据集存放了2020年3月24日-4月2日若干个国家的的新冠肺炎确诊人数数据。

 

 

########代码开始########

import pandas as pd

import numpy as np

import matplotlib.pyplot as plt

 

# 样例数据

df = pd.DataFrame([

     ['China',81591,81661,81782,81897,81999,82122,82198,82279,82361,82432],

     ['US',53736,65778,83836,101657,121465,140909,161831,188172,213242,243622],

     ['France',22622,25600,29551,33402,38105,40708,45170,52827,57749,59929],

     ['United Kingdom',8164,9640,11812,14745,17312,19780,22453,25481,29865,34173],

     ['Italy',69176,74386,80589,86498,92472,97689,101739,105792,110574,115242],

     ['Germany',32986,37323,43938,50871,57695,62095,66885,71808,77872,84794],

     ['Japan',1193,1307,1387,1468,1693,1866,1866,1953,2178,2495],

])

df.columns = ['Country','3-24','3-25','3-26','3-27','3-28','3-29','3-30','3-31','4-1','4-2']

 

countries = df['Country']

# 逐个国家绘制趋势图

for country in countries:

    # 获取当前country的样本行

     country_row = df.loc[df['____【1】____'] == ____【2】____]

    # 取出每天的确诊数据集合(从第2列'3-24'开始)

    y = country_row.values[0, ____【3】____:]

    x = np.arange(len(y))

    # 绘制数据点,并且在数据点之间连线

    plt.____【4】____(x, y, 'o-')

 

# 显示图例

plt.____【5】____(countries)

# x坐标刻度使用日期形式

xtick_values = np.arange(0, df.shape[1]-1)

xtick_labels = df.columns[xtick_values + 1]

plt.xticks(ticks=xtick_values, labels=xtick_labels)

plt.show()

########代码结束########

 

____【1】________________________ 

____【2】________________________ 

____【3】________________________ 

____【4】________________________ 

____【5】________________________ 

任务要求:合并数据集;对字段执行统计操作。

下面代码中分别给出了两组样本数据集,分别存放了2020年3月24日-4月2日若干个国家的的新冠肺炎确诊人数数据

########代码开始########

import pandas as pd

# 样例数据

df1 = pd.DataFrame([

     ['China',81591,81661,81782,81897,81999,82122,82198,82279,82361,82432],

     ['US',53736,65778,83836,101657,121465,140909,161831,188172,213242,243622],

     ['France',22622,25600,29551,33402,38105,40708,45170,52827,57749,59929],

     ['United Kingdom',8164,9640,11812,14745,17312,19780,22453,25481,29865,34173]

])

df2 = pd.DataFrame([

     ['Italy',69176,74386,80589,86498,92472,97689,101739,105792,110574,115242],

     ['Germany',32986,37323,43938,50871,57695,62095,66885,71808,77872,84794],

     ['Japan',1193,1307,1387,1468,1693,1866,1866,1953,2178,2495]

])

columns = ['Country','3-24','3-25','3-26','3-27','3-28','3-29','3-30','3-31','4-1','4-2']

df1.columns = columns

df2.columns = columns

 

# 将df2合并到df1中(追加到df1原始数据行的后面)

____【1】____ = pd.concat([ ____【2】____, df2], ignore_index=True)

# 按日期,将所有国家的确诊人数求和

total_counts = df1.iloc[:, 1:].____【3】____(axis=0)

# 输出每日确诊总人数信息

print(total_counts)     # 输出形如:3-24  296468 (换行)3-25  295695   等等

 

# 获取4月2日确诊人数最多的国家名称

max_index = df1['4-2'].____【4】____()     # 获取确诊人数最多的样本行的索引

print(df1.iloc[____【5】____, 0])   # 此处应输出US

########代码开始########

____【1】________________________ 

____【2】________________________ 

____【3】________________________ 

____【4】________________________ 

____【5】________________________ 

42.(共12.5分)任务要求:生成标准正态分布的随机数,然后在-2.0~2.0之间以固定间隔划分20个区间,统计每个区间的随机点的数量。

########代码开始######## 

import numpy as np

num = 10000

# 生成num个标准正态分布的随机浮点数

data = np.____【1】____.normal(loc=0.0, scale=1.0, ____【2】____=num)

# 计算上述数据的均值和标准差

value1 = np.mean(data)      # 计算平均值

value2 = np.____【3】____(data)       # 计算标准差

print("生成的标准正态分布随机数均值:%.2f, 标准差:%.2f" % (value1, value2))

 

# 准备分区间统计每个区间内的样本点数量

section_max_value = 2.0     # 仅统计-2.0~2.0之间的样本数

section_min_value = -2.0

section_count = 20          # 区间数量为20个

# 计算区间的宽度

section_interval = (section_max_value - section_min_value) / section_count

# 定义数组,记录每个区间中数值点计数。各元素初始化为0

y = np.____【4】____(section_count)

# 按照-2.0~-1.9, -1.9~-1.8...... -0.1~0.0, 0.0~0.1, 0.1~0.2....1.9~2.0的区间计算data在各区间的数量

for value in data:

    # 如果在限定的值域范围之外,则不予统计

    if value &gt; section_max_value or value &lt; section_min_value:

        continue

    # 计算区间编号。只取计算结果的整数部分作为编号

    index = int((value - section_min_value) / section_interval)

    y[____【5】____] += 1     # 该区间数值点的计数增加

# 输出每个区间的数据点的数量

for i in range(section_count):

     print(y[i]) 

 

########代码结束########  

  

____【1】________________________  

____【2】________________________  

____【3】________________________  

____【4】________________________  

____【5】________________________ 

35.(共12.5分)

任务要求:实现一维数组的选择法排序(升序)。具体过程是:第1次扫描数组,选出最小的值,与数组中的第1个元素交换位置;第2次扫描数组(从第2个元素开始),选出第2小的值,与数组中第2个元素交换位置;依次类推。

 

 

########代码开始########

def sort_selection(arr):

     length = ____【1】____(arr)

    for i in range(0, length - 1):

         min_value = arr[i]    # 首先假定第i轮扫描的最小值就是第i个元素

         min_value_index = i   # 用于记录第i轮扫描的最小值的索引号

         # 扫描每个元素,得到本轮最小元素值,存入min_value中;其对应的元素索引存入min_value_index中

         for j in range(i+1, length):

             if arr[j] &lt; ____【2】____:  

                 min_value = arr[____【3】____]      # 更新最小值

                 min_value_index = j           # 更新最小值元素对应的索引号

         # 本轮扫描结束,如果第i个元素值并非本轮扫描的最小值,则与min_value交换

         if min_value_index != i:

             temp = arr[i]

             arr[____【4】____] = min_value

             arr[min_value_index] = ____【5】____

 

arr = [100, 3, 5, 8, 20, 100, 8, 34, 67, 3]

sort_selection(arr)

print("自定义选择排序结果:", arr)

########代码结束########

 

 

____【1】________________________ 

____【2】________________________ 

____【3】________________________ 

____【4】________________________ 

____【5】________________________ 

38.(共12.5分)

任务要求:将字典数据写入到csv文件中。

 

########代码开始########

file_path = './data.csv'    # 设置文件路径

# 待写入csv文件的原始数据

data = [

     ({'level':'Senior', 'lang':'Java', 'tweets':'no', 'phd':'no'}, False),

     ({'level':'Mid', 'lang':'Python', 'tweets':'no', 'phd':'no'}, True),

     ({'level':'Junior', 'lang':'R', 'tweets':'yes', 'phd':'no'}, True)

]

 

# 将data中每行数据的第一部分(即:{}中的部分)依次写入到csv文件中;数据行中的True/False内容无需处理

# 最终csv文件只包含level, lang, tweets, phd四个字段 

# 获取每行数据的第一部分

dict_data = [row[____【1】____] for row in data]

# 获取每个字段的名称(提示:通过第一行数据获取其所有键的名称)

column_name = [____【2】____ for name in dict_data[0].keys()]

# 写csv文件

____【3】____ open(file_path, 'w', encoding='utf8') as fp:

    # 将字段名称写入文件头部(提示:将各个字段名称用','连接起来)

     fp.write(','.____【4】____(column_name))

    fp.write('\n')    # 写入换行符

    # 将每一行数据的值写入文件头部

    for row in dict_data:

         fp.____【5】____('%s,%s,%s,%s\n' % (row['level'],row['lang'],row['tweets'],row['phd']))

########代码结束########

 

____【1】________________________ 

____【2】________________________ 

____【3】________________________ 

____【4】________________________ 

____【5】________________________ 

1 2