เซสชั่นเขียนโค้ดยามว่าง 5 นาทีสามารถสร้างสิ่งมหัศจรรย์ให้กับนักวิทยาศาสตร์ข้อมูลได้

เจ้าหน้าที่ในนิวยอร์กใช้เวลาส่วนหนึ่งและเงินสาธารณะจำนวนมากในการรวบรวมข้อมูลเกี่ยวกับกระรอก ชุดข้อมูลนี้เรียกว่าข้อมูล NYC Squirrel Census



ชุดข้อมูล

ชุดข้อมูลประกอบด้วยข้อมูลเกี่ยวกับกระรอกแต่ละตัว บางคอลัมน์ก็มี

  • หมวดหมู่อายุ
  • รหัสกระรอก
  • กิจกรรมมันก็ทำ
  • เสียงมันทำให้
  • สีผิว

การเข้าถึงข้อมูล

data_url <- 'https://raw.githubusercontent.com/rfordatascience/tidytuesday/master/data/2019/2019-10-29/nyc_squirrels.csv'
d_raw <- read_csv(data_url)
head(d_raw)

การทำความสะอาดและการกรอง

ลองลบบางคอลัมน์ออกแล้ววิเคราะห์ส่วนที่เหลือ

%›% คือสัญลักษณ์ไปป์และมีคำอธิบายโดยละเอียด ที่นี่

การวางแผน

ตอนนี้เรามาดูข้อมูลสำหรับการวางแผนกันดีกว่า

d_activity <- data %>% 
  # select only identifiers and activities column
  select(c(identifiers, activities)) %>%
  select(-c(other_activities)) %>%
  pivot_longer(-identifiers, names_to = 'Activity', values_to = 'Value') %>%
  # remove all rows with false value
  filter(Value == T)

dataframe ใหม่นี้ดูสะอาดตายิ่งขึ้น

กิจกรรมตามเวลา

มาดูกันว่ากระรอกใช้เวลากลางวันและกลางคืนอย่างไร

p <- ggplot(data = d_activity, aes(x=Activity, fill=shift)) + 
  geom_bar(position = 'dodge') 
print(p)

เราเห็นได้อย่างชัดเจนว่าในช่วงเย็นจะมีการออกหากินและหาอาหารกันมากขึ้น เมื่อเทียบกับกิจกรรมอื่นๆ ที่กระจายกันตลอดทั้งวันอย่างเท่าๆ กัน

จำแนกตามอายุ

มาดูกันว่ากระรอกมีการกระจายตามอายุอย่างไร

p<- ggplot(data = data, aes(x=age, fill=age)) +
    geom_bar(width=1) 
print(p)

เราจะเห็นได้ว่ามีบางรายการที่เป็น NA และบางรายการมีป้ายกำกับว่าเป็นเครื่องหมายคำถาม

การวิเคราะห์เสียง

มาวิเคราะห์เสียงที่สัตว์กระโดดตัวน้อยน่ารักเหล่านี้ทำกัน สังเกตการใช้ pivot (pivot_longer) ในโค้ดด้านล่าง" คำอธิบายรายละเอียด pivot ที่นี่»

# Analysis for the squirrel sounds and human interractions
sound_activity <- data %>%
  select(c(unique_squirrel_id, age,sounds)) %>%
  pivot_longer(-c(unique_squirrel_id, age), names_to = 'Sound',    
    values_to = 'Value') %>%
  drop_na(age) %>%
  filter(Value== TRUE)

dataframe ผลลัพธ์ที่ได้จะมีลักษณะเช่นนี้

ลองวางแผนและดูตัวเราเอง

p <- ggplot(sound_activity, aes(x = age, fill= Sound)) +
     geom_bar(stat = "count")
print(p)

เราจะเห็นได้ว่ากระรอกที่โตเต็มวัยจำนวนมากส่งเสียง กุ๊ก อย่างไรก็ตาม จากข้อมูลดิบ จำนวนกระรอกโตเต็มวัยทั้งหมดสูงกว่ากระรอกวัยรุ่นมาก ข้อมูลนี้ไม่ได้แสดงการเปรียบเทียบอย่างยุติธรรมของเปอร์เซ็นต์ของผู้ใหญ่ที่ส่งเสียงเหล่านี้

เมื่อลงจุดแล้วจะมีลักษณะดังนี้

โปรดทราบว่าเปอร์เซ็นต์ของลูกกระรอกที่ส่งเสียงกุ๊กนั้นสูงกว่า ในขณะที่เสียงควาจะคล้ายกันในแต่ละช่วงอายุ เนื่องจากเสียงควาบ่งบอกว่ามีผู้ล่าอยู่ เราจึงสามารถพูดได้ว่ากระรอกยังคงกลัวผู้ล่าแม้ว่าพวกมันจะอายุมากขึ้นก็ตาม

เสียงตามเวลา

มาดูกันว่าเสียงมีการกระจายไปตามกาลเวลาอย่างไร

เราจะเห็นว่ากุ๊กมีอิทธิพลเหนือจำนวนเสียงทั้งหมด ถึงกระนั้นเสียงควาและเสียงครวญครางก็เกิดขึ้นในช่วงใกล้ค่ำ บ่งบอกถึงอารมณ์ที่เปลี่ยนไปจากขี้เล่นไปเป็นความกลัว

สถานที่ตามเวลา

มาดูกันว่ากระรอกเคลื่อนไหวอย่างไรตามเวลา

เราจะเห็นว่ากระรอกจำนวนมากลงมาที่พื้นเมื่อใกล้ค่ำ อาจเป็นเพราะอาหารมีปริมาณมากขึ้นหรือมีมนุษย์มารบกวนอาหารน้อยลง

สถานที่ตามอายุ

เรามาดูกันว่าสถานที่เปลี่ยนแปลงไปตามอายุอย่างไร

เราพบว่าผู้ใหญ่จำนวนมากอาศัยอยู่บนพื้นมากกว่า สิ่งนี้ดูเป็นธรรมชาติเนื่องจากไม่มีความกลัวมากกว่า

การวิเคราะห์ที่น่าสนใจสุดท้ายคือการดูปฏิสัมพันธ์ระหว่างมนุษย์กับกระรอก

ปฏิสัมพันธ์ของมนุษย์กระรอก

ในจำนวนที่แน่นอน กระรอกสูงวัยมักไม่แยแสกับมนุษย์เป็นส่วนใหญ่ แผนภูมิด้านล่างไม่มีรูปภาพที่เกี่ยวข้องกัน

มาดูพฤติกรรมของกระรอกเมื่อทำให้เป็นมาตรฐานด้วยจำนวนรวมแล้ว

เราจะเห็นได้ว่ากระรอกแก่นั้นจริงๆ แล้วไม่สนใจมนุษย์มากกว่า แต่กระรอกที่มีแนวโน้มเข้าหามนุษย์นั้นมีเปอร์เซ็นต์น้อยกว่าเมื่อเทียบกับกระรอกที่เป็นวัยรุ่น

ขอขอบคุณ Rahul และ satyaprakash pareek ที่ช่วยวิเคราะห์ เพื่อการมอบหมายงานที่สนุกสนานยิ่งขึ้นใน R ให้ทำตาม repo github ที่จัดทำโดย Rahul Nayak



R ทำให้การวิเคราะห์ข้อมูลเป็นเรื่องสนุก เป็นเครื่องมือที่ต้องรู้สำหรับนักวิทยาศาสตร์ข้อมูลมือใหม่