1pip:Python的"应用商店"
安装第三方库用 pip 命令,就像手机装 App 一样简单。
pip 常用命令
# 安装库pip install requests pandas openpyxl# 安装指定版本pip install requests==2.31.0# 升级库pip install --upgrade requests# 查看已安装的库pip list# 卸载库pip uninstall requests# 国内镜像加速(推荐)pip install requests -i https://pypi.tuna.tsinghua.edu.cn/simple
💡 国内用户必看:默认 PyPI 源在国内很慢,用清华镜像加速:pip install xxx -i https://pypi.tuna.tsinghua.edu.cn/simple
| | |
|---|
| requests | | pip install requests |
| json | | |
| os | | |
| pandas | | pip install pandas |
2requests:用Python上网
requests 是 Python 最流行的 HTTP 库,几行代码就能抓取网页内容或调用 API 接口。
案例1:GET请求——获取公开API数据
import requests# 调用免费API:获取随机笑话response = requests.get("https://httpbin.org/json")# 查看状态码print(response.status_code) # 200 表示成功# 获取返回的JSON数据data = response.json()print(data)
案例2:带参数的GET请求
import requests# 模拟查询参数:?city=北京&days=3params = { "city": "北京", "days": 3}response = requests.get( "https://httpbin.org/get", params=params)print(response.url) # https://httpbin.org/get?city=北京&days=3print(response.json()["args"]) # {'city': '北京', 'days': '3'}
案例3:POST请求——提交表单数据
import requests# 模拟登录提交data = { "username": "ama", "password": "123456"}response = requests.post("https://httpbin.org/post", data=data)result = response.json()print(result["form"]) # {'username': 'ama', 'password': '123456'}
💡 requests 常用技巧:① response.text 获取网页HTML文本;② response.json() 自动解析JSON;③ 加 headers={"User-Agent": "..."} 模拟浏览器,避免被反爬;④ timeout=5 设置超时,防止卡死。
3json:数据交换的"普通话"
JSON 是互联网最通用的数据格式,几乎所有 API 都用 JSON 返回数据。Python 内置了 json 模块来处理它。
案例:JSON 与 Python 字典互转
import json# Python字典 → JSON字符串student = { "name": "小明", "age": 3, "courses": ["Python", "AI"], "graduated": False}json_str = json.dumps(student, ensure_ascii=False, indent=2)print(json_str)
{ "name": "小明", "age": 3, "courses": ["Python", "AI"], "graduated": false}
# JSON字符串 → Python字典parsed = json.loads(json_str)print(parsed["name"]) #小明 print(parsed["courses"]) # ['Python', 'AI']print(type(parsed)) # <class 'dict'># 读写JSON文件with open("data.json", "w", encoding="utf-8") as f: json.dump(student, f, ensure_ascii=False, indent=2)with open("data.json", "r", encoding="utf-8") as f: loaded = json.load(f)
💡 ensure_ascii=False:处理中文时一定要加这个参数,否则中文会变成 \u963f\u739b 这样的乱码。
4os:文件系统操作
os 模块让你用代码操作文件和文件夹——批量重命名、遍历目录、自动整理文件。
案例1:文件与目录操作
import os# 获取当前工作目录print(os.getcwd())# 创建目录os.makedirs("output/screenshots", exist_ok=True)# 列出目录下所有文件files = os.listdir(".")print(files)# 判断文件/目录是否存在print(os.path.exists("data.json")) # True/Falseprint(os.path.isfile("data.json")) # Trueprint(os.path.isdir("output")) # True# 获取文件大小(字节)size = os.path.getsize("data.json")print(f"文件大小:{size} 字节")# 拼接路径(跨平台安全)path = os.path.join("output", "screenshots", "img.png")print(path) # output\screenshots\img.png (Windows)
案例2:批量重命名文件
import os# 把目录下所有 .txt 文件加前缀 "backup_"folder = "./notes"for filename in os.listdir(folder): if filename.endswith(".txt"): old_path = os.path.join(folder, filename) new_path = os.path.join(folder, f"backup_{filename}") os.rename(old_path, new_path) print(f"重命名:{filename} → backup_{filename}")
5pandas:数据分析利器
pandas 是 Python 数据分析的核武器。它把数据当成"Excel表格"来操作,筛选、排序、统计、分组,几行代码搞定。
案例1:创建DataFrame(数据表)
import pandas as pd# 从字典创建数据表data = { "姓名": ["张三", "李四", "王五", "赵六"], "语文": [85, 92, 78, 90], "数学": [90, 88, 95, 72], "英语": [78, 85, 82, 88]}df = pd.DataFrame(data)print(df)
姓名 语文 数学 英语0 张三 85 90 781 李四 92 88 852 王五 78 95 823 赵六 90 72 88
案例2:数据筛选与统计
# 添加总分和平均分列df["总分"] = df[["语文", "数学", "英语"]].sum(axis=1)df["平均分"] = df[["语文", "数学", "英语"]].mean(axis=1).round(1)print(df[["姓名", "总分", "平均分"]])
姓名 总分 平均分0 张三 253 84.31 李四 265 88.32 王五 255 85.03 赵六 250 83.3
# 筛选:数学大于80分的同学math_good = df[df["数学"] > 80]print(math_good[["姓名", "数学"]])
姓名 数学0 张三 901 李四 882 王五 95
# 按总分降序排序ranked = df.sort_values("总分", ascending=False)print(ranked[["姓名", "总分"]])
姓名 总分1 李四 2652 王五 2550 张三 2533 赵六 250
# 统计每科平均分print(df[["语文", "数学", "英语"]].mean())
语文 86.25数学 86.25英语 83.25dtype: float64
案例3:读写Excel/CSV文件
# 保存为CSV文件df.to_csv("成绩表.csv", index=False, encoding="utf-8-sig")# 保存为Excel文件(需要 openpyxl 库)df.to_excel("成绩表.xlsx", index=False, sheet_name="期中考试")# 读取CSV文件df2 = pd.read_csv("成绩表.csv")# 读取Excel文件df3 = pd.read_excel("成绩表.xlsx", sheet_name="期中考试")
💡 pandas 核心概念:① DataFrame = 二维表格(有行有列);② Series = 一列数据;③ df["列名"] 取列;④ df.iloc[0] 按位置取行;⑤ df[df["列"] > 值] 条件筛选。
6综合实战:获取天气数据并分析
把 requests + json + pandas 串起来,做一个完整的"获取数据→解析→分析"流程。
案例:多城市天气数据分析
import requestsimport jsonimport pandas as pd# 1. 模拟从API获取多个城市的天气数据# (实际开发中替换为真实天气API)weather_data = [ {"city": "北京", "temp": 32, "humidity": 45, "aqi": 85}, {"city": "上海", "temp": 29, "humidity": 72, "aqi": 55}, {"city": "广州", "temp": 35, "humidity": 80, "aqi": 42}, {"city": "成都", "temp": 28, "humidity": 68, "aqi": 60}, {"city": "哈尔滨", "temp": 22, "humidity": 50, "aqi": 38},]# 2. 保存为JSON文件with open("weather.json", "w", encoding="utf-8") as f: json.dump(weather_data, f, ensure_ascii=False, indent=2)# 3. 用pandas加载并分析df = pd.DataFrame(weather_data)# 最热的城市hottest = df.loc[df["temp"].idxmax()]print(f"🔥 最热城市:{hottest['city']},{hottest['temp']}°C")# 空气最好的城市best_air = df.loc[df["aqi"].idxmin()]print(f"🌿 空气最好:{best_air['city']},AQI {best_air['aqi']}")# 平均温度和湿度print(f"📊 平均温度:{df['temp'].mean():.1f}°C")print(f"📊 平均湿度:{df['humidity'].mean():.1f}%")# 筛选:温度>30且AQI<60的城市comfortable = df[(df["temp"] > 30) & (df["aqi"] < 60)]print(f"\n温度>30且空气好的城市:")print(comfortable[["city", "temp", "aqi"]])# 4. 导出分析结果到Exceldf.to_excel("天气分析.xlsx", index=False)
| 运行结果: 🔥 最热城市:广州,35°C🌿 空气最好:哈尔滨,AQI 38📊 平均温度:29.2°C📊 平均湿度:63.0%温度>30且空气好的城市:city temp aqi2 广州 35 42 |
💡 这个案例完整展示了:① 用 json 存储数据;② 用 pandas 创建 DataFrame;③ idxmax/idxmin 找极值;④ 多条件筛选 df[(条件1) & (条件2)];⑤ to_excel 导出结果。这就是数据分析的基本流程。
本篇小结
最后一篇我们将把这些库全部串起来,做三个完整项目:网页爬虫、Excel自动化、数据分析可视化。真正把学到的知识变成"作品"。
Python · requests · pandas · 连载第4篇
觉得有用?收藏起来慢慢看,转发给想学编程的朋友吧 👍