Python常见编程题及解析

代码时使用jupyter写的,有些操作可能和pycharm不太一样,注意区别,其次,不要死记代码,也别为了考试而去考试,这会你翻的这篇博客的时候可能已经有点晚了,还是为了考试而考试吧,但尽量别死记代码。
一、编程
1.定义一个列表,列表中包含若干个整数(正数和负数),先将列表中的元素进行排序,
遍历排序之后的列表并将负数进行平方后放在新的列表中输出。

list = [2,5,6,-4,-5,-7]
list.sort()
arr = [x*x for x in list if x<0]
arr
  1. NumPy 是 Python 的一种开源的数值计算扩展库。它包含很多功能,如创建 n 维数组(矩
    阵)、对数组进行函数运算、数值积分等。请编写代码解决以下问题。
    (1)使用 arange 函数创建 0-11 之间的整数数组。
    (2)逆序输出所有元素。
    (3)输出数组中的后 5 个元素。
    (4)设置数组维度为 3 行 4 列,并用新的变量接收转置后的数组。
    (5)输出索引第 2 列的所有元素。
arr = np.arange(12)


print(arr[::-1])

print(arr[-5:])

reshape_arr=arr.reshape(3,4)
print(reshape_arr)

print(reshape_arr[:,1])#第二列的下标为1
  1. 已知以下信息存在 excel 表格中,如下图所示,现利用 python 对这些数据做初步处理,
    请编写代码解决以下问题。
    创建一个 DataFrame 对象 df 用来存这些数据的语句为:
import numpy as np
import pandas as pd
data = {'姓名': ['张三', '李四', '小红', '王五', '小花', '小娟'],
 '性别': ['男', '男', '女', '男', '女', '女'],
 'age': [18, 17, 16, 18, 18, 19],
 '成绩': [60, 59, 78, 99, 83, np.nan]
 }
labels = ['a', 'b', 'c', 'd', 'e', 'f']
df = pd.DataFrame(data, labels)

(1) 选择 df 中列标签为性别和 age 的数据。
(2). 选择行为[1, 3, 4],且列为[性别’, ‘age’]中的数据。
(3). 选择成绩小于 60 的行。
(4). 将 c 行的 age 修改为 20。
(5). 将成绩为 NaN 的值填充为该列的平均值。

a=df[['性别','age']]
print(a)

b = df.loc[['b','d','e'],['性别','age']]
print(b)

c=df[df['成绩']<60]
print(c)

df.loc['c','age']=20

df['成绩'].fillna(df['成绩'].mean(),inplace=True)
  1. 对数据的分析离不开数据的可视化,已知函数 y1=np.sin(3np.pix)np.exp(-4x),
    y2=y1+0.2,编写代码实现如下图所示可视化效果。
    (提示:x 在坐标轴 0 到 1 之间取 500 个数值,y1 线条颜色蓝色,y2 线条颜色红色,
    y1 和 y2 之间填充绿色)
  1. NumPy 是 Python 的一种开源的数值计算扩展库。它包含很多功能,如创建 n 维数组(矩
    阵)、对数组进行函数运算、数值积分、线性代数运算等。请编写代码解决以下问题。
    (1)使用 linspace 函数创建 10-100 之间 51 的 arr1 数组。
    (2)已知 arr2 数组是 2 倍 arr1,而 arr3 由 arr1 与 arr2 两个数组横向合并而成。
    (3)使用 arange 函数创建一个 4
    4 的 arr 数组。
    (4)输出索引第 0 行第 0 列的元素。
    (5)根据以下代码写出输出结果
    arr = np.array([7,9,5,2,9,4,3,1,4,3])
    print(‘排序后:’,arr.argsort())
    print(‘显示较大的 5 个数:’,arr[arr.argsort()][-5:])

6.根据本地疫情防控政策,从外地返回人员需进行居家隔离或集中隔离,现需对以下数据
(保存在 df1 中)做初步处理,请编写代码完成以下问题。

(1) 显示最后 2 条隔离人员信息

import pandas as pd
a = df1.tail(2)

print(“最后 2 条隔离人员信息:\n”, a)
(2) 筛选显示年龄大于 40 的记录

b = df1[df1['年龄'] > 40]
print("年龄大于 40 的记录:\n", b)

