一、Python 基础(必须先掌握)
1.1 数据类型
| 类型 | 说明 | 示例 |
|---|---|---|
str(字符串) |
文本数据 | "美国.txt"、'{"name":"张三"}' |
int(整数) |
整数 | 1、315、68128 |
float(浮点数) |
小数 | 3.14、2.5 |
list(列表) |
有序可变序列 | ["北京", "上海", "广东"] |
tuple(元组) |
有序不可变序列 | ("北京", 99) |
dict(字典) |
键值对集合 | {"name": "湖北", "confirm": 68128} |
bool(布尔) |
True/False | is_show=True |
1.2 文件操作
python
# 打开文件 open("文件路径", "r", encoding="UTF-8") # r=读,w=写,a=追加 # 推荐方式(自动关闭) with open("文件.txt", "r", encoding="UTF-8") as f: data = f.read() # 手动方式 f = open("文件.txt", "r", encoding="UTF-8") data = f.read() f.close() # 必须手动关闭!
1.3 字符串操作
| 方法 | 说明 | 示例 |
|---|---|---|
replace() |
替换字符串 | "abc".replace("a", "A") → "Abc" |
[:-2] |
切片(去掉最后2个字符) | "abc"[:-2] → "a" |
[:315] |
切片(取前315个) | list[:315] |
len() |
获取长度 | len("abc") → 3 |
f-string |
格式化字符串 | f"日期:{date}" |
1.4 列表操作
python
# 列表推导式(重点!) data_list = [(p["name"], p["total"]["confirm"]) for p in children] # 等同于: data_list = [] for p in children: data_list.append((p["name"], p["total"]["confirm"])) # 常用操作 list.append() # 添加元素 list[:n] # 取前n个 list[-n:] # 取后n个 len(list) # 获取长度 max(list) # 最大值 min(list) # 最小值 sum(list) # 求和
1.5 字典操作
python
# 获取值
data_dict["key"] # 直接获取
data_dict.get("key") # 安全获取(不存在返回None)
# 遍历字典
for key, value in data_dict.items():
print(key, value)
# 嵌套字典访问
us_dict["data"][0]["trend"]["confirm"]
1.6 函数定义
python
def 函数名(参数1, 参数2): # 函数体 return 返回值 # 示例 def load_data(file_path, callback_name): with open(file_path, "r", encoding="UTF-8") as f: data = f.read() data = data.replace(callback_name, "") data = data[:-2] return json.loads(data)
1.7 异常处理
python
try: data = json.loads(json_str) except json.JSONDecodeError: print("JSON格式错误!") except FileNotFoundError: print("文件不存在!") finally: print("执行完毕")
二、JSON 数据处理(核心)
2.1 JSON 基础语法
| JSON 类型 | Python 对应 | 示例 |
|---|---|---|
对象 {} |
字典 dict |
{"name": "张三"} |
数组 [] |
列表 list |
["北京", "上海"] |
字符串 "" |
字符串 str |
"hello" |
| 数字 | int/float | 123、3.14 |
| 布尔 | bool | true/false |
| null | None | null |
2.2 JSONP 格式处理
python
# JSONP 格式 jsonp_1629344292311_69436({ "data": [...] }); # 处理步骤 data = data.replace("jsonp_1629344292311_69436(", "") # 去掉开头 data = data[:-2] # 去掉结尾的 ");" data_dict = json.loads(data) # 转换为字典
2.3 json 模块核心方法
| 方法 | 说明 | 示例 |
|---|---|---|
json.loads() |
JSON字符串 → Python对象 | json.loads('{"a":1}') |
json.dumps() |
Python对象 → JSON字符串 | json.dumps({"a":1}) |
json.load() |
从文件读取JSON | json.load(f) |
json.dump() |
写入JSON到文件 | json.dump(data, f) |
2.4 数据提取模式
python
# 模式1:折线图数据结构 data_dict["data"][0]["trend"]["date"] # 日期列表 data_dict["data"][0]["trend"]["confirm"] # 确诊列表 # 模式2:地图数据结构 data_dict["areaTree"][0]["children"] # 省份列表 province["name"] # 省份名 province["total"]["confirm"] # 确诊数
三、Pyecharts 基础
3.1 安装
bash
pip install pyecharts
3.2 核心模块
| 模块 | 说明 |
|---|---|
from pyecharts.charts import * |
图表类(Line, Map, Bar, Pie...) |
from pyecharts import options as opts |
配置选项 |
from pyecharts.options import * |
具体配置项 |
3.3 通用三步曲
python
# 第1步:创建图表对象 chart = 图表类型() # 第2步:添加数据 chart.add_xaxis(x_data) chart.add_yaxis("系列名", y_data) # 第3步:生成HTML chart.render("文件名.html")
四、Pyecharts 折线图(Line)
4.1 核心配置
python
Line(
init_opts=opts.InitOpts(
width="1200px", # 宽度
height="600px", # 高度
theme="light" # 主题
)
)
4.2 常用方法
| 方法 | 说明 |
|---|---|
.add_xaxis() |
添加x轴数据 |
.add_yaxis() |
添加y轴数据 |
.set_global_opts() |
设置全局配置 |
.set_series_opts() |
设置系列配置 |
.render() |
生成HTML文件 |
4.3 全局配置项
| 配置项 | 说明 | 示例 |
|---|---|---|
TitleOpts |
标题 | title="图表标题" |
TooltipOpts |
鼠标悬停提示 | trigger="axis" |
LegendOpts |
图例 | pos_top="5%" |
AxisOpts |
坐标轴 | name="日期" |
DataZoomOpts |
缩放滑块 | range_start=0 |
MarkPointOpts |
标记点 | type_="max" |
MarkLineOpts |
标记线 | type_="average" |
4.4 链式调用
python
line = ( Line() .add_xaxis(x_data) .add_yaxis("系列1", y1_data) .add_yaxis("系列2", y2_data) .set_global_opts(...) .set_series_opts(...) )
五、Pyecharts 地图(Map)
5.1 核心方法
| 方法 | 说明 |
|---|---|
.add(名称, 数据, 地图类型) |
添加地图数据 |
.set_global_opts() |
设置全局配置 |
5.2 数据格式
python
# 数据格式:[(省份名, 数值), ...]
data_list = [
("北京", 99),
("上海", 199),
("广东", 499)
]
5.3 视觉映射配置
python
VisualMapOpts( is_show=True, # 显示图例 is_piecewise=True, # 分段显示 pieces=[ # 分段规则 {"min": 1, "max": 99, "label": "1~99人", "color": "#CCFFFF"}, {"min": 100, "label": "100+人", "color": "#CC3333"} ] )
5.4 省份名称注意事项
python
# pyecharts 需要完整省份名称
"湖北" ❌ → "湖北省" ✅
"北京" ❌ → "北京市" ✅
"广西" ❌ → "广西壮族自治区" ✅
"新疆" ❌ → "新疆维吾尔自治区" ✅
六、Pyecharts 其他图表
6.1 柱状图(Bar)
python
from pyecharts.charts import Bar bar = Bar() bar.add_xaxis(["A", "B", "C"]) bar.add_yaxis("系列名", [10, 20, 30]) bar.render("柱状图.html")
6.2 饼图(Pie)
python
from pyecharts.charts import Pie pie = Pie() pie.add("", [("A", 10), ("B", 20), ("C", 30)]) pie.render("饼图.html")
6.3 散点图(Scatter)
python
from pyecharts.charts import Scatter scatter = Scatter() scatter.add_xaxis([1, 2, 3, 4, 5]) scatter.add_yaxis("系列名", [10, 25, 30, 45, 60]) scatter.render("散点图.html")
七、数据处理技巧
7.1 自定义函数(复用代码)
python
def load_data(file_path, callback_name): with open(file_path, "r", encoding="UTF-8") as f: data = f.read() data = data.replace(callback_name, "") data = data\[:-2\] return json.loads(data) # 一行读取一个国家数据 us_dict = load_data("美国.txt", "jsonp_xxx(")
7.2 批量处理多个文件
python
files = {"美国": "jsonp_xxx(", "日本": "jsonp_yyy("} data_dicts = {} for name, callback in files.items(): data_dicts[name] = load_data(f"{name}.txt", callback)
7.3 数据验证
python
# 检查数据长度 print(f"数据长度:{len(data)}") # 查看前几条 print(data[:5]) # 检查数据类型 print(type(data)) # 检查键是否存在 if "key" in data_dict: print("键存在")
八、常见错误及解决方案
| 错误类型 | 原因 | 解决方案 |
|---|---|---|
FileNotFoundError |
文件路径错误 | 检查路径和文件名 |
JSONDecodeError |
JSON格式不正确 | 检查是否去除JSONP包装 |
KeyError |
字典键不存在 | print(data_dict.keys()) 查看所有键 |
IndexError |
列表索引超出范围 | 检查列表长度 len(list) |
TypeError |
类型错误 | 检查数据类型 type() |
NameError |
变量未定义 | 检查变量是否已赋值 |
图表显示 NaN |
省份名称不匹配 | 使用完整省份名 |
【结合今日所学,让ai总结错误并记录下来,利于下次翻阅与复习!!!】