Dự án data science chúng tôi thực hiện. Trong chuỗi dự án R của mình, chúng tôi đang cố gắng sử dụng tất cả các khái niệm liên quan đến machine learning, AI và data science.
Các bài viết liên quan:
Chúng tôi khuyên bạn nên làm theo tất cả các bước được đưa ra trong các dự án để bạn sẽ nhanh chóng làm chủ công nghệ. Trong dự án R hôm nay, chúng ta sẽ phân tích tập dữ liệu Xe bán tải Uber tại Thành phố New York . Đây không chỉ là một dự án trực quan hóa dữ liệu sẽ hướng dẫn bạn sử dụng thư viện ggplot2 để hiểu dữ liệu và phát triển trực giác để hiểu những khách hàng tận dụng các chuyến đi. Vì vậy, trước khi chúng ta bắt đầu, hãy xem xét lại các khái niệm trực quan hóa dữ liệu .
Dự án data science R – Phân tích Dữ liệu Uber
Nói về dự án phân tích dữ liệu Uber của chúng tôi, kể chuyện dữ liệu là một thành phần quan trọng của machine learning mà qua đó các công ty có thể hiểu được nền tảng của các hoạt động khác nhau. Với sự trợ giúp của trực quan, các công ty có thể tận dụng lợi ích của việc hiểu các dữ liệu phức tạp và có được những hiểu biết sâu sắc có thể giúp họ đưa ra các quyết định. Bạn sẽ học cách triển khai ggplot2 trên tập dữ liệu Uber Pickups và cuối cùng, nắm vững nghệ thuật trực quan hóa dữ liệu trong R.
Bạn có thể tải xuống tập dữ liệu được sử dụng trong dự án này tại đây – Tập dữ liệu Uber
Nhập các Gói cần thiết
Trong bước đầu tiên của dự án R của chúng tôi, chúng tôi sẽ nhập các gói thiết yếu mà chúng tôi sẽ sử dụng trong dự án phân tích dữ liệu uber này. Một số thư viện quan trọng của R mà chúng ta sẽ sử dụng là:
- ggplot2
Đây là xương sống của dự án này. ggplot2 là thư viện trực quan hóa dữ liệu phổ biến nhất được sử dụng rộng rãi nhất để tạo các ô hình ảnh hóa thẩm mỹ.
- ggthemes
Đây là một tiện ích bổ sung cho thư viện ggplot2 chính của chúng tôi. Với điều này, chúng tôi có thể tạo các chủ đề và quy mô bổ sung tốt hơn với gói ggplot2 chính thống.
- lubridate
Tập dữ liệu của chúng tôi liên quan đến các khung thời gian khác nhau. Để hiểu dữ liệu của chúng tôi trong các danh mục thời gian riêng biệt, chúng tôi sẽ sử dụng gói lubridate.
- dplyr
Gói này là ngôn ngữ chung của thao tác dữ liệu trong R .
- tidyr
Gói này sẽ giúp bạn sắp xếp dữ liệu của mình. Nguyên tắc cơ bản của sắp xếp gọn gàng là sắp xếp các cột mà mỗi biến có mặt trong một cột, mỗi quan sát được biểu thị bằng một hàng và mỗi giá trị mô tả một ô.
- DT
Với sự trợ giúp của gói này, chúng ta sẽ có thể giao tiếp với Thư viện JavaScript được gọi là – Datatables.
- scales
Với sự trợ giúp của tỷ lệ đồ họa, chúng tôi có thể tự động ánh xạ dữ liệu theo tỷ lệ chính xác với các trục và huyền thoại được đặt đúng vị trí.
library(ggplot2) library(ggthemes) library(lubridate) library(dplyr) library(tidyr) library(DT) library(scales)
Đầu vào Ảnh chụp màn hình 2:
Ảnh chụp màn hình đầu vào 3:
Tạo vectơ màu để thực hiện trong các plots
Trong bước này của dự án data science, chúng tôi sẽ tạo một vectơ có màu sắc của chúng tôi sẽ được đưa vào các hàm vẽ biểu đồ của chúng tôi. Bạn cũng có thể chọn bộ màu của riêng mình.
Mã số:
colors = c(""#CC1011", "#665555", "#05a399", "#cfcaca", "#f5e840", "#0683c9", "#e075b0"")
Đọc Dữ liệu vào các biến được chỉ định của chúng
Bây giờ, chúng tôi sẽ đọc một số tệp csv có chứa dữ liệu từ tháng 4 năm 2014 đến tháng 9 năm 2014. Chúng tôi sẽ lưu trữ chúng trong các khung dữ liệu tương ứng như apr_data, may_data, v.v. Sau khi chúng tôi đọc tệp, chúng tôi sẽ kết hợp tất cả dữ liệu này thành một khung dữ liệu duy nhất được gọi là ‘data_2014’.
Để thành thạo dự án phân tích dữ liệu R Uber này, bạn cần biết mọi thứ liên quan đến khung dữ liệu trong R
Sau đó, trong bước tiếp theo, chúng ta sẽ thực hiện định dạng cột Date.Time phù hợp. Sau đó, chúng ta sẽ tiến hành tạo các yếu tố của đối tượng thời gian như ngày, tháng, năm v.v.
apr_data <- read.csv("uber-raw-data-apr14.csv") may_data <- read.csv("uber-raw-data-may14.csv") jun_data <- read.csv("uber-raw-data-jun14.csv") jul_data <- read.csv("uber-raw-data-jul14.csv") aug_data <- read.csv("uber-raw-data-aug14.csv") sep_data <- read.csv("uber-raw-data-sep14.csv") data_2014 <- rbind(apr_data,may_data, jun_data, jul_data, aug_data, sep_data) data_2014$Date.Time <- as.POSIXct(data_2014$Date.Time, format = "%m/%d/%Y %H:%M:%S") data_2014$Time <- format(as.POSIXct(data_2014$Date.Time, format = "%m/%d/%Y %H:%M:%S"), format="%H:%M:%S") data_2014$Date.Time <- ymd_hms(data_2014$Date.Time) data_2014$day <- factor(day(data_2014$Date.Time)) data_2014$month <- factor(month(data_2014$Date.Time, label = TRUE)) data_2014$year <- factor(year(data_2014$Date.Time)) data_2014$dayofweek <- factor(wday(data_2014$Date.Time, label = TRUE))
Ảnh chụp màn hình đầu vào 5:
data_2014$hour <- factor(hour(hms(data_2014$Time))) data_2014$minute <- factor(minute(hms(data_2014$Time))) data_2014$second <- factor(second(hms(data_2014$Time)))
Lập kế hoạch các chuyến đi theo giờ trong ngày
Trong bước tiếp theo hoặc dự án R, chúng tôi sẽ sử dụng hàm ggplot để vẽ biểu đồ số chuyến đi mà hành khách đã thực hiện trong một ngày. Chúng tôi cũng sẽ sử dụng dplyr để tổng hợp dữ liệu của mình. Trong các hình ảnh kết quả, chúng tôi có thể hiểu được số lượng hành khách giá vé trong ngày như thế nào. Chúng tôi quan sát thấy số lượng chuyến nhiều hơn vào buổi tối khoảng 5 giờ và 6 giờ chiều.
hour_data <- data_2014 %>% group_by(hour) %>% dplyr::summarize(Total = n()) datatable(hour_data)
code:
ggplot(hour_data, aes(hour, Total)) + geom_bar( stat = "identity", fill = "steelblue", color = "red") + ggtitle("Trips Every Hour") + theme(legend.position = "none") + scale_y_continuous(labels = comma) month_hour <- data_2014 %>% group_by(month, hour) %>% dplyr::summarize(Total = n()) ggplot(month_hour, aes(hour, Total, fill = month)) + geom_bar( stat = "identity") + ggtitle("Trips by Hour and Month") + scale_y_continuous(labels = comma)
Đầu ra:
Lập biểu đồ dữ liệu theo các chuyến đi trong mỗi ngày trong tháng
Trong phần này của dự án websitehcm R, chúng ta sẽ học cách vẽ biểu đồ dữ liệu của mình dựa trên mỗi ngày trong tháng. Chúng tôi quan sát từ hình dung kết quả rằng ngày 30 của tháng có số chuyến đi cao nhất trong năm, phần lớn được đóng góp bởi tháng 4.
day_group <- data_2014 %>% group_by(day) %>% dplyr::summarize(Total = n()) datatable(day_group)
Ảnh chụp màn hình đầu ra:
ggplot(day_group, aes(day, Total)) + geom_bar( stat = "identity", fill = "steelblue") + ggtitle("Trips Every Day") + theme(legend.position = "none") + scale_y_continuous(labels = comma)
Đầu ra:
day_month_group <- data_2014 %>% group_by(month, day) %>% dplyr::summarize(Total = n()) ggplot(day_month_group, aes(day, Total, fill = month)) + geom_bar( stat = "identity") + ggtitle("Trips by Day and Month") + scale_y_continuous(labels = comma) + scale_fill_manual(values = colors)
Đầu ra:
Số chuyến đi diễn ra trong các tháng trong năm
Trong phần này, chúng ta sẽ hình dung số lượng chuyến đi diễn ra mỗi tháng trong năm. Trong hình ảnh đầu ra, chúng tôi quan sát thấy rằng hầu hết các chuyến đi được thực hiện trong tháng 9. Hơn nữa, chúng tôi cũng có được các báo cáo trực quan về số lượng chuyến đi đã được thực hiện vào mỗi ngày trong tuần.
month_group <- data_2014 %>% group_by(month) %>% dplyr::summarize(Total = n()) datatable(month_group)
ggplot( , aes(month, Total, fill = month)) + geom_bar( stat = "identity") + ggtitle("Trips by Month") + theme(legend.position = "none") + scale_y_continuous(labels = comma) + scale_fill_manual(values = colors)
Đầu ra:
month_weekday <- data_2014 %>% group_by(month, dayofweek) %>% dplyr::summarize(Total = n()) ggplot(month_weekday, aes(month, Total, fill = dayofweek)) + geom_bar( stat = "identity", position = "dodge") + ggtitle("Trips by Day and Month") + scale_y_continuous(labels = comma) + scale_fill_manual(values = colors)
Đầu ra:
Tìm ra số Chuyến đi theo căn cứ
Trong hình ảnh sau đây, chúng tôi vẽ biểu đồ số chuyến đi mà hành khách đã thực hiện từ mỗi căn cứ. Có năm căn cứ trong số đó, chúng tôi quan sát thấy rằng B02617 có số chuyến đi nhiều nhất. Hơn nữa, căn cứ này có số chuyến cao nhất trong tháng B02617. Thứ Năm quan sát thấy các chuyến đi cao nhất trong ba căn cứ – B02598, B02617, B02682.
ggplot(data_2014, aes(Base)) + geom_bar(fill = "darkred") + scale_y_continuous(labels = comma) + ggtitle("Trips by Bases")
Đầu ra:
ggplot(data_2014, aes(Base, fill = month)) + geom_bar(position = "dodge") + scale_y_continuous(labels = comma) + ggtitle("Trips by Bases and Month") + scale_fill_manual(values = colors)
Đầu ra:
ggplot(data_2014, aes(Base, fill = dayofweek)) + geom_bar(position = "dodge") + scale_y_continuous(labels = comma) + ggtitle("Trips by Bases and DayofWeek") + scale_fill_manual(values = colors)
Tạo hình ảnh trực quan về Bản đồ nhiệt của ngày, giờ và tháng
Trong phần này, chúng ta sẽ học cách vẽ bản đồ nhiệt bằng ggplot (). Chúng tôi sẽ vẽ năm biểu đồ nhiệt bản đồ –
- Đầu tiên, chúng ta sẽ vẽ Heatmap bởi Hour và ngày.
- Thứ hai, chúng tôi sẽ vẽ Sơ đồ nhiệt theo Tháng và Ngày.
- Thứ ba, một bản đồ nhiệt theo tháng và ngày trong tuần.
- Thứ tư, Bản đồ nhiệt mô tả Tháng và Căn cứ.
- Cuối cùng, chúng tôi sẽ vẽ bản đồ nhiệt, theo cơ sở và ngày trong tuần.
day_and_hour <- data_2014 %>% group_by(day, hour) %>% dplyr::summarize(Total = n()) datatable(day_and_hour)
Ảnh chụp màn hình đầu ra:
ggplot(day_and_hour, aes(day, hour, fill = Total)) + geom_tile(color = "white") + ggtitle("Heat Map by Hour and Day")
Đầu ra:
ggplot(day_month_group, aes(day, month, fill = Total)) + geom_tile(color = "white") + ggtitle("Heat Map by Month and Day")
Đầu ra:
ggplot(month_weekday, aes(dayofweek, month, fill = Total)) + geom_tile(color = "white") + ggtitle("Heat Map by Month and Day of Week")
Đầu ra:
month_base <- data_2014 %>% group_by(Base, month) %>% dplyr::summarize(Total = n()) day0fweek_bases <- data_2014 %>% group_by(Base, dayofweek) %>% dplyr::summarize(Total = n()) ggplot(month_base, aes(Base, month, fill = Total)) + geom_tile(color = "white") + ggtitle("Heat Map by Month and Bases")
Đầu ra:
ggplot(day0fweek_bases, aes(Base, dayofweek, fill = Total)) + geom_tile(color = "white") + ggtitle("Heat Map by Bases and Day of Week")
Đầu ra:
Tạo bản đồ trực quan hóa các chuyến đi ở New York
Trong phần cuối cùng, chúng tôi sẽ hình dung các chuyến đi ở thành phố New York bằng cách tạo một sơ đồ địa lý sẽ giúp chúng tôi hình dung các chuyến đi trong năm 2014 (tháng 4 – tháng 9) và bởi các căn cứ trong cùng thời gian.
min_lat <- 40.5774 max_lat <- 40.9176 min_long <- -74.15 max_long <- -73.7004 ggplot(data_2014, aes(x=Lon, y=Lat)) + geom_point(size=1, color = "blue") + scale_x_continuous(limits=c(min_long, max_long)) + scale_y_continuous(limits=c(min_lat, max_lat)) + theme_map() + ggtitle("NYC MAP BASED ON UBER RIDES DURING 2014 (APR-SEP)") ggplot(data_2014, aes(x=Lon, y=Lat, color = Base)) + geom_point(size=1) + scale_x_continuous(limits=c(min_long, max_long)) + scale_y_continuous(limits=c(min_lat, max_lat)) + theme_map() + ggtitle("NYC MAP BASED ON UBER RIDES DURING 2014 (APR-SEP) by BASE")
Đầu ra:
Đầu ra:
Bản tóm tắt
Vào cuối dự án R phân tích dữ liệu Uber, chúng tôi đã quan sát cách tạo trực quan hóa dữ liệu. Chúng tôi đã sử dụng các gói như ggplot2 cho phép chúng tôi vẽ các loại hình ảnh trực quan khác nhau liên quan đến một số khung thời gian trong năm. Với điều này, chúng tôi có thể kết luận thời gian ảnh hưởng đến các chuyến đi của khách hàng như thế nào. Cuối cùng, chúng tôi thực hiện một sơ đồ địa lý của New York cung cấp cho chúng tôi thông tin chi tiết về cách nhiều người dùng thực hiện các chuyến đi từ các căn cứ khác nhau.