Reddit học javascript 2022

Các bộ dữ liệu thú vị là nhiên liệu của một dự án khoa học dữ liệu tốt. Và trong khi các trang web như Kaggle cung cấp bộ dữ liệu miễn phí cho các nhà khoa học dữ liệu quan tâm, API là một cách rất phổ biến khác để truy cập và thu thập dữ liệu thú vị

Thay vì phải tải xuống một tập dữ liệu, API cho phép lập trình viên yêu cầu dữ liệu trực tiếp từ một số trang web nhất định thông qua giao diện lập trình ứng dụng (do đó, “API”). Nhiều trang web lớn như Reddit, Twitter và Facebook cung cấp API để các nhà phân tích dữ liệu và nhà khoa học dữ liệu có thể truy cập dữ liệu thú vị

Trong hướng dẫn này, chúng ta sẽ đề cập đến những kiến ​​thức cơ bản về cách truy cập API bằng ngôn ngữ lập trình R. Bạn không cần bất kỳ kinh nghiệm API nào, nhưng bạn sẽ cần phải làm quen với các nguyên tắc cơ bản của R để làm theo

Nếu bạn chưa tự tin vào khả năng R của mình, bạn có thể xem các khóa học cơ bản về R và tương tác miễn phí của chúng tôi

> cài đặt. gói ("Yêu cầu dữ liệu")

Bắt đầu học R ngay hôm nay với khóa học Giới thiệu về R của chúng tôi — không cần thẻ tín dụng

ĐĂNG KÝ

Bạn đã có các kỹ năng lập trình R cần thiết chưa? . Hãy đi sâu vào việc truy cập API với R

Giới thiệu về API với R

“API” là một thuật ngữ chung chỉ nơi mà một chương trình máy tính tương tác với một chương trình máy tính khác hoặc với chính nó. Trong hướng dẫn này, chúng ta sẽ làm việc cụ thể với các API web, trong đó hai máy tính khác nhau — máy khách và máy chủ — sẽ tương tác với nhau để yêu cầu và cung cấp dữ liệu tương ứng

API cung cấp cho các nhà khoa học dữ liệu một cách hoàn hảo để yêu cầu dữ liệu sạch và được quản lý từ một trang web. Khi một trang web như Facebook thiết lập API, về cơ bản, họ đang thiết lập một máy tính chờ yêu cầu dữ liệu

Khi máy tính này nhận được yêu cầu dữ liệu, nó sẽ tự xử lý dữ liệu và gửi đến máy tính đã yêu cầu. Từ quan điểm của chúng tôi với tư cách là người yêu cầu, chúng tôi sẽ cần viết mã bằng R để tạo yêu cầu và báo cho máy tính chạy API những gì chúng tôi cần. Sau đó, máy tính đó sẽ đọc mã của chúng tôi, xử lý yêu cầu và trả về dữ liệu được định dạng độc đáo mà các thư viện R hiện có có thể dễ dàng phân tích cú pháp

Tại sao điều này có giá trị? . Khi một lập trình viên cạo một trang web, họ sẽ nhận được dữ liệu trong một đoạn HTML lộn xộn. Mặc dù chắc chắn có những thư viện giúp phân tích cú pháp văn bản HTML dễ dàng, nhưng đây là tất cả các bước làm sạch cần được thực hiện trước khi chúng tôi có được dữ liệu mà chúng tôi muốn

Thông thường, chúng tôi có thể sử dụng ngay dữ liệu chúng tôi nhận được từ API, điều này giúp chúng tôi tiết kiệm thời gian và giảm bớt sự thất vọng

Tạo các yêu cầu API trong R

Để làm việc với các API trong R, chúng tôi cần đưa vào một số thư viện. Các thư viện này lấy tất cả sự phức tạp của một yêu cầu API và gói gọn chúng trong các chức năng mà chúng ta có thể sử dụng trong một dòng mã. Các thư viện R mà chúng tôi sẽ sử dụng là

library(httr)
library(jsonlite)
5 và
library(httr)
library(jsonlite)
6. Chúng phục vụ các vai trò khác nhau trong phần giới thiệu API của chúng tôi, nhưng cả hai đều cần thiết

Nếu bạn không có một trong hai thư viện này trong bảng điều khiển R hoặc RStudio của mình, trước tiên bạn cần tải chúng xuống. Sử dụng chức năng

library(httr)
library(jsonlite)
7 để đưa vào các gói này

install.packages(c("httr", "jsonlite"))

Sau khi tải xuống các thư viện, chúng tôi sẽ có thể sử dụng chúng trong tập lệnh R hoặc tệp RMarkdown của mình

