在机器学习领域,高性能数据并非总是必需的。作为机器学习从业者,在处理现实世界的问题或构建项目时,数据是必不可少的。为了满足对数据的需求,通常需要从API获取数据;如果网站不提供API,那么剩下的唯一选择就是网络爬虫。本文将指导如何使用API提取数据,并将其保存为数据框的形式。
API是应用程序编程接口,它作为两个软件之间通信的接口。例如,如果想要预订火车票,有多种选择,如IRCTC网站、Yatra、Make My Trip等。这些不同的组织和软件能够共享信息,这就是API的重要性。每个组织在多个操作系统上提供服务,如iOS和Android,它们都与单一数据库集成,因此它们也使用API从数据库中获取数据以供多个应用程序使用。
API
代表应用程序编程接口,它作为两个软件之间通信的接口。
考虑一个例子,如果想要预订火车票,有多种选择,如IRCTC网站、Yatra、Make My Trip等。这些不同的组织和软件能够共享信息,这就是API的重要性。每个组织在多个操作系统上提供服务,如iOS和Android,它们都与单一数据库集成,因此它们也使用API从数据库中获取数据以供多个应用程序使用。
将使用TMDB官方网站,它提供不同的API来获取不同类型的数据。将获取最高评分的电影数据到数据框中。要获取数据,需要传递API。访问TMDB网站并使用Google账户注册并登录。之后,在个人资料部分访问设置。在设置的左侧面板中,最后一个选项是API,点击它并生成API。
现在有自己的API密钥,访问TMDB API开发者网站,可以在API部分的顶部看到。点击电影并访问获取最高评分。在最高评分窗口中,点击尝试现在选项,可以看到右侧的发送请求按钮旁边有一个链接到最高评分电影。
https://api.themoviedb.org/3/movie/top_rated?api_key=<>&language=en-US&page=1
复制链接并将API密钥粘贴到链接中,然后打开链接,将能够看到类似JSON的数据。现在为了理解这些数据,有各种工具,如JSON查看器。如果想,可以打开它并将代码粘贴到查看器中。它是一个字典,所需的电影信息位于结果键下。
打开Jupyter Notebook来编写代码并提取数据到数据框中。如果没有安装pandas和requests库,请使用pip命令安装。
pip install pandas
pip install requests
现在定义API密钥在链接中,并向TMDB网站发送请求以提取数据并保存响应到一个变量中。
api_key = 'API密钥'
link = "https://api.themoviedb.org/3/movie/top_rated?api_key=<>&language=en-US&page=1"
response = requests.get(link)
不要忘记在链接中提到API密钥。运行上述代码后,如果打印响应,可以看到响应为200,这意味着一切都在正常工作,已经以JSON的形式获得了数据。想要的数据在结果键下,所以尝试打印结果键。
response.json()["results"]
为了创建所需列的数据框,可以使用pandas数据框,将得到一个有20行的数据框,这些是第1页的顶级电影。
data = pd.DataFrame(response.json()["results"])[['id','title','overview','popularity','release_date','vote_average','vote_count']]
想要完整的428页的数据,所以将代码放在for循环中,并再次向不同页面的网站发送请求,每次都会得到20行和七列的数据。
for i in range(1, 429):
response = requests.get("https://api.themoviedb.org/3/movie/top_rated?api_key=&language=en-US&page={}".format(i))
temp_df = pd.DataFrame(response.json()["results"])[['id','title','overview','popularity','release_date','vote_average','vote_count']]
data.append(temp_df, ignore_index=False)
因此得到了完整的数据框,有8551行。格式化了页码以请求每次不同的页面。请在链接中提到API密钥,去掉HTML标签。运行至少需要2分钟。得到的数据框如下所示。
将数据保存到CSV文件,以便可以使用这些数据进行分析、处理并在此基础上创建项目。
使用Python操作SQL数据库非常简单。Python提供了各种库来连接数据库,读取SQL查询,并从SQL表中提取数据到pandas数据框。
使用Kaggle上上传的世界城市和地区人口数据集,以SQL查询格式提供。可以从这里访问数据集。下载文件并将其上传到本地数据库。可以选择MySQL、XAMPP、SQLite或任何喜欢的数据库。所有数据库都提供导入选项,只需点击它并选择下载的文件并上传。
为了建立连接,请安装MySQL连接器库。
!pip install mysql.connector
import numpy as np
import pandas as pd
import mysql.connector
conn = mysql.connector.connect(host="localhost", user="root", password="", database="World")
city_data = pd.read_sql_query("SELECT * FROM city", conn)