4.1知识点 · 课时
用 Python 处理数据
了解大数据的基本概念与特征,学会用 Python 处理一组数据。
大数据:数据时代的背景
在动手编程之前,先了解一个重要概念——大数据(Big Data)。这既是时代背景,也是考试常见考点。
什么是大数据
大数据是指无法用常规软件工具在合理时间内进行采集、管理和处理的数据集合——数据量巨大、类型复杂,需要专门的技术来处理。
简单说:数据量大到传统方法处理不了,就是大数据。
大数据的特征(考试重点)
大数据通常用 "4V" 来描述其特征,这是选择题的高频考点:
| 特征 | 英文 | 含义 | 例子 |
|---|---|---|---|
| 大量 | Volume | 数据量巨大 | 全球每天产生数百万 TB 数据 |
| 多样 | Variety | 数据类型多 | 文字、图片、视频、传感器数据…… |
| 高速 | Velocity | 产生和处理速度快 | 直播实时弹幕、股票实时行情 |
| 价值 | Value | 单条数据价值低,但整体价值高 | 一条浏览记录不值钱,亿万条能训练推荐算法 |
考试技巧:看到"数据量大"选 Volume,看到"类型丰富"选 Variety,看到"实时/快"选 Velocity,看到"价值密度低"选 Value。
大数据与日常生活的关系
大数据就在你身边:
- 短视频推荐:抖音用你的观看数据(大数据)推荐感兴趣的内容
- 导航避堵:高德地图用所有用户的实时位置数据(大数据)计算拥堵
- 精准广告:电商平台用你的浏览和购买数据(大数据)推送商品
- 疫情防控:健康码用所有人的出行数据(大数据)做流调
大数据的核心价值:从海量数据中发现规律,辅助决策。这正是我们学信息科技、学编程的意义——掌握处理数据的能力。
从"手动算"到"编程算"
回想一下:第一章你手动记录了一周屏幕时间,第二章用「数字习惯分析器」算了均值和峰值。那个工具背后的逻辑是什么?现在我们用 Python 代码自己实现。
用列表存储一组数据
第三章我们学过列表。现在用它存一周的屏幕时间:
# 一周的屏幕时间(小时)
screen_time = [3.5, 4.2, 3.8, 5.1, 6.5, 8.2, 7.6]
days = ["周一", "周二", "周三", "周四", "周五", "周六", "周日"]
两个列表,一个存数据,一个存标签——这是数据处理的基本做法。
用 Python 计算统计量
Python 内置了几个统计函数,不用自己写循环:
| 函数 | 作用 | 例子 |
|---|---|---|
sum() | 求总和 | sum(screen_time) → 38.9 |
len() | 元素个数 | len(screen_time) → 7 |
max() | 最大值 | max(screen_time) → 8.2 |
min() | 最小值 | min(screen_time) → 3.5 |
有了这些,计算平均值就很简单:
screen_time = [3.5, 4.2, 3.8, 5.1, 6.5, 8.2, 7.6]
total = sum(screen_time) # 总和: 38.9
count = len(screen_time) # 个数: 7
average = total / count # 平均: 5.56
print("总屏幕时间:", total, "小时")
print("日均:", round(average, 1), "小时") # round() 保留 1 位小数
print("最高:", max(screen_time), "小时")
print("最低:", min(screen_time), "小时")
输出:
总屏幕时间: 38.9 小时
日均: 5.6 小时
最高: 8.2 小时
最低: 3.5 小时
对比第二章的「数字习惯分析器」——它算的均值、峰值,你现在用 4 行 Python 就能实现。这就是编程处理数据的能力。
用循环找"哪天最多"
max() 能告诉你最大值是 8.2,但不告诉你是哪一天。用循环 + 判断可以找到:
screen_time = [3.5, 4.2, 3.8, 5.1, 6.5, 8.2, 7.6]
days = ["周一", "周二", "周三", "周四", "周五", "周六", "周日"]
max_value = max(screen_time) # 先找到最大值
for i in range(len(screen_time)):
if screen_time[i] == max_value:
print("屏幕时间最长的是", days[i], ",", max_value, "小时")
输出:屏幕时间最长的是 周六 , 8.2 小时
数据排序
sorted() 函数可以对列表排序(不改原列表,返回新列表):
screen_time = [3.5, 4.2, 3.8, 5.1, 6.5, 8.2, 7.6]
# 从小到大排序
asc = sorted(screen_time)
print("从少到多:", asc)
# 输出: [3.5, 3.8, 4.2, 5.1, 6.5, 7.6, 8.2]
# 从大到小排序
desc = sorted(screen_time, reverse=True)
print("从多到少:", desc)
📱 项目实践:数据报告
用你自己的真实屏幕时间数据,写一个 Python 程序,输出一份完整的「数字习惯报告」:
# ===== 我的数字习惯报告 =====
screen_time = [3.5, 4.2, 3.8, 5.1, 6.5, 8.2, 7.6] # 换成你的真实数据
days = ["周一", "周二", "周三", "周四", "周五", "周六", "周日"]
print("=== 一周屏幕时间报告 ===")
print("总计:", sum(screen_time), "小时")
print("日均:", round(sum(screen_time) / len(screen_time), 1), "小时")
print("最高:", max(screen_time), "小时")
print("最低:", min(screen_time), "小时")
# 找最高那天
max_val = max(screen_time)
for i in range(len(days)):
if screen_time[i] == max_val:
print("最耗时的日子:", days[i])
下一节,我们给这份报告加上图表——用 Python 画出来。
🤔 思考
- 如果有 365 天的数据(一年),你还愿意手动算均值吗?编程的优势在哪?
sum() / len()算平均值,和第三章用循环累加再除,哪种更简洁?- 怎么找出高于平均值的日子有几天?
📝 知识小结
- 大数据 4V 特征:Volume(大量)、Variety(多样)、Velocity(高速)、Value(价值)——选择题考点
- 数据处理的核心:用列表存数据,用函数算统计量
- 四个内置函数:
sum()/len()/max()/min() - 平均值 =
sum() / len(),用round()保留小数位 sorted()排序,reverse=True降序- 循环 + 判断可以定位"最值"的位置