library(httr)
library(jsonlite)

Thực hiện yêu cầu API đầu tiên của chúng tôi

Bước đầu tiên để nhận dữ liệu từ API là đưa ra yêu cầu thực tế trong R. Yêu cầu này sẽ được gửi đến máy chủ có API và giả sử mọi thứ diễn ra suôn sẻ, nó sẽ gửi lại phản hồi. Đồ họa dưới đây minh họa điều này

Reddit học javascript 2022

Có một số loại yêu cầu mà người ta có thể thực hiện đối với máy chủ API. Các loại yêu cầu này tương ứng với các hành động khác nhau mà bạn muốn máy chủ thực hiện

Đối với mục đích của chúng tôi, chúng tôi sẽ chỉ yêu cầu dữ liệu, tương ứng với yêu cầu

library(httr)
library(jsonlite)
8. Các loại yêu cầu khác là
library(httr)
library(jsonlite)
9 và
>> res = GET("https://api.open-notify.org/astros.json")
0, nhưng chúng ta sẽ không cần phải lo lắng về chúng vì mục đích của hướng dẫn R API tập trung vào khoa học dữ liệu này

Để tạo một yêu cầu

library(httr)
library(jsonlite)
8, chúng ta cần sử dụng hàm GET() từ thư viện
library(httr)
library(jsonlite)
5. Hàm
>> res = GET("https://api.open-notify.org/astros.json")
3 yêu cầu một URL, chỉ định địa chỉ của máy chủ mà yêu cầu cần được gửi tới

Hàm GET() gói gọn tất cả sự phức tạp của yêu cầu

library(httr)
library(jsonlite)
8. Ví dụ của chúng tôi, chúng tôi sẽ làm việc với Open Notify API, mở ra dữ liệu về các dự án khác nhau của NASA. Sử dụng Open Notify API, chúng ta có thể tìm hiểu về vị trí của Trạm vũ trụ quốc tế và có bao nhiêu người hiện đang ở trong không gian

Trước tiên, chúng tôi sẽ làm việc với API sau. Chúng tôi sẽ bắt đầu bằng cách đưa ra yêu cầu của mình bằng hàm

>> res = GET("https://api.open-notify.org/astros.json")
3 và chỉ định URL của API

>> res = GET("https://api.open-notify.org/astros.json")

Đầu ra của hàm

>> res = GET("https://api.open-notify.org/astros.json")
3 là một danh sách chứa tất cả thông tin được trả về bởi máy chủ API. Nói cách khác, biến
>> res = GET("https://api.open-notify.org/astros.json")
7 chứa phản hồi của máy chủ API đối với yêu cầu của chúng tôi

Kiểm tra đầu ra >> res = GET("https://api.open-notify.org/astros.json")3

Hãy xem biến

>> res = GET("https://api.open-notify.org/astros.json")
7 trông như thế nào trong bảng điều khiển R

library(httr)
library(jsonlite)
8
library(httr)
library(jsonlite)
9

Điều tra biến res cho chúng ta cái nhìn tóm tắt về phản hồi kết quả. Điều đầu tiên cần chú ý là nó chứa URL mà yêu cầu

library(httr)
library(jsonlite)
8 đã được gửi tới. Chúng tôi cũng có thể xem ngày và giờ thực hiện yêu cầu, cũng như kích thước của phản hồi

Loại nội dung cho chúng ta ý tưởng về dạng dữ liệu. Phản hồi cụ thể này nói rằng dữ liệu có định dạng json, điều này đưa ra gợi ý về lý do tại sao chúng ta cần thư viện

library(httr)
library(jsonlite)
6

Tình trạng xứng đáng được chú ý đặc biệt. "Trạng thái" đề cập đến sự thành công hay thất bại của yêu cầu API và nó có dạng một số. Số được trả về cho bạn biết yêu cầu có thành công hay không và cũng có thể nêu chi tiết một số lý do khiến yêu cầu có thể thất bại

Con số 200 là những gì chúng ta muốn thấy; . Có thêm thông tin về các mã trạng thái khác mà chúng tôi có thể gặp phải tại đây. Vì chúng tôi có 200 phản hồi trạng thái thành công, chúng tôi biết rằng chúng tôi có sẵn dữ liệu và chúng tôi có thể bắt đầu làm việc với dữ liệu đó

Xử lý dữ liệu JSON