(3) 增加一列隔离天数(分别为 28 天,17 天,11 天,10 天,10 天)

df1['隔离天数'] = [28, 17, 11, 10, 10]
print("增加隔离天数后的数据:\n", df1)

(4) 将张三更名为 zhang、李四更名为 li,完成数据修改

df1.loc[df1['姓名'] == '张三', '姓名'] = 'zhang'
df1.loc[df1['姓名'] == '李四', '姓名'] = 'li'
print("修改姓名后的数据:\n", df1)

(5) 在源数据上将列名‘隔离时间’修改为‘date’

df1.rename(columns={'隔离天数': 'date'}, inplace=True)
print("修改列名后的数据:\n", df1)

7.已知疫情期间返乡人员信息和隔离期间体温监测信息分别存在‘个人信息.xlsx’和‘体
温监测.xlsx’表格中,数据如下图所示,现利用 python 对这些数据做初步处理,请编写代
码解决以下问题。

体温监测.xlsx 个人信息.xlsx
(1) 分别将两个表个数据读取到 DataFrame 对象 obj1 和 obj2 中

Import pandas as pd
obj1 = pd.read_excel('个人信息.xlsx')
obj2 = pd.read_excel('体温监测.xlsx')

(2). 按照编号合并两个表格数据,连接方式采用左连接

a = pd.merge(obj1, obj2, on='编号', how='left')

(3). 查看合并后数据的缺失值

b= a.isnull().sum()
print("合并后数据的缺失值:\n", b)

(4). 对于体温监测,如果某列有缺失值,用该列的平均值填充缺失值。

a.fillna(a.mean(), inplace=True)

(5). 对于合并后的数据,编号列重复进行去重操作,并保留最后一个出现的记录

c= a.drop_duplicates(subset='编号', keep='last')

8.由于疫情形势严重,为响应政府号召,大众居家隔离。通过调查发现隔离期间,群众对
蔬菜水果的需求量不断增加。已知蔬菜需求为 y=x2,水果需求为 y=x3,编写代码实现如下图所示可视化效果。

9.促进高校毕业生充分就业,历来是党和国家十分关心、社会关注、群众关切的重大民生问题。有资料显示,近年来全国高校毕业生就业形势比较严峻。从高校毕业生人数看,今年高校毕业生超千万人,加上以前累计未就业的高校毕业生,就业面临的挑战前所未有。党和政府对高校毕业生就业工作的重视程度也前所未有,从多个方面广开高校毕业生就业门路。应政策要求,武陟县某企业优化岗位结构、增加就业岗位、强化就业服务,提高毕业生入职率。请编写代码解决以下问题。
(1)定义一个列表L,L中包含岗位‘网络管理员’、‘测试工程师’、‘Web前端’、‘数据分析师’、‘UI设计师’,并将新岗位‘后端开发工程师’添加到列表L的结尾处;
(2)在列表L中索引值为3处插入岗位‘嵌入式软件工程师’;
(3)将列表L倒序输出;
(4)输出列表L的后2个元素;
(5)删除列表L中的岗位‘Web前端’。

10.为加强餐饮服务监督管理,保障餐饮服务环节食品安全,根据《中华人民共和国食品安全法》,地方各级食品药品监督管理部门负责本行政区域内的餐饮服务监督管理工作。现对武陟县某餐厅进行调查,调查结果存在D盘dataset文件夹下‘canyin.xls’表格中,部分数据如下图所示,现利用Python对这些数据做初步处理,请编写代码解决以下问题。
(1)导入待处理数据canyin.xls,并显示前5行;

import pandas as pd
df = pd.read_excel('D:/dataset/canyin.xls')
print("前5行数据:\n", df.head())

(2)修改列名为汉字,total_bill改为小费总额、sex改为性别、day改为星期;

df.rename(columns={'total_bill': '小费总额', 'sex': '性别', 'day': '星期'}, inplace=True)
print("修改列名后的数据:\n", df)

(3)增加一列“人均消费”,并平均消费数额;

df['人均消费'] = df['小费总额'] / df['size']
pingjun= df['人均消费'].mean()
print("增加人均消费后的数据:\n", df)
print("平均消费数额:", pingjun)

(4)查询吸烟男性中人均消费大于15的数据;

smoking = df[(df['性别'] == 'Male') & (df['人均消费'] > 15)]
print("吸烟男性中人均消费大于15的数据:\n", smoking)

