案例一: 定义一个函数,判断一个数是否为奇数,并求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 进行数据分析和处理。
任务要求:
- 使用pandas模块读取表格数据到dataframe对象中;
- 计算每个景点的总游客数量和总门票收入。(提示:使用 groupby 方法)
- 计算每个景点的平均每日游客数量和平均每日收入。(提示:使用 mean 方法)
- 添加一列,显示每个记录的单个游客的平均消费(门票收入 / 游客数量)。
- 筛选出平均每日游客数量超过 150 的景点。
- 将处理后的 DataFrame 保存为新的 CSV 文件,文件名为“景点游客数据分析.csv”,保存时去除索引。
- 使用matplotlib画出各个景点每日游客数量的折线图。
分解:
- 使用pandas模块读取表格数据到dataframe对象中;
import pandas as pd
data = pd.read_csv("景点数据.csv", header=0, encoding="gbk")
print(data)
- 计算每个景点的总游客数量和总门票收入。(提示:使用 groupby 方法)
total = data.groupby("景点名称").agg(总游客数量=("游客数量", "mean"), 总门票收入=("门票收入","mean"))
print(total)
- 计算每个景点的平均每日游客数量和平均每日收入。(提示:使用 mean 方法)
avg = data.groupby("景点名称").agg(平均每日游客数量=("游客数量", "mean"), 平均每日门票收入=("门票收入","mean"))
print(avg)
- 添加一列,显示每个记录的单个游客的平均消费(门票收入 / 游客数量)。
data['平均消费'] = data['门票收入'] / data['游客数量']
print(data)
- 筛选出平均每日游客数量超过 150 的景点。
mean_data = avg['平均每日游客数量']
print(mean_data)
print(mean_data[mean_data > 150].index[0])
- 将处理后的 DataFrame 保存为新的 CSV 文件,文件名为“景点游客数据分析.csv”,保存时去除索引。
data.to_csv(
"景点游客数据分析.csv",
encoding="utf-8"
)
- 使用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()