JSON là viết tắt của Ký hiệu đối tượng JavaScript. Mặc dù JavaScript là một ngôn ngữ lập trình khác, trọng tâm của chúng tôi về JSON là cấu trúc của nó. JSON rất hữu ích vì máy tính có thể dễ dàng đọc được và vì lý do này, nó đã trở thành cách chính để dữ liệu được vận chuyển qua các API. Hầu hết các API sẽ gửi phản hồi của chúng ở định dạng JSON

JSON được định dạng dưới dạng một chuỗi các cặp khóa-giá trị, trong đó một từ cụ thể (“khóa”) được liên kết với một giá trị cụ thể. Một ví dụ về cấu trúc khóa-giá trị này được hiển thị bên dưới

library(httr)
library(jsonlite)
2

Ở trạng thái hiện tại, dữ liệu trong biến

>> res = GET("https://api.open-notify.org/astros.json")
7 không thể sử dụng được. Dữ liệu thực tế được chứa dưới dạng Unicode thô trong danh sách
>> res = GET("https://api.open-notify.org/astros.json")
7, danh sách này cuối cùng cần được chuyển đổi thành định dạng JSON

Để làm điều này, trước tiên chúng ta cần chuyển đổi Unicode thô thành một vectơ ký tự giống với định dạng JSON được hiển thị ở trên. Hàm

library(httr)
library(jsonlite)
84 chỉ thực hiện nhiệm vụ này, như được hiển thị bên dưới

library(httr)
library(jsonlite)
6
library(httr)
library(jsonlite)
7

Mặc dù chuỗi kết quả trông có vẻ lộn xộn, nhưng đó thực sự là cấu trúc JSON ở định dạng ký tự

Từ một vectơ ký tự, chúng ta có thể chuyển đổi nó thành cấu trúc dữ liệu

library(httr)
library(jsonlite)
85 bằng cách sử dụng hàm
library(httr)
library(jsonlite)
86 từ thư viện
library(httr)
library(jsonlite)
6

Hàm

library(httr)
library(jsonlite)
86 cần một vectơ ký tự chứa cấu trúc JSON, đó là những gì chúng ta nhận được từ đầu ra rawToChar(). Vì vậy, nếu chúng ta xâu chuỗi hai hàm này lại với nhau, chúng ta sẽ nhận được dữ liệu mình muốn ở định dạng mà chúng ta có thể dễ dàng thao tác hơn trong R

install.packages(c("httr", "jsonlite"))
2____33

Trong biến

library(httr)
library(jsonlite)
89 của chúng tôi, tập dữ liệu mà chúng tôi muốn xem xét được chứa trong khung dữ liệu
library(httr)
library(jsonlite)
90. Chúng ta có thể sử dụng toán tử
library(httr)
library(jsonlite)
91 để xem trực tiếp khung dữ liệu này

library(httr)
library(jsonlite)
0
library(httr)
library(jsonlite)
1

Vì vậy, có câu trả lời của chúng tôi. tại thời điểm viết bài đăng trên blog này, có 6 người trong không gian. Nhưng nếu bạn tự mình thử, bạn có thể sẽ nhận được các tên khác và một số khác. Đó là một trong những lợi thế của API - không giống như các bộ dữ liệu có thể tải xuống, chúng thường được cập nhật theo thời gian thực hoặc gần thời gian thực, vì vậy chúng là một cách tuyệt vời để truy cập vào dữ liệu hiện tại

Khung dữ liệu, giống như khung chúng ta thấy ở trên, là cách chúng ta thường lưu trữ dữ liệu có cấu trúc để phân tích sâu hơn trong các thư viện

library(httr)
library(jsonlite)
92 mà chúng ta học trong chương trình Dataquest. (Bạn có thể tìm hiểu thêm về điều này trong Nhà phân tích dữ liệu của chúng tôi trong Đường dẫn R nếu quan tâm. )

Ở trên, chúng tôi đã hướng dẫn quy trình làm việc API rất đơn giản. Hầu hết các API sẽ yêu cầu bạn tuân theo cùng một mẫu chung này, nhưng chúng có thể phức tạp hơn

URL API mà chúng tôi đã sử dụng ở trên chỉ yêu cầu chúng tôi đưa ra yêu cầu từ nó mà không có bất kỳ chi tiết bổ sung nào. Một số API yêu cầu thêm thông tin từ người dùng. Trong phần cuối của hướng dẫn này, chúng tôi sẽ đề cập đến cách cung cấp thông tin bổ sung cho API với yêu cầu của bạn

API và tham số truy vấn

Điều gì sẽ xảy ra nếu chúng ta muốn biết khi nào ISS sẽ đi qua một địa điểm nhất định trên trái đất?