(5)分析男性顾客与女性顾客谁给的小费更多(分组查看男性还是女性的小费平均水平更高)。

tip = df.groupby('性别')['小费总额'].mean()
print("男性与女性顾客的小费平均水平:\n", tip)

11.已知某班学生信息(Student)和成绩(Score)分别存在MySQL数据库中,其中主机host为‘localhost’、端口port为‘3306’、用户名user为‘root’、密码passwd为‘0709’、数据库名database为‘example’,现利用python对这些数据做初步处理,请编写代码解决以下问题。

(1)导入MySQLdb库,并完成数据库连接;
(2)将两个表格数据分别读取到对象df和df1中;
(3)使用字典实现多值替换,将对象df中1替换为男,0替换为女;
(4)合并两个表格数据(连接方式采用外连接),存放在对象df2中;
(5)对合并后的数据,学号列重复的记录进行去重操作,并保留第一个出现的记录。

import MySQLdb
import pandas as pd
conn = MySQLdb.connect(host='localhost', port=3306, user='root', passwd='0709', db='example')
query1 = 'SELECT * FROM Student'
df = pd.read_sql(query1, conn)
query2 = 'SELECT * FROM Score'
df1 = pd.read_sql(query2, conn)
replace_dict = {1: '男', 0: '女'}
df.replace({'性别': replace_dict}, inplace=True)
df2 = pd.merge(df, df1, on='学号', how='outer')
df2.drop_duplicates(subset='学号', keep='first', inplace=True)
print("(2) 学生信息表:\n", df)
print("(3) 成绩表:\n", df1)
print("(4) 合并后的数据:\n", df2)
conn.close()

12.现代人工作压力大,节奏快,白天属于自己的时间少之又少,所以希望通过熬夜把被工作和生活消耗的时间“变本加厉”地找回来。熬夜似乎已经是常态,无论是小朋友,青年人,成年人甚至是老年人,但如果长期熬夜,人体健康容易受到损伤。对熬夜后人体甲状腺激素变化进行研究,发现TSH、FT3、FT4波动如下:
TSH:3.721,6.023,4.358,7.56,7.68,8.33
FT3:2.68,3.15,2.87,3.08,2.7,3.15
FT4:0.84,0.85,0.87,0.92,0.95,0.85
请编写代码实现如下图所示可视化效果。

import matplotlib.pyplot as plt

# 甲状腺激素数据
TSH = [3.721, 6.023, 4.358, 7.56, 7.68, 8.33]
FT3 = [2.68, 3.15, 2.87, 3.08, 2.7, 3.15]
FT4 = [0.84, 0.85, 0.87, 0.92, 0.95, 0.85]
x = range(1, len(TSH) + 1)

#设置中文
plt.rcParams['font.family']=['SimHei']
plt.rcParams['axes.unicode_minus']=False
plt.plot(x, TSH, label='TSH')
plt.plot(x, FT3, label='FT3')
plt.plot(x, FT4, label='FT4')
plt.xlabel('时间点')
plt.ylabel('激素水平')
plt.title('熬夜后人体甲状腺激素变化')
plt.legend()
plt.show()

13.政府为了满足社会对高等教育的需求,通过一系列措施,扩大高校招生规模,增加高校学位授予数量,具体措施包含增加招生计划、扩大学科门类、建设新高校等。请编写代码解决以下问题。和9重复
(1)定义一个列表A,A中包含计划招生专业‘物联网工程’、‘计算机科学与技术’、‘数据科学与大数据技术’、‘软件工程’、‘智能科学与技术’,并将新专业‘信息安全’添加到列表A的结尾处。

A=['物联网工程','计算机科学与技术','数据科学与大数据技术','软件工程','智能科学与技术']
A.append('信息安全')

(2)在列表A中索引值为2处插入专业‘数字媒体技术’。

A.insert(2,'数字媒体技术')

(3)将列表A倒序输出。

A.reverse()

(4)输出列表A的后5个元素。

for i in range(len(A)-1,len(A)-6,-1):
		print(A[i])

(5)删除列表A中的专业‘信息安全’。

A.remove('信息安全')

