使用 pandas 高效导入数据
Amany Mahfouz
Instructor
concat()pandas 函数pd.concat([df1,df2])ignore_index 设为 True 可重编号# 获取前 20 个书店结果
params = {"term": "bookstore",
"location": "San Francisco"}
first_results = requests.get(api_url,
headers=headers,
params=params).json()
first_20_bookstores = json_normalize(first_results["businesses"],
sep="_")
print(first_20_bookstores.shape)
(20, 24)
# 获取接下来的 20 个书店
params["offset"] = 20
next_results = requests.get(api_url,
headers=headers,
params=params).json()
next_20_bookstores = json_normalize(next_results["businesses"],
sep="_")
print(next_20_bookstores.shape)
(20, 24)
# 合并书店数据集并重编号行 bookstores = pd.concat([first_20_bookstores, next_20_bookstores], ignore_index=True)print(bookstores.name)
0 City Lights Bookstore
1 Alexander Book Company
2 Borderlands Books
3 Alley Cat Books
4 Dog Eared Books
... ...
35 Forest Books
36 San Francisco Center For The Book
37 KingSpoke - Book Store
38 Eastwind Books & Arts
39 My Favorite
Name: name, dtype: object
merge():pandas 版 SQL 连接merge()pandas 函数也是 DataFrame 方法df.merge() 参数onleft_on 和 right_oncall_counts.head()
created_date call_counts
0 01/01/2018 4597
1 01/02/2018 4362
2 01/03/2018 3045
3 01/04/2018 3374
4 01/05/2018 4333
weather.head()
date tmax tmin
0 12/01/2017 52 42
1 12/02/2017 48 39
2 12/03/2017 48 42
3 12/04/2017 51 40
4 12/05/2017 61 50
# 按日期列将 weather 合并到 call_counts merged = call_counts.merge(weather, left_on="created_date", right_on="date")print(merged.head())
created_date call_counts date tmax tmin
0 01/01/2018 4597 01/01/2018 19 7
1 01/02/2018 4362 01/02/2018 26 13
2 01/03/2018 3045 01/03/2018 30 16
3 01/04/2018 3374 01/04/2018 29 19
4 01/05/2018 4333 01/05/2018 19 9
created_date call_counts date tmax tmin
0 01/01/2018 4597 01/01/2018 19 7
1 01/02/2018 4362 01/02/2018 26 13
2 01/03/2018 3045 01/03/2018 30 16
3 01/04/2018 3374 01/04/2018 29 19
4 01/05/2018 4333 01/05/2018 19 9
merge() 默认:仅返回两数据集中都存在的值使用 pandas 高效导入数据