Cụ thể, chúng tôi sẽ cần chỉ định vĩ độ và kinh độ của vị trí mà chúng tôi đang hỏi như một phần của yêu cầu 

>> res = GET("https://api.open-notify.org/astros.json")
3 của chúng tôi. Khi kinh độ và vĩ độ được chỉ định, chúng sẽ được kết hợp với URL ban đầu dưới dạng tham số truy vấn

Hãy sử dụng API này để tìm hiểu khi nào ISS sẽ đi qua Cầu Brooklyn (ở khoảng vĩ độ 40. 7, kinh độ. -74)

library(httr)
library(jsonlite)
2

Các phần tử khác nhau của danh sách mà chúng tôi chuyển vào đối số

library(httr)
library(jsonlite)
94 trong
>> res = GET("https://api.open-notify.org/astros.json")
3 được định dạng chính xác vào URL, vì vậy bạn không phải tự làm điều này

Bạn sẽ cần kiểm tra tài liệu về API mà bạn đang làm việc để xem có bất kỳ tham số truy vấn bắt buộc nào không. Đây là tài liệu API cho ISS Pass Times

Phần lớn các API mà bạn có thể muốn truy cập sẽ có tài liệu mà bạn có thể (và nên) đọc để hiểu rõ ràng về những thông số mà yêu cầu của bạn yêu cầu. Một tham số phổ biến được yêu cầu bởi nhiều API, mặc dù không phải là tham số chúng tôi đang sử dụng cho hướng dẫn này, là khóa API hoặc một số hình thức xác thực khác. Kiểm tra tài liệu của API để tìm hiểu cách lấy khóa API và cách chèn khóa đó vào yêu cầu của bạn

Dù sao, bây giờ chúng tôi đã đưa ra yêu cầu của mình, bao gồm các tham số vị trí, chúng tôi có thể kiểm tra phản hồi bằng cách sử dụng các chức năng tương tự mà chúng tôi đã sử dụng trước đó. Hãy trích xuất dữ liệu từ phản hồi

library(httr)
library(jsonlite)
3____04

API này trả về thời gian cho chúng tôi dưới dạng thời gian Unix. Thời gian Unix chỉ là khoảng thời gian đã trôi qua kể từ ngày 1 tháng 1 năm 1970. Có nhiều chức năng cho phép chuyển đổi dễ dàng từ Unix sang dạng thời gian quen thuộc — chúng tôi sẽ không đề cập đến việc làm việc với ngày và giờ trong hướng dẫn này, nhưng điều đó được đề cập trong lộ trình học tập tương tác của Nhà phân tích dữ liệu trong R của chúng tôi

Chúng tôi cũng có thể nhanh chóng chuyển đổi thời gian Unix sang định dạng dễ đọc hơn trên các trang web như thế này

Bạn đã có kiến ​​thức cơ bản về API trong R

Trong hướng dẫn này, chúng ta đã tìm hiểu API là gì và cách chúng có thể hữu ích đối với các nhà phân tích dữ liệu và nhà khoa học dữ liệu

Sử dụng các kỹ năng lập trình R của chúng tôi và các thư viện

library(httr)
library(jsonlite)
5 và
library(httr)
library(jsonlite)
6, chúng tôi đã lấy dữ liệu từ API và chuyển đổi nó thành định dạng quen thuộc để phân tích

Chúng tôi chỉ mới bắt đầu làm việc với các API ở đây, nhưng hy vọng rằng phần giới thiệu này đã mang lại cho bạn sự tự tin để xem xét một số API phức tạp và mạnh mẽ hơn, đồng thời giúp mở ra một thế giới dữ liệu hoàn toàn mới để bạn khám phá

Sẵn sàng để tăng cấp kỹ năng R của bạn?

Đường dẫn Nhà phân tích dữ liệu trong R của chúng tôi bao gồm tất cả các kỹ năng bạn cần để có được một công việc, bao gồm

  • Trực quan hóa dữ liệu với ggplot2
  • Kỹ năng làm sạch dữ liệu nâng cao với các gói gọn gàng
  • Các kỹ năng SQL quan trọng cho người dùng R
  • Nguyên tắc cơ bản trong thống kê và xác suất
  • và nhiều hơn nữa

Không có gì để cài đặt, không có điều kiện tiên quyết và không có lịch biểu

Bắt đầu học miễn phí

APIrR hướng dẫnrstatstutorialHướng dẫn

Reddit học javascript 2022

Thông tin về các Tác giả

Christian pascual

Christian hiện đang là sinh viên tại Đại học California San Diego theo đuổi bằng Tiến sĩ về thống kê sinh học