14.为加强餐饮服务监督管理,保障餐饮服务环节食品安全,根据《中华人民共和国食品安全法》,地方各级食品药品监督管理部门负责本行政区域内的餐饮服务监督管理工作。现对武陟县某餐厅进行调查,调查结果存在D盘dataset文件夹下‘canyin.xls’表格中,部分数据如下图所示,现利用Python对这些数据做初步处理,请编写代码解决以下问题。

(1)导入待处理数据canyin.xls,并显示后5行。
(2)显示聚餐时间段time的不重复值。
(3)检测数据中每列缺失值个数。
(4)删除一行内有大于两个缺失值的数据。
(5)对剩余有空缺的数值数据用平均值替换。

import pandas as pd
import numpy as py
data = pd.read_excel(r'D:\\dataset\canyin.xls')

data[time].unique()

data.isnull().any().sum()

data.dropna(thresh=11)

data.fillna(data.mean())

15.餐饮服务行业属于人口密集的行业,员工之间接触频繁,一旦染病将对顾客及整个餐厅产生巨大影响。根据《餐饮员工健康监测管理制度》规定,在餐厅开业前,管理者应当确保所有员工的体温正常,对于在岗员工,每天应该进行一次体温检测,并记录在员工体温表中。
已知食堂服务人员信息和服务期间体温监测信息分别存在‘个人信息.xlsx’和‘体温监测.xlsx’表格中,数据如下图所示,现利用python对这些数据做初步处理,请编写代码解决以下问题。

体温检测.xlsx 个人信息.xlsx
(1)分别将两个表个数据读取到对象a1和a2中。
(2)按照编号合并两个表格数据(连接方式采用右连接),存入对象a3中。
(3)对于合并后的数据,姓名列重复进行去重操作,并保留最后一个出现的记录。
(4)检测缺失值并统计的缺失个数。
(5)对于体温监测,如果某列有缺失值,用该列的平均值填充缺失值。

import pandas as pd
import numpy as py
a1=pd.read_excel('个人信息.xlsx')
a2=pd.read_excel('体温监测.xlsx')

a3 = pd.merge(a1,a2,on='编号',how='right')

a3.drop_duplicate(['姓名'],keep='last')

a3.isnull().sum()

a3['体温'].fillna(a3['体温'].mean)

16.新的社会和市场环境在过去的时间里不断发生着深刻的变化,各个行业面对市场所带来的分层化消费需求特征,只有对当前的消费趋势进行深度的洞察,才能牢牢商业机会。现对2018-2023各行业第一季度变化情况研究发现,当x为arange(0,10,1.5)时,农业数据为y=4cos(x)、旅游行业数据为y=7sin(x)、医疗行业数据为y=3x。请编写代码实现如下图所示可视化效果。

import matplotlib.pyplot as plot
import numpy as np
x=np.arange(0,10,1.5)
x1=['2018第一季度','2019第二季度','2020第一季度','2021第一季度','2022第一季度','2023第一季度','']
y=4*np.cos(x)
y1=7*np.sin(x)
y2=3*x
#设置中文
plot.rcParams['font.family']=['SimHei']
plot.rcParams['axes.unicode_minus']=False
#绘图
plot.plot(x1,y,label='农业')
plot.plot(x1,y1,label='旅游行业')
plot.plot(x1,y2,label='医疗行业')
plot.legend()
plot.show()

17.对2018-2023各产业第一季度变化情况研究发现,当x为arange(0,10,1.5)时,第一产业数据为y=20cos(x)、第二产业数据为y=50sin(x)', ’ 第三产业为y=7x。请编写代码实现如下图所示可视化效果。

import matplotlib.pyplot as plot
import numpy as np
x=np.arange(0,10,1.5)
x1=['2018第一季度','2019第二季度','2020第一季度','2021第一季度','2022第一季度','2023第一季度','']
y=20*np.cos(x)
y1=50*np.sin(x)
y2=7*x
#设置中文
plot.rcParams['font.family']=['SimHei']
plot.rcParams['axes.unicode_minus']=False
#绘图
plot.title('2018-2023各产业第一季度折线图')
#plot.xtick(x1)
plot.plot(x1,y,label='农业')
plot.plot(x1,y1,label='旅游行业')
plot.plot(x1,y2,label='医疗行业')
plot.legend()
plot.show()
物联沃分享整理
物联沃-IOTWORD物联网 » Python常见编程题及解析

发表评论