2. Python基础速通(一):Python环境搭建(Anaconda)、Jupyter Notebook使用、变量与数据类型、列表与字典
各位同学,欢迎来到Python基础速通的第一讲。
说实话,很多做储能数据分析的朋友,一开始都卡在环境搭建上。我见过太多人,代码写得挺好,结果装个库装了一整天,心态直接崩了。所以咱们第一步,先把地基打牢。
2.1 为什么我推荐Anaconda?
Python本身只是一个解释器,但做数据分析需要一堆库:NumPy、Pandas、Matplotlib……一个个手动装,不仅麻烦,还容易版本冲突。
Anaconda 就是来解决这个问题的。它是一个Python发行版,自带200多个常用库,还带了一个包管理器叫 conda。
核心优势:
- 一键安装,省去配环境的痛苦
- 自带Jupyter Notebook,写代码和笔记二合一
- 虚拟环境管理,不同项目用不同Python版本,互不干扰
我个人习惯,每个储能项目都新建一个独立环境。比如处理锂电池数据用一个环境,做光伏预测用另一个。这样哪怕某个库升级出问题,也不影响其他项目。
2.2 安装与验证
去官网下载Anaconda,选Python 3.9或3.10版本就行。安装时记得勾选「Add Anaconda to my PATH environment variable」——这一步很多人会忘,我刚开始也吃过这个亏。
装完后,打开终端(Windows用CMD或PowerShell,Mac/Linux用Terminal),输入:
conda --version
如果看到版本号,说明装好了。再输入 python 进入交互模式,试试:
print("Hello, 储能大数据!")
看到输出,环境就通了。
2.3 Jupyter Notebook:写代码的笔记本
Jupyter Notebook 是我最常用的工具。它把代码、运行结果、图表、文字说明都放在一个文件里,特别适合做探索性分析。
启动方式很简单,终端输入:
jupyter notebook
浏览器会自动打开一个页面,点右上角「New」→「Python 3」就能新建一个笔记本。
小技巧: 按 Shift + Enter 运行当前单元格,并自动创建下一个。按 Esc + M 可以把单元格切换成Markdown模式,写笔记用。
我在项目中经常这样用:上半部分写分析思路(Markdown),下半部分写代码验证。一个文件就是一个完整的数据分析报告。
2.4 变量与数据类型
Python是动态类型语言,变量不需要提前声明类型。直接赋值就行:
# 数值型
battery_capacity = 100 # 整数,单位kWh
voltage = 3.7 # 浮点数,单位V
# 字符串
project_name = "储能电站A"
# 布尔型
is_charging = True
print(type(battery_capacity)) # <class 'int'>
print(type(voltage)) # <class 'float'>
这里有个坑,我必须要提醒你。
避坑指南: 我曾经在处理电池SOC数据时,把一个浮点数直接当整数用了,结果计算精度出了问题。Python里 3.7 和 3.70 是一样的,但 3 和 3.0 类型不同。做储能计算时,涉及电压、电流、容量,尽量用浮点数,别偷懒用整数。
2.5 列表:有序的数据集合
列表用方括号 [] 表示,可以放不同类型的数据。这在储能数据分析里太常用了——比如记录一组电池的电压值:
# 创建列表
voltages = [3.7, 3.8, 3.6, 3.9, 3.75]
# 访问元素(索引从0开始)
print(voltages[0]) # 3.7
print(voltages[-1]) # 3.75,负索引从末尾开始
# 切片:取前三个
print(voltages[:3]) # [3.7, 3.8, 3.6]
# 添加元素
voltages.append(3.85)
print(voltages) # [3.7, 3.8, 3.6, 3.9, 3.75, 3.85]
# 列表长度
print(len(voltages)) # 6
你想想看,如果手动记录100个电池的电压,用列表几行代码就搞定了。我当年做电池组一致性分析时,就是用列表存了上千个电芯的电压,然后算标准差,找出异常电芯。
2.6 字典:键值对存储
字典用花括号 {},每个元素由「键:值」组成。适合存有结构的数据,比如一个电池模组的参数:
# 创建字典
battery_module = {
"id": "BM-001",
"capacity_kwh": 50,
"voltage_nominal": 48,
"cell_count": 16,
"status": "正常"
}
# 访问值
print(battery_module["capacity_kwh"]) # 50
# 修改值
battery_module["status"] = "需维护"
# 添加新键
battery_module["temperature_c"] = 25.3
# 遍历字典
for key, value in battery_module.items():
print(f"{key}: {value}")
实际应用场景: 我在做储能电站的资产管理系统时,每个电池簇就是一个字典,包含ID、容量、循环次数、健康状态等字段。几百个字典放在一个列表里,就是完整的资产台账。
2.7 本章知识体系
下面这张图,帮你理清今天讲的内容结构:
2.8 避坑总结
最后,我把今天容易踩的坑列一下:
| 常见错误 | 原因 | 正确做法 |
|---|---|---|
| 索引越界 | 列表索引从0开始,访问不存在的索引 | 用 len() 确认长度,或用 try-except |
| 字典键不存在 | 直接访问不存在的键会报KeyError | 用 get() 方法,如 dict.get("key", 默认值) |
| 类型混淆 | 整数和浮点数混用导致精度问题 | 涉及计算时统一用浮点数 |
| 环境混乱 | 不同项目共用同一个Python环境 | 每个项目建一个conda虚拟环境 |
嗯,今天就到这儿。把这些基础打牢,下一节我们就能开始处理真正的储能数据了。
公众号:蓝海资料掘金营,微信deep3321