📖 知识点
1. 从字典 / 列表创建 DataFrame
前面 Day1 用字典创建过。这里进一步:列表套字典(每行一个字典)是最常见的数据结构:
import pandas as pd
data = [
{"菜名": "白菜", "价格": 3},
{"菜名": "番茄", "价格": 5},
{"菜名": "土豆", "价格": 2},
]
df = pd.DataFrame(data)
print(df)
运行输出:
菜名 价格
0 白菜 3
1 番茄 5
2 土豆 2
2. 从 JSON 读取
pd.read_json("文件.json") 直接读 JSON 文件成 DataFrame:
# 读JSON文件
df = pd.read_json("食材.json")
JSON(JavaScript 对象表示法)是接口返回数据最常用的格式,爬虫抓到的数据往往就是 JSON。
3. 从 JSON 字符串 / 字典直接转
如果数据是接口返回的 JSON 字符串或已经是 Python 字典:
import json
# JSON字符串 → 字典 → DataFrame
json_str = '[{"菜名":"白菜","价格":3}]'
df = pd.DataFrame(json.loads(json_str))
步骤:
json.loads()把 JSON 字符串转成 Python 字典 / 列表,再DataFrame()转表格。
4. 多样数据源对比
| 数据源 | 读取方式 |
|---|---|
| CSV 文件 | pd.read_csv() |
| Excel 文件 | pd.read_excel() |
| JSON 文件 | pd.read_json() |
| Python 字典 / 列表 | pd.DataFrame(数据) |
💡 理解
- 核心思想:任何结构化的 Python 数据,都能用
pd.DataFrame()变成表格- 字典、列表、JSON 字符串→字典,通通 "装盘"
- 爬虫 / 接口数据常用 JSON,学会这招就能把抓来的数据变成可分析的表
⚠️ 易错提醒
pd.DataFrame()传入字典时,键会成为列名- JSON 字符串要先
json.loads()转成 Python 对象,再转 DataFrame- 字典各 "键" 数量不一致时,缺失位置会变成 NaN(缺失值,Day9 再学)
⚔️ Kata 实战任务
任务需求:
- 导入 pandas 和 json
- 用 "列表套字典" 创建一个 DataFrame(菜名、价格)
- 用
pd.DataFrame()把一个 Python 字典转成 DataFrame - 用
pd.read_json()读取一个 JSON 文件(若有),或用json.loads转 JSON 字符串 - 打印各结果,理解 "任何结构化数据都能变表格"
参考代码
import pandas as pd
import json
# 方式1:列表套字典创建食材桌
data = [
{"菜名": "白菜", "价格": 3},
{"菜名": "番茄", "价格": 5},
{"菜名": "土豆", "价格": 2},
]
df1 = pd.DataFrame(data)
print("===== 方式1:列表套字典 =====")
print(df1)
# 方式2:把字典直接转DataFrame
dict_data = {"菜名": ["黄瓜", "茄子"], "价格": [4, 6]}
df2 = pd.DataFrame(dict_data)
print("\n===== 方式2:字典转表格 =====")
print(df2)
# 方式3:JSON字符串 → 字典 → DataFrame
json_str = '[{"菜名":"冬瓜","价格":1},{"菜名":"南瓜","价格":2}]'
df3 = pd.DataFrame(json.loads(json_str))
print("\n===== 方式3:JSON字符串转表格 =====")
print(df3)
运行输出:
===== 方式1:列表套字典 =====
菜名 价格
0 白菜 3
1 番茄 5
2 土豆 2
===== 方式2:字典转表格 =====
菜名 价格
0 黄瓜 4
1 茄子 6
===== 方式3:JSON字符串转表格 =====
菜名 价格
0 冬瓜 1
1 南瓜 2
🧠 思考题
pd.DataFrame()传入 "列表套字典" 和直接传 "字典"(键是列名),两种方式创建的表格列顺序一样吗?各是什么效果?- 为什么爬虫 / 接口拿到的 JSON 数据,要先
json.loads()再转 DataFrame?
行者孙Python