Python 练习题<3>

50 阅读4分钟

案例一: 定义一个函数,判断一个数是否为奇数,并求1-100范围内奇数的和、积。

sum = 0
prod = 1
for item in range(1,101):
    if item % 2 != 0:
        sum += item
        prod *= item
print("1~100内奇数的和为:", sum)
print("1~100内奇数的积为:", prod)

案例二: 若一个三位数每一位数字的3次幂之和都等于它本身,则这个三位数是水仙花数。例如153是水仙花数,各位数字的立方和为13 + 53+ 33 = 153。编程求解所有的水仙花数。

(要求:求解100-1000数字内所有的水仙花数)

for item in range(100, 1001):
    num_str = str(item)
    sum = 0 #
    for char in num_str:
        sum += int(char) ** 3
    if sum == item:
        print(item, end=" ")
print()

案例三: 创建一个包含100个随机数的数组,数组值范围为[0,100],将这些数输出;计算这些数中能被2整除但不能被4整除的数的和,并输出结果。

import random
nums = [random.randint(0,100) for i in range(100)]
print("100个随机数的数组:", nums)
sum = 0
for i in nums:
    if i % 2 == 0 and i % 4 != 0:
        sum += 1
print("这些数字中能被2整除但不能被4整除的 数的和:", sum)

案例四: 某旅游公司收集了一个月内的多个景点的游客数据。每个景点每天的游客数量以及门票收入已经被记录下来。利用 Pandas 进行数据分析和处理。

任务要求:

  1. 使用pandas模块读取表格数据到dataframe对象中;
  2. 计算每个景点的总游客数量和总门票收入。(提示:使用 groupby 方法)
  3. 计算每个景点的平均每日游客数量和平均每日收入。(提示:使用 mean 方法)
  4. 添加一列,显示每个记录的单个游客的平均消费(门票收入 / 游客数量)。
  5. 筛选出平均每日游客数量超过 150 的景点。
  6. 将处理后的 DataFrame 保存为新的 CSV 文件,文件名为“景点游客数据分析.csv”,保存时去除索引。
  7. 使用matplotlib画出各个景点每日游客数量的折线图。
分解:
  1. 使用pandas模块读取表格数据到dataframe对象中;
import pandas as pd
data = pd.read_csv("景点数据.csv", header=0, encoding="gbk")
print(data)
  1. 计算每个景点的总游客数量和总门票收入。(提示:使用 groupby 方法)
total = data.groupby("景点名称").agg(总游客数量=("游客数量", "mean"), 总门票收入=("门票收入","mean"))
print(total)
  1. 计算每个景点的平均每日游客数量和平均每日收入。(提示:使用 mean 方法)
avg = data.groupby("景点名称").agg(平均每日游客数量=("游客数量", "mean"), 平均每日门票收入=("门票收入","mean"))
print(avg)
  1. 添加一列,显示每个记录的单个游客的平均消费(门票收入 / 游客数量)。
data['平均消费'] = data['门票收入'] / data['游客数量']
print(data)
  1. 筛选出平均每日游客数量超过 150 的景点。
mean_data = avg['平均每日游客数量']
print(mean_data)
print(mean_data[mean_data > 150].index[0])
  1. 将处理后的 DataFrame 保存为新的 CSV 文件,文件名为“景点游客数据分析.csv”,保存时去除索引。
data.to_csv(
    "景点游客数据分析.csv",
    encoding="utf-8"
)
  1. 使用matplotlib画出各个景点每日游客数量的折线图。
import matplotlib.pyplot as plt
plt.rcParams['font.sans-serif'] = ['SimHei']  # 黑体
avg['平均每日游客数量'].plot()
plt.show()
完整代码
#  1.使用pandas模块读取表格数据到dataframe对象中;
import pandas as pd
data = pd.read_csv("景点数据.csv", header=0, encoding="gbk")
print(data)

#  2.计算每个景点的总游客数量和总门票收入。(提示:使用 groupby 方法)
total = data.groupby("景点名称").agg(总游客数量=("游客数量", "mean"), 总门票收入=("门票收入","mean"))
print(total)

#  3.计算每个景点的平均每日游客数量和平均每日收入。(提示:使用 mean 方法)
avg = data.groupby("景点名称").agg(平均每日游客数量=("游客数量", "mean"), 平均每日门票收入=("门票收入","mean"))
print(avg)

#  4.添加一列,显示每个记录的单个游客的平均消费(门票收入 / 游客数量)。
data['平均消费'] = data['门票收入'] / data['游客数量']
print(data)

#  5.筛选出平均每日游客数量超过 150 的景点。
mean_data = avg['平均每日游客数量']
print(mean_data)
print(mean_data[mean_data > 150].index[0])

#  6.将处理后的 DataFrame 保存为新的 CSV 文件,文件名为“景点游客数据分析.csv”,保存时去除索引。
data.to_csv(
    "景点游客数据分析.csv",
    encoding="utf-8"
)

#  7.使用matplotlib画出各个景点每日游客数量的折线图。
import matplotlib.pyplot as plt
plt.rcParams['font.sans-serif'] = ['SimHei']  # 黑体
avg['平均每日游客数量'].plot()
plt.show()