Python 基础
Python 是一种编程语言。数字表示可计算的数值,字符串表示文本;列表按顺序保存多个值,字典通过键查找值。循环重复执行操作,条件判断决定执行哪个分支,函数封装可重复调用的操作。
30 是数字,"30" 是字符串。for 用于遍历,if 用于条件判断。
下面计算三天的平均学习时长:
def mean_minutes(minutes):
if len(minutes) == 0:
return None
return sum(minutes) / len(minutes)
print(mean_minutes([25, 40, 0]))
return 返回结果,print 显示结果。这里的 0 表示当天没有学习,会参与平均值计算;空列表返回 None。
练习:增加一天记录,用循环统计达到 30 分钟的天数。
数组与形状
数组(array)是按维度排列的数据。形状(shape)记录每个维度的长度。NumPy(Numerical Python)是支持数组与整组数值运算的 Python 库。
下面每行是一位同学,每列是一天的学习分钟数:
import numpy as np
minutes = np.array([[25, 40, 0], [30, 20, 50]])
print(minutes.shape) # (2, 3):2 行、3 列
print(minutes[:, 0]) # 第一天:[25, 30]
print(minutes.mean(axis=1)) # 每位同学的日均时长
索引从 0 开始,: 选取这一维的全部元素。axis=1 对各行求平均,得到两位同学各自的日均时长;axis=0 对各列求平均,得到每天两人的平均时长。
NumPy 数组入门 · 李沐:数据操作,P1(视频使用 PyTorch 的多维数组,也称张量;形状和索引的概念相通)
数据表与缺失值
pandas 是处理表格数据的 Python 库。DataFrame 是带行列名称的二维数据表:一行是一条记录,不同列可以保存不同类型。缺失值表示该位置的数据未知或未记录。
import pandas as pd
records = pd.DataFrame({
"subject": ["Python", "Math", "Python"],
"minutes": [25, 40, 35],
})
print(records[records["minutes"] >= 30])
print(records.groupby("subject")["minutes"].sum())
两次输出分别是时长至少 30 分钟的记录、按科目汇总的总时长。
pd.read_csv("learning.csv") 可以读取 CSV(Comma-Separated Values,逗号分隔值)表格文件。head() 查看前几行,dtypes 查看列类型,isna().sum() 统计缺失值。缺失的时长表示未知,填成 0 会改变数据含义。
练习:增加 hours 列,将分钟换算为小时。
数据可视化
数据可视化把数值转换成位置、长度、颜色等视觉信息。柱状图比较各组大小,折线图显示随时间的变化,散点图显示两项测量之间的关系。
下面沿用上节的 records,用绘图库 Matplotlib 绘制柱状图:
import matplotlib.pyplot as plt
totals = records.groupby("subject")["minutes"].sum()
totals.plot.bar()
plt.ylabel("Minutes")
plt.tight_layout()
plt.show()
图中 Python 为 60 分钟,Math 为 40 分钟。坐标轴标明单位,时序数据按日期排序,柱状图通常从零开始,便于比较大小。
