本文目录导读:

我来介绍几种Python循环统计数据的经典案例和方法。
基本统计量计算
示例:计算平均值、最大值、最小值
# 数据准备
scores = [85, 92, 78, 95, 88, 76, 90, 82, 87, 93]
# 使用循环计算统计量
total = 0
max_score = scores[0]
min_score = scores[0]
count = 0
for score in scores:
total += score
count += 1
if score > max_score:
max_score = score
if score < min_score:
min_score = score
average = total / count
print(f"总分: {total}")
print(f"平均分: {average:.2f}")
print(f"最高分: {max_score}")
print(f"最低分: {min_score}")
print(f"人数: {count}")
频次统计
示例:统计单词出现次数
# 文本数据
text = "python java python c++ java python javascript python java c++"
# 拆分单词
words = text.split()
# 使用循环统计频次
word_count = {}
for word in words:
if word in word_count:
word_count[word] += 1
else:
word_count[word] = 1
# 输出结果
print("单词频次统计:")
for word, count in word_count.items():
print(f"'{word}': {count}次")
分组统计
示例:按区间统计成绩分布
# 成绩数据
scores = [85, 92, 78, 95, 88, 76, 90, 82, 87, 93, 45, 67, 55]
# 定义区间
intervals = {
"优秀(90-100)": 0,
"良好(80-89)": 0,
"中等(70-79)": 0,
"及格(60-69)": 0,
"不及格(<60)": 0
}
# 统计各区间人数
for score in scores:
if score >= 90:
intervals["优秀(90-100)"] += 1
elif score >= 80:
intervals["良好(80-89)"] += 1
elif score >= 70:
intervals["中等(70-79)"] += 1
elif score >= 60:
intervals["及格(60-69)"] += 1
else:
intervals["不及格(<60)"] += 1
print("成绩分布统计:")
for interval, count in intervals.items():
print(f"{interval}: {count}人")
累积统计
示例:计算累积和与累积平均值
# 每日销售数据
daily_sales = [120, 85, 200, 150, 175, 90, 160]
# 计算累积统计
cumulative_sum = 0
cumulative_avg = []
print("每日累积统计:")
for i, sale in enumerate(daily_sales, 1):
cumulative_sum += sale
avg = cumulative_sum / i
cumulative_avg.append(avg)
print(f"第{i}天: 当日{sale}元, 累积销售额{cumulative_sum}元, 累积平均{avg:.1f}元")
条件统计
示例:统计满足条件的数据
# 学生成绩数据
students = [
{"name": "张三", "score": 85, "age": 18},
{"name": "李四", "score": 92, "age": 19},
{"name": "王五", "score": 78, "age": 17},
{"name": "赵六", "score": 95, "age": 20},
{"name": "孙七", "score": 88, "age": 18}
]
# 统计条件:成绩>=85且年龄>=18的学生
filtered_students = []
filter_count = 0
filter_total_score = 0
for student in students:
if student["score"] >= 85 and student["age"] >= 18:
filtered_students.append(student)
filter_count += 1
filter_total_score += student["score"]
# 输出结果
print(f"符合条件的优秀学生({filter_count}人):")
for student in filtered_students:
print(f" {student['name']}: {student['score']}分, {student['age']}岁")
if filter_count > 0:
print(f"平均分: {filter_total_score/filter_count:.1f}")
嵌套循环统计数据
示例:二维数据统计
# 多个班级的成绩数据
class_scores = [
[85, 90, 78, 92], # 班级1
[75, 88, 95, 82], # 班级2
[90, 85, 88, 86], # 班级3
[72, 78, 85, 90] # 班级4
]
print("各班级统计:")
total_all = 0
count_all = 0
class_averages = []
for class_idx, class_s in enumerate(class_scores, 1):
class_total = 0
for score in class_s:
class_total += score
class_avg = class_total / len(class_s)
class_averages.append(class_avg)
total_all += class_total
count_all += len(class_s)
print(f"班级{class_idx}: 总分={class_total}, 平均分={class_avg:.1f}")
print(f"\n全校统计:")
print(f"总人数: {count_all}")
print(f"总分: {total_all}")
print(f"平均分: {total_all/count_all:.1f}")
# 找出最好的班级
best_class = class_averages.index(max(class_averages)) + 1
print(f"最佳班级: 班级{best_class} (平均分: {max(class_averages):.1f})")
实时数据统计
示例:流式数据处理
import random
# 模拟实时数据流
def generate_data_stream():
"""生成模拟数据流"""
base_values = [10, 15, 12, 18, 14, 16, 11, 13]
return base_values + [random.randint(5, 25) for _ in range(5)]
# 实时统计
def real_time_statistics(data_stream):
window_size = 3 # 滑动窗口大小
stats = {
"window_averages": [],
"running_total": 0,
"running_count": 0,
"max_value": float('-inf'),
"min_value": float('inf')
}
window = []
for i, value in enumerate(data_stream, 1):
# 更新运行统计
stats["running_total"] += value
stats["running_count"] += 1
stats["max_value"] = max(stats["max_value"], value)
stats["min_value"] = min(stats["min_value"], value)
# 滑动窗口统计
window.append(value)
if len(window) > window_size:
window.pop(0)
window_avg = sum(window) / len(window)
stats["window_averages"].append(window_avg)
print(f"数据{i}: 值={value}, "
f"运行平均={stats['running_total']/stats['running_count']:.2f}, "
f"窗口平均={window_avg:.2f}")
return stats
# 运行实时统计
print("实时数据流统计:")
data = generate_data_stream()
result = real_time_statistics(data)
print(f"\n最终统计:")
print(f"最大值: {result['max_value']}")
print(f"最小值: {result['min_value']}")
print(f"最终平均: {result['running_total']/result['running_count']:.2f}")
使用enumerate获取索引
for i, value in enumerate(data):
print(f"第{i+1}个数据: {value}")
使用zip并行迭代
names = ["张三", "李四", "王五"]
scores = [85, 92, 78]
for name, score in zip(names, scores):
print(f"{name}: {score}分")
统计性能优化
# 使用局部变量提高循环效率
total = 0
local_scores = scores # 局部引用
for score in local_scores:
total += score
这些案例覆盖了Python循环统计的常见场景,可以根据实际需求进行调整和组合使用,记住选择合适的数据结构和算法可以大大提高统计效率。
版权声明:NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
足球直播
足球直播
足球直播
足球直播
足球直播
足球直播
足球直播
足球直播
足球直播
足球直播
足球直播
足球直播
足球直播
足球直播
足球直播
足球直播
足球直播
足球直播
英超直播
英超直播
英超直播
英超直播
英超直播
英超直播
英超直播
英超直播
英超直播
英超直播
英超直播
英超直播
英超直播
英超直播
英超直播
英超直播
英超直播
英超直播