ด้วยการค้นหา R หรือ Python บนอินเทอร์เน็ต คุณจะพบบทความหลายล้านบทความและการอภิปรายหลายกิโลเมตรในหัวข้อใดดีกว่า เร็วกว่า และสะดวกกว่าในการทำงานกับข้อมูล แต่น่าเสียดายที่บทความและข้อโต้แย้งเหล่านี้ไม่มีประโยชน์อย่างยิ่ง
วัตถุประสงค์ของบทความนี้คือเพื่อเปรียบเทียบเทคนิคการประมวลผลข้อมูลขั้นพื้นฐานในแพ็คเกจยอดนิยมของทั้งสองภาษา และช่วยให้ผู้อ่านเข้าใจสิ่งที่พวกเขายังไม่รู้ได้อย่างรวดเร็ว สำหรับผู้ที่เขียนด้วย Python โปรดดูวิธีทำสิ่งเดียวกันใน R และในทางกลับกัน
ในระหว่างบทความนี้ เราจะวิเคราะห์ไวยากรณ์ของแพ็คเกจยอดนิยมใน R เหล่านี้คือแพ็คเกจที่รวมอยู่ในไลบรารี tidyverse
และก็แพ็คเกจด้วย data.table
. และเปรียบเทียบไวยากรณ์ด้วย pandas
แพ็คเกจวิเคราะห์ข้อมูลยอดนิยมใน Python
เราจะดำเนินการทีละขั้นตอนผ่านเส้นทางการวิเคราะห์ข้อมูลทั้งหมด ตั้งแต่การโหลดไปจนถึงการดำเนินการฟังก์ชันหน้าต่างการวิเคราะห์โดยใช้ Python และ R
Содержание
บทความนี้สามารถใช้เป็นเอกสารสรุปได้หากคุณลืมวิธีดำเนินการประมวลผลข้อมูลในแพ็คเกจใดแพ็คเกจหนึ่งที่อยู่ระหว่างการพิจารณา
ความแตกต่างทางไวยากรณ์หลักระหว่าง R และ Python
1.1.การเข้าถึงฟังก์ชั่นแพ็คเกจ
1.2.งานที่มอบหมาย
1.3.การจัดทำดัชนี
1.4.วิธีการและ OOP
1.5.ไปป์ไลน์
1.6.โครงสร้างข้อมูล คำสองสามคำเกี่ยวกับแพ็คเกจที่เราจะใช้
2.1.เรียบร้อย
2.2.ตารางข้อมูล
2.3.หมีแพนด้า กำลังติดตั้งแพ็คเกจ กำลังโหลดข้อมูล การสร้างดาต้าเฟรม การเลือกคอลัมน์ที่คุณต้องการ การกรองแถว การจัดกลุ่มและการรวมกลุ่ม ยูเนี่ยนตารางแนวตั้ง (UNION) การรวมตารางแนวนอน (JOIN) ฟังก์ชันหน้าต่างพื้นฐานและคอลัมน์จากการคำนวณ ตารางความสัมพันธ์ระหว่างวิธีการประมวลผลข้อมูลใน R และ Python ข้อสรุป แบบสำรวจสั้นๆ เกี่ยวกับแพ็คเกจที่คุณใช้
หากคุณสนใจในการวิเคราะห์ข้อมูล คุณอาจพบ my
ความแตกต่างทางไวยากรณ์หลักระหว่าง R และ Python
เพื่อให้ง่ายต่อการเปลี่ยนจาก Python เป็น R หรือกลับกัน ฉันจะให้ประเด็นหลักสองสามข้อที่คุณต้องใส่ใจ
การเข้าถึงฟังก์ชั่นแพ็คเกจ
เมื่อโหลดแพ็กเกจลงใน R แล้ว คุณไม่จำเป็นต้องระบุชื่อแพ็กเกจเพื่อเข้าถึงฟังก์ชันต่างๆ ในกรณีส่วนใหญ่ สิ่งนี้ไม่เป็นเรื่องปกติใน R แต่ก็สามารถยอมรับได้ คุณไม่จำเป็นต้องนำเข้าแพ็คเกจเลยหากคุณต้องการฟังก์ชันอย่างใดอย่างหนึ่งในโค้ดของคุณ แต่เพียงแค่เรียกมันโดยระบุชื่อของแพ็คเกจและชื่อของฟังก์ชัน ตัวคั่นระหว่างชื่อแพ็คเกจและฟังก์ชันใน R คือทวิภาคคู่ package_name::function_name()
.
ในทางกลับกัน ใน Python การเรียกใช้ฟังก์ชันของแพ็กเกจโดยการระบุชื่ออย่างชัดเจนถือเป็นคลาสสิก เมื่อดาวน์โหลดแพ็คเกจ โดยปกติแล้วจะมีการตั้งชื่อให้สั้นลง เช่น pandas
โดยปกติจะใช้นามแฝง pd
. ฟังก์ชันแพ็คเกจเข้าถึงได้ผ่านจุด package_name.function_name()
.
งานที่มอบหมาย
ใน R เป็นเรื่องปกติที่จะใช้ลูกศรเพื่อกำหนดค่าให้กับวัตถุ obj_name <- value
แม้ว่าจะอนุญาตให้ใช้เครื่องหมายเท่ากับเพียงเครื่องหมายเดียว แต่เครื่องหมายเท่ากับใน R ใช้เพื่อส่งผ่านค่าไปยังอาร์กิวเมนต์ของฟังก์ชันเป็นหลัก
ใน Python การมอบหมายงานทำได้โดยใช้เครื่องหมายเท่ากับเพียงอันเดียว obj_name = value
.
การจัดทำดัชนี
นอกจากนี้ยังมีความแตกต่างที่สำคัญมากที่นี่ ใน R การจัดทำดัชนีเริ่มต้นที่หนึ่งและรวมองค์ประกอบที่ระบุทั้งหมดในช่วงผลลัพธ์
ใน Python การทำดัชนีเริ่มต้นจากศูนย์และช่วงที่เลือกจะไม่รวมองค์ประกอบสุดท้ายที่ระบุในดัชนี ดังนั้นการออกแบบ x[i:j]
ใน Python จะไม่รวมองค์ประกอบ j
นอกจากนี้ยังมีความแตกต่างในการจัดทำดัชนีเชิงลบในรูปแบบ R x[-1]
จะส่งกลับองค์ประกอบทั้งหมดของเวกเตอร์ ยกเว้นองค์ประกอบสุดท้าย ใน Python สัญกรณ์ที่คล้ายกันจะส่งกลับเฉพาะองค์ประกอบสุดท้ายเท่านั้น
วิธีการและ OOP
R ใช้ OOP ในแบบของตัวเอง ฉันเขียนเกี่ยวกับสิ่งนี้ในบทความ tydiverse
มันจะง่ายกว่า pandas
. แม้ว่านี่อาจเป็นความเห็นส่วนตัวของฉัน
กล่าวโดยสรุป วัตถุใน R ไม่มีวิธีการ (ถ้าเราพูดถึงคลาส S3 แต่มีการใช้งาน OOP อื่น ๆ ที่พบได้น้อยกว่ามาก) มีเพียงฟังก์ชันทั่วไปเท่านั้นที่ประมวลผลต่างกันขึ้นอยู่กับคลาสของอ็อบเจ็กต์
ไปป์ไลน์
บางทีนี่อาจเป็นชื่อสำหรับ pandas
มันจะไม่ถูกต้องทั้งหมด แต่ฉันจะพยายามอธิบายความหมาย
เพื่อไม่ให้บันทึกการคำนวณระดับกลางและไม่สร้างวัตถุที่ไม่จำเป็นในสภาพแวดล้อมการทำงานคุณสามารถใช้ไปป์ไลน์ชนิดหนึ่งได้ เหล่านั้น. ส่งผลการคำนวณจากฟังก์ชันหนึ่งไปยังฟังก์ชันถัดไป และไม่บันทึกผลลัพธ์ระดับกลาง
ลองใช้ตัวอย่างโค้ดต่อไปนี้ โดยที่เราจัดเก็บการคำนวณขั้นกลางไว้ในออบเจ็กต์ที่แยกจากกัน:
temp_object <- func1()
temp_object2 <- func2(temp_object )
obj <- func3(temp_object2 )
เราทำการดำเนินการ 3 ครั้งตามลำดับ และผลลัพธ์ของการดำเนินการแต่ละรายการจะถูกบันทึกไว้ในออบเจ็กต์ที่แยกจากกัน แต่จริงๆ แล้ว เราไม่ต้องการวัตถุตัวกลางเหล่านี้
หรือแย่กว่านั้น แต่ผู้ใช้ Excel คุ้นเคยมากกว่า
obj <- func3(func2(func1()))
ในกรณีนี้ เราไม่ได้บันทึกผลการคำนวณขั้นกลาง แต่การอ่านโค้ดที่มีฟังก์ชันซ้อนกันนั้นไม่สะดวกอย่างยิ่ง
เราจะดูหลายวิธีในการประมวลผลข้อมูลใน R และดำเนินการที่คล้ายกันในวิธีที่ต่างกัน
ท่อส่งในห้องสมุด tidyverse
ดำเนินการโดยผู้ปฏิบัติงาน %>%
.
obj <- func1() %>%
func2() %>%
func3()
ดังนั้นเราจึงนำผลงานมา func1()
และส่งต่อเป็นอาร์กิวเมนต์แรกให้ func2()
จากนั้นเราจะส่งผลลัพธ์ของการคำนวณนี้เป็นอาร์กิวเมนต์แรก func3()
. และท้ายที่สุด เราก็เขียนการคำนวณทั้งหมดที่ทำลงในวัตถุ obj <-
.
ทั้งหมดข้างต้นแสดงให้เห็นได้ดีกว่าคำพูดจากมีมนี้:
В data.table
โซ่ก็ใช้ในลักษณะเดียวกัน
newDT <- DT[where, select|update|do, by][where, select|update|do, by][where, select|update|do, by]
ในวงเล็บเหลี่ยมแต่ละอัน คุณสามารถใช้ผลลัพธ์ของการดำเนินการก่อนหน้าได้
В pandas
การดำเนินการดังกล่าวจะถูกคั่นด้วยจุด
obj = df.fun1().fun2().fun3()
เหล่านั้น. เรายึดโต๊ะของเรา df และใช้วิธีของเธอ fun1()
จากนั้นเราจะใช้วิธีการกับผลลัพธ์ที่ได้รับ fun2()
หลังจาก fun3()
. ผลลัพธ์ที่ได้จะถูกบันทึกลงในออบเจ็กต์ obj .
โครงสร้างข้อมูล
โครงสร้างข้อมูลใน R และ Python คล้ายกัน แต่มีชื่อต่างกัน
ลักษณะ
ชื่อในร
ชื่อในภาษา Python/pandas
โครงสร้างตาราง
data.frame, data.table, tibble
ดาต้าเฟรม
รายการค่ามิติเดียว
เวกเตอร์
ซีรีส์ในรูปแบบแพนด้าหรือรายการใน Python ล้วนๆ
โครงสร้างที่ไม่ใช่ตารางหลายระดับ
รายการ
พจนานุกรม (ดิก)
เราจะดูคุณสมบัติและความแตกต่างอื่นๆ ในด้านไวยากรณ์ด้านล่างนี้
คำสองสามคำเกี่ยวกับแพ็คเกจที่เราจะใช้
ก่อนอื่น ฉันจะบอกคุณเล็กน้อยเกี่ยวกับแพ็คเกจที่คุณจะคุ้นเคยในบทความนี้
เรียบร้อย
เว็บไซต์อย่างเป็นทางการ:
ห้องสมุด tidyverse
เขียนโดย Hedley Wickham นักวิทยาศาสตร์วิจัยอาวุโสของ RStudio tidyverse
ประกอบด้วยชุดแพ็คเกจที่น่าประทับใจที่ทำให้การประมวลผลข้อมูลง่ายขึ้น โดย 5 รายการรวมอยู่ในการดาวน์โหลด 10 อันดับแรกจากที่เก็บ CRAN
แกนกลางของไลบรารีประกอบด้วยแพ็คเกจดังต่อไปนี้: ggplot2
, dplyr
, tidyr
, readr
, purrr
, tibble
, stringr
, forcats
. แต่ละแพ็คเกจเหล่านี้มีวัตถุประสงค์เพื่อแก้ไขปัญหาเฉพาะ ตัวอย่างเช่น dplyr
สร้างขึ้นเพื่อการจัดการข้อมูล tidyr
เพื่อนำข้อมูลมาอยู่ในรูปแบบที่เรียบร้อย stringr
ช่วยลดความยุ่งยากในการทำงานกับสตริงและ ggplot2
เป็นหนึ่งในเครื่องมือสร้างภาพข้อมูลที่ได้รับความนิยมมากที่สุด
ความได้เปรียบ tidyverse
คือความเรียบง่ายและไวยากรณ์ที่อ่านง่าย ซึ่งคล้ายกับภาษาคิวรี SQL ในหลายๆ ด้าน
ตารางข้อมูล
โดยผู้เขียน data.table
คือ Matt Dole จาก H2O.ai
ห้องสมุดเปิดตัวครั้งแรกเกิดขึ้นในปี พ.ศ. 2006
ไวยากรณ์ของแพ็คเกจไม่สะดวกเท่ากับใน tidyverse
และชวนให้นึกถึงดาต้าเฟรมแบบคลาสสิกใน R มากขึ้น แต่ในขณะเดียวกันก็ขยายฟังก์ชันการทำงานอย่างมีนัยสำคัญ
การจัดการทั้งหมดกับตารางในแพ็คเกจนี้จะอธิบายไว้ในวงเล็บเหลี่ยมและหากคุณแปลไวยากรณ์ data.table
ใน SQL คุณจะได้รับสิ่งนี้: data.table[ WHERE, SELECT, GROUP BY ]
จุดแข็งของแพ็คเกจนี้คือความเร็วในการประมวลผลข้อมูลจำนวนมาก
หมีแพนด้า
เว็บไซต์อย่างเป็นทางการ:
ชื่อของห้องสมุดมาจากคำว่า "ข้อมูลแผง" ทางเศรษฐมิติ ซึ่งใช้เพื่ออธิบายชุดข้อมูลที่มีโครงสร้างหลายมิติ
โดยผู้เขียน pandas
คืออเมริกัน เวส แมคคินนีย์
เมื่อพูดถึงการวิเคราะห์ข้อมูลใน Python ก็เท่าเทียมกัน pandas
เลขที่ แพ็คเกจระดับสูงแบบมัลติฟังก์ชั่นที่ช่วยให้คุณดำเนินการจัดการข้อมูลตั้งแต่การโหลดข้อมูลจากแหล่งใด ๆ ไปจนถึงการแสดงภาพ
การติดตั้งแพ็คเกจเพิ่มเติม
แพ็คเกจที่กล่าวถึงในบทความนี้ไม่รวมอยู่ในการแจกแจง R และ Python พื้นฐาน แม้ว่าจะมีข้อแม้เล็กน้อย แต่ถ้าคุณได้ติดตั้งการกระจายของ Anaconda แล้ว ให้ติดตั้งเพิ่มเติม pandas
ไม่จำเป็น
การติดตั้งแพ็คเกจใน R
หากคุณเปิดสภาพแวดล้อมการพัฒนา RStudio อย่างน้อยหนึ่งครั้ง คุณอาจรู้วิธีติดตั้งแพ็คเกจที่จำเป็นใน R อยู่แล้ว หากต้องการติดตั้งแพ็คเกจ ให้ใช้คำสั่งมาตรฐาน install.packages()
โดยการรันโดยตรงใน R เอง
# установка пакетов
install.packages("vroom")
install.packages("readr")
install.packages("dplyr")
install.packages("data.table")
หลังการติดตั้ง จำเป็นต้องเชื่อมต่อแพ็คเกจ ซึ่งโดยส่วนใหญ่จะใช้คำสั่ง library()
.
# подключение или импорт пакетов в рабочее окружение
library(vroom)
library(readr)
library(dplyr)
library(data.table)
การติดตั้งแพ็คเกจใน Python
ดังนั้นหากคุณติดตั้ง Python บริสุทธิ์ไว้แล้ว pandas
คุณต้องติดตั้งด้วยตนเอง เปิดบรรทัดคำสั่งหรือเทอร์มินัล ขึ้นอยู่กับระบบปฏิบัติการของคุณ และป้อนคำสั่งต่อไปนี้
pip install pandas
จากนั้นเรากลับไปที่ Python และนำเข้าแพ็คเกจที่ติดตั้งด้วยคำสั่ง import
.
import pandas as pd
กำลังโหลดข้อมูล
การทำเหมืองข้อมูลเป็นหนึ่งในขั้นตอนที่สำคัญที่สุดในการวิเคราะห์ข้อมูล หากต้องการ ทั้ง Python และ R จะทำให้คุณมีโอกาสมากมายในการรับข้อมูลจากแหล่งต่างๆ เช่น ไฟล์ในเครื่อง ไฟล์จากอินเทอร์เน็ต เว็บไซต์ และฐานข้อมูลทุกประเภท
ตลอดทั้งบทความเราจะใช้ชุดข้อมูลหลายชุด:
- ดาวน์โหลดสองครั้งจาก Google Analytics
- ชุดข้อมูลผู้โดยสารไททานิค
ข้อมูลทั้งหมดอยู่ในของฉัน
กำลังโหลดข้อมูลลงใน R: tidyverse, vroom, readr
เพื่อโหลดข้อมูลเข้าห้องสมุด tidyverse
มีสองแพ็คเกจ: vroom
, readr
. vroom
ทันสมัยมากขึ้นแต่ในอนาคตอาจมีการรวมแพ็คเกจเข้าด้วยกัน
อ้างจาก vroom
.
vroom กับ เครื่องอ่าน
ปล่อยของอะไร.vroom
หมายถึงสำหรับreadr
? สำหรับตอนนี้เราวางแผนที่จะให้ทั้งสองแพ็คเกจพัฒนาแยกกัน แต่มีแนวโน้มว่าเราจะรวมแพ็คเกจเข้าด้วยกันในอนาคต ข้อเสียอย่างหนึ่งของการอ่านแบบขี้เกียจของ vroom คือปัญหาข้อมูลบางอย่างไม่สามารถรายงานล่วงหน้าได้ ดังนั้นวิธีที่ดีที่สุดในการรวมปัญหาเหล่านี้เข้าด้วยกันต้องอาศัยการพิจารณาอย่างรอบคอบvroom กับ reader
การปล่อยหมายถึงอะไร?vroom
สำหรับreadr
? ในขณะนี้เราวางแผนที่จะพัฒนาทั้งสองแพ็คเกจแยกกัน แต่อาจจะรวมเข้าด้วยกันในอนาคต ข้อเสียอย่างหนึ่งของการอ่านหนังสือแบบขี้เกียจvroom
คือปัญหาบางอย่างเกี่ยวกับข้อมูลไม่สามารถรายงานล่วงหน้าได้ ดังนั้นคุณต้องคิดถึงวิธีที่ดีที่สุดในการรวมเข้าด้วยกัน
ในบทความนี้เราจะดูแพ็คเกจการโหลดข้อมูลทั้งสองแบบ:
กำลังโหลดข้อมูลลงในแพ็คเกจ R: vroom
# install.packages("vroom")
library(vroom)
# Чтение данных
## vroom
ga_nov <- vroom("https://raw.githubusercontent.com/selesnow/publications/master/data_example/r_python_data/ga_nowember.csv")
ga_dec <- vroom("https://raw.githubusercontent.com/selesnow/publications/master/data_example/r_python_data/ga_december.csv")
titanic <- vroom("https://raw.githubusercontent.com/selesnow/publications/master/data_example/r_python_data/titanic.csv")
กำลังโหลดข้อมูลลงใน R: reader
# install.packages("readr")
library(readr)
# Чтение данных
## readr
ga_nov <- read_tsv("https://raw.githubusercontent.com/selesnow/publications/master/data_example/r_python_data/ga_nowember.csv")
ga_dec <- read_tsv("https://raw.githubusercontent.com/selesnow/publications/master/data_example/r_python_data/ga_december.csv")
titanic <- read_csv("https://raw.githubusercontent.com/selesnow/publications/master/data_example/r_python_data/titanic.csv")
ในแพ็คเกจ vroom
โดยไม่คำนึงถึงรูปแบบข้อมูล csv / tsv การโหลดจะดำเนินการโดยฟังก์ชันที่มีชื่อเดียวกัน vroom()
, ในแพ็คเกจ readr
เราใช้ฟังก์ชันที่แตกต่างกันสำหรับแต่ละรูปแบบ read_tsv()
и read_csv()
.
กำลังโหลดข้อมูลลงใน R: data.table
В data.table
มีฟังก์ชั่นสำหรับโหลดข้อมูล fread()
.
กำลังโหลดข้อมูลลงในแพ็คเกจ R: data.table
# install.packages("data.table")
library(data.table)
## data.table
ga_nov <- fread("https://raw.githubusercontent.com/selesnow/publications/master/data_example/r_python_data/ga_nowember.csv")
ga_dec <- fread("https://raw.githubusercontent.com/selesnow/publications/master/data_example/r_python_data/ga_december.csv")
titanic <- fread("https://raw.githubusercontent.com/selesnow/publications/master/data_example/r_python_data/titanic.csv")
กำลังโหลดข้อมูลใน Python: pandas
หากเราเปรียบเทียบกับแพ็คเกจ R ในกรณีนี้ไวยากรณ์จะใกล้เคียงที่สุด pandas
จะ readr
, เพราะ pandas
สามารถขอข้อมูลจากที่ไหนก็ได้และมีฟังก์ชั่นครบชุดในแพ็คเกจนี้ read_*()
.
read_csv()
read_excel()
read_sql()
read_json()
read_html()
และฟังก์ชันอื่นๆ อีกมากมายที่ออกแบบมาเพื่ออ่านข้อมูลจากรูปแบบต่างๆ แต่สำหรับจุดประสงค์ของเราก็เพียงพอแล้ว read_table()
หรือ read_csv()
ใช้อาร์กิวเมนต์ กันยายน เพื่อระบุตัวคั่นคอลัมน์
กำลังโหลดข้อมูลใน Python: pandas
import pandas as pd
ga_nov = pd.read_csv("https://raw.githubusercontent.com/selesnow/publications/master/data_example/russian_text_in_r/ga_nowember.csv", sep = "t")
ga_dec = pd.read_csv("https://raw.githubusercontent.com/selesnow/publications/master/data_example/russian_text_in_r/ga_december.csv", sep = "t")
titanic = pd.read_csv("https://raw.githubusercontent.com/selesnow/publications/master/data_example/russian_text_in_r/titanic.csv")
การสร้างดาต้าเฟรม
ตาราง มหึมาที่เราโหลดมาก็มีสนาม เพศซึ่งจัดเก็บตัวระบุเพศของผู้โดยสาร
แต่เพื่อความสะดวกในการนำเสนอข้อมูลในแง่ของเพศของผู้โดยสาร คุณควรใช้ชื่อแทนรหัสเพศ
ในการดำเนินการนี้ เราจะสร้างไดเร็กทอรีขนาดเล็ก ซึ่งเป็นตารางที่จะมีเพียง 2 คอลัมน์ (รหัสและชื่อเพศ) และ 2 แถวตามลำดับ
การสร้างดาต้าเฟรมใน R: tidyverse, dplyr
ในตัวอย่างโค้ดด้านล่าง เราสร้าง dataframe ที่ต้องการโดยใช้ฟังก์ชัน tibble()
.
การสร้างดาต้าเฟรมใน R: dplyr
## dplyr
### создаём справочник
gender <- tibble(id = c(1, 2),
gender = c("female", "male"))
การสร้างดาต้าเฟรมใน R: data.table
การสร้างดาต้าเฟรมใน R: data.table
## data.table
### создаём справочник
gender <- data.table(id = c(1, 2),
gender = c("female", "male"))
การสร้างดาต้าเฟรมใน Python: pandas
В pandas
การสร้างเฟรมนั้นดำเนินการในหลายขั้นตอน ขั้นแรกเราจะสร้างพจนานุกรม จากนั้นเราจะแปลงพจนานุกรมให้เป็นดาต้าเฟรม
การสร้างดาต้าเฟรมใน Python: pandas
# создаём дата фрейм
gender_dict = {'id': [1, 2],
'gender': ["female", "male"]}
# преобразуем словарь в датафрейм
gender = pd.DataFrame.from_dict(gender_dict)
การเลือกคอลัมน์
ตารางที่คุณทำงานด้วยอาจมีข้อมูลหลายสิบหรือหลายร้อยคอลัมน์ แต่ตามกฎแล้วเพื่อดำเนินการวิเคราะห์ คุณไม่จำเป็นต้องมีคอลัมน์ทั้งหมดที่มีอยู่ในตารางต้นฉบับ
ดังนั้นหนึ่งในการดำเนินการแรกๆ ที่คุณจะดำเนินการกับตารางต้นฉบับคือการล้างข้อมูลที่ไม่จำเป็นและเพิ่มหน่วยความจำที่ข้อมูลนี้ครอบครอง
การเลือกคอลัมน์ใน R: tidyverse, dplyr
วากยสัมพันธ์ dplyr
คล้ายกับภาษาคิวรี SQL มาก หากคุณคุ้นเคย คุณจะเชี่ยวชาญแพ็คเกจนี้ได้อย่างรวดเร็ว
หากต้องการเลือกคอลัมน์ ให้ใช้ฟังก์ชัน select()
.
ด้านล่างนี้เป็นตัวอย่างของโค้ดที่คุณสามารถเลือกคอลัมน์ได้ด้วยวิธีต่อไปนี้:
- แสดงรายการชื่อของคอลัมน์ที่ต้องการ
- อ้างถึงชื่อคอลัมน์โดยใช้นิพจน์ทั่วไป
- ตามประเภทข้อมูลหรือคุณสมบัติอื่นใดของข้อมูลที่มีอยู่ในคอลัมน์
การเลือกคอลัมน์ใน R: dplyr
# Выбор нужных столбцов
## dplyr
### выбрать по названию столбцов
select(ga_nov, date, source, sessions)
### исключь по названию столбцов
select(ga_nov, -medium, -bounces)
### выбрать по регулярному выражению, стобцы имена которых заканчиваются на s
select(ga_nov, matches("s$"))
### выбрать по условию, выбираем только целочисленные столбцы
select_if(ga_nov, is.integer)
การเลือกคอลัมน์ใน R: data.table
การดำเนินงานเดียวกันใน data.table
มีการดำเนินการแตกต่างออกไปเล็กน้อย ในตอนต้นของบทความ ฉันได้ให้คำอธิบายว่าอาร์กิวเมนต์ใดอยู่ในวงเล็บเหลี่ยม data.table
.
DT[i,j,by]
ที่ไหน:
ฉัน - ที่ไหนเช่น กรองตามแถว
j - เลือก|อัปเดต|ทำ เช่น การเลือกคอลัมน์และการแปลง
โดย - การจัดกลุ่มข้อมูล
การเลือกคอลัมน์ใน R: data.table
## data.table
### выбрать по названию столбцов
ga_nov[ , .(date, source, sessions) ]
### исключь по названию столбцов
ga_nov[ , .SD, .SDcols = ! names(ga_nov) %like% "medium|bounces" ]
### выбрать по регулярному выражению
ga_nov[, .SD, .SDcols = patterns("s$")]
ตัวแปร .SD
ช่วยให้คุณเข้าถึงทุกคอลัมน์และ .SDcols
กรองคอลัมน์ที่ต้องการโดยใช้นิพจน์ทั่วไปหรือฟังก์ชันอื่นๆ เพื่อกรองชื่อคอลัมน์ที่คุณต้องการ
การเลือกคอลัมน์ใน Python, pandas
เพื่อเลือกคอลัมน์ตามชื่อใน pandas
แค่ระบุรายชื่อก็พอแล้ว และหากต้องการเลือกหรือแยกคอลัมน์ตามชื่อโดยใช้นิพจน์ทั่วไป คุณต้องใช้ฟังก์ชันต่างๆ drop()
и filter()
และการโต้แย้ง แกน = 1ซึ่งคุณระบุว่าจำเป็นต้องประมวลผลคอลัมน์แทนที่จะเป็นแถว
หากต้องการเลือกฟิลด์ตามประเภทข้อมูล ให้ใช้ฟังก์ชัน select_dtypes()
และเข้าสู่การโต้แย้ง ประกอบด้วย หรือ ไม่รวม ส่งรายการประเภทข้อมูลที่สอดคล้องกับฟิลด์ที่คุณต้องการเลือก
การเลือกคอลัมน์ใน Python: pandas
# Выбор полей по названию
ga_nov[['date', 'source', 'sessions']]
# Исключить по названию
ga_nov.drop(['medium', 'bounces'], axis=1)
# Выбрать по регулярному выражению
ga_nov.filter(regex="s$", axis=1)
# Выбрать числовые поля
ga_nov.select_dtypes(include=['number'])
# Выбрать текстовые поля
ga_nov.select_dtypes(include=['object'])
การกรองแถว
ตัวอย่างเช่น ตารางต้นฉบับอาจมีข้อมูลหลายปี แต่คุณจะต้องวิเคราะห์เฉพาะเดือนที่แล้วเท่านั้น อีกครั้งที่บรรทัดเพิ่มเติมจะทำให้กระบวนการประมวลผลข้อมูลช้าลงและทำให้หน่วยความจำพีซีอุดตัน
การกรองแถวใน R: tydyverse, dplyr
В dplyr
ฟังก์ชันนี้ใช้เพื่อกรองแถว filter()
. โดยจะใช้ dataframe เป็นอาร์กิวเมนต์แรก จากนั้นคุณจึงแสดงรายการเงื่อนไขการกรอง
เมื่อเขียนนิพจน์เชิงตรรกะเพื่อกรองตาราง ในกรณีนี้ ให้ระบุชื่อคอลัมน์โดยไม่ต้องใส่เครื่องหมายคำพูดและไม่ประกาศชื่อตาราง
เมื่อใช้นิพจน์เชิงตรรกะหลายรายการในการกรอง ให้ใช้ตัวดำเนินการต่อไปนี้:
- & หรือลูกน้ำ - ตรรกะ AND
- | - ตรรกะหรือ
การกรองแถวใน R: dplyr
# фильтрация строк
## dplyr
### фильтрация строк по одному условию
filter(ga_nov, source == "google")
### фильтр по двум условиям соединённым логическим и
filter(ga_nov, source == "google" & sessions >= 10)
### фильтр по двум условиям соединённым логическим или
filter(ga_nov, source == "google" | sessions >= 10)
การกรองแถวใน R: data.table
อย่างที่ฉันเขียนไว้ข้างต้นแล้วใน data.table
ไวยากรณ์การแปลงข้อมูลอยู่ในวงเล็บเหลี่ยม
DT[i,j,by]
ที่ไหน:
ฉัน - ที่ไหนเช่น กรองตามแถว
j - เลือก|อัปเดต|ทำ เช่น การเลือกคอลัมน์และการแปลง
โดย - การจัดกลุ่มข้อมูล
อาร์กิวเมนต์นี้ใช้เพื่อกรองแถว iซึ่งมีตำแหน่งแรกในวงเล็บเหลี่ยม
เข้าถึงคอลัมน์ได้โดยใช้นิพจน์เชิงตรรกะโดยไม่มีเครื่องหมายคำพูดและไม่ต้องระบุชื่อตาราง
นิพจน์เชิงตรรกะมีความสัมพันธ์กันในลักษณะเดียวกับใน dplyr
ผ่านตัวดำเนินการ & และ |
การกรองแถวใน R: data.table
## data.table
### фильтрация строк по одному условию
ga_nov[source == "google"]
### фильтр по двум условиям соединённым логическим и
ga_nov[source == "google" & sessions >= 10]
### фильтр по двум условиям соединённым логическим или
ga_nov[source == "google" | sessions >= 10]
การกรองสตริงใน Python: pandas
กรองตามแถวใน pandas
คล้ายกับการกรองเข้า data.table
และทำในวงเล็บเหลี่ยม
ในกรณีนี้การเข้าถึงคอลัมน์จำเป็นต้องระบุชื่อของ dataframe จากนั้นสามารถระบุชื่อคอลัมน์ในเครื่องหมายคำพูดในวงเล็บเหลี่ยม (ตัวอย่าง df['col_name']
) หรือไม่มีเครื่องหมายคำพูดหลังช่วงเวลา (ตัวอย่าง df.col_name
).
หากคุณต้องการกรอง dataframe ตามเงื่อนไขหลายประการ แต่ละเงื่อนไขจะต้องอยู่ในวงเล็บ เงื่อนไขลอจิกเชื่อมโยงถึงกันโดยตัวดำเนินการ &
и |
.
การกรองสตริงใน Python: pandas
# Фильтрация строк таблицы
### фильтрация строк по одному условию
ga_nov[ ga_nov['source'] == "google" ]
### фильтр по двум условиям соединённым логическим и
ga_nov[(ga_nov['source'] == "google") & (ga_nov['sessions'] >= 10)]
### фильтр по двум условиям соединённым логическим или
ga_nov[(ga_nov['source'] == "google") | (ga_nov['sessions'] >= 10)]
การจัดกลุ่มและการรวมกลุ่มของข้อมูล
การดำเนินการที่ใช้กันมากที่สุดอย่างหนึ่งในการวิเคราะห์ข้อมูลคือการจัดกลุ่มและการรวมกลุ่ม
ไวยากรณ์สำหรับการดำเนินการเหล่านี้กระจัดกระจายอยู่ในแพ็คเกจทั้งหมดที่เราตรวจสอบ
ในกรณีนี้ เราจะใช้ dataframe เป็นตัวอย่าง มหึมาและคำนวณจำนวนและราคาเฉลี่ยของตั๋วขึ้นอยู่กับชั้นโดยสาร
การจัดกลุ่มและการรวมข้อมูลใน R: tidyverse, dplyr
В dplyr
ฟังก์ชันนี้ใช้สำหรับการจัดกลุ่ม group_by()
และเพื่อการรวมตัวกัน summarise()
. ในความเป็นจริง, dplyr
มีฟังก์ชั่นทั้งตระกูล summarise_*()
แต่จุดประสงค์ของบทความนี้คือเพื่อเปรียบเทียบไวยากรณ์พื้นฐาน ดังนั้นเราจะไม่เข้าไปในป่าแบบนั้น
ฟังก์ชันการรวมพื้นฐาน:
sum()
— ผลรวมmin()
/max()
– ค่าต่ำสุดและสูงสุดmean()
- เฉลี่ยmedian()
— ค่ามัธยฐานlength()
- ปริมาณ
การจัดกลุ่มและการรวมกลุ่มใน R: dplyr
## dplyr
### группировка и агрегация строк
group_by(titanic, Pclass) %>%
summarise(passangers = length(PassengerId),
avg_price = mean(Fare))
ในฟังก์ชั่น group_by()
เราผ่านตารางเป็นอาร์กิวเมนต์แรก มหึมาแล้วระบุเขตข้อมูล พีคลาสโดยที่เราจะจัดกลุ่มตารางของเรา ผลลัพธ์ของการดำเนินการนี้โดยใช้ตัวดำเนินการ %>%
ส่งผ่านเป็นอาร์กิวเมนต์แรกของฟังก์ชัน summarise()
และเพิ่มอีก 2 ช่อง คือ ผู้โดยสาร и ราคาเฉลี่ย_ราคา. ในขั้นแรกให้ใช้ฟังก์ชัน length()
คำนวณจำนวนตั๋วและในวินาทีโดยใช้ฟังก์ชัน mean()
ได้รับราคาตั๋วเฉลี่ย
การจัดกลุ่มและการรวมข้อมูลใน R: data.table
В data.table
อาร์กิวเมนต์นี้ใช้สำหรับการรวมกลุ่ม j
ซึ่งมีตำแหน่งที่สองในวงเล็บเหลี่ยมและสำหรับการจัดกลุ่ม by
หรือ keyby
ซึ่งมีตำแหน่งที่สาม
รายการฟังก์ชันการรวมในกรณีนี้จะเหมือนกับที่อธิบายไว้ในนั้น dplyr
, เพราะ เหล่านี้เป็นฟังก์ชันจากไวยากรณ์ R พื้นฐาน
การจัดกลุ่มและการรวมกลุ่มใน R: data.table
## data.table
### фильтрация строк по одному условию
titanic[, .(passangers = length(PassengerId),
avg_price = mean(Fare)),
by = Pclass]
การจัดกลุ่มและการรวมข้อมูลใน Python: pandas
การจัดกลุ่มเข้า pandas
คล้ายกับ dplyr
แต่การรวมตัวไม่เหมือนกัน dplyr
ไม่เลย data.table
.
หากต้องการจัดกลุ่มให้ใช้วิธี groupby()
ซึ่งคุณจะต้องส่งรายการคอลัมน์ที่จะใช้จัดกลุ่มดาต้าเฟรมเข้าไป
สำหรับการรวมคุณสามารถใช้วิธีนี้ได้ agg()
ซึ่งรับพจนานุกรม ปุ่มพจนานุกรมคือคอลัมน์ที่คุณจะใช้ฟังก์ชันการรวมและค่าคือชื่อของฟังก์ชันการรวม
ฟังก์ชันการรวมกลุ่ม:
sum()
— ผลรวมmin()
/max()
– ค่าต่ำสุดและสูงสุดmean()
- เฉลี่ยmedian()
— ค่ามัธยฐานcount()
- ปริมาณ
ฟังก์ชัน reset_index()
ในตัวอย่างด้านล่างนี้ใช้เพื่อรีเซ็ตดัชนีที่ซ้อนกันอยู่ pandas
ค่าเริ่มต้นเป็นหลังจากการรวบรวมข้อมูล
สัญญลักษณ์ ช่วยให้คุณเลื่อนไปยังบรรทัดถัดไป
การจัดกลุ่มและการรวมกลุ่มใน Python: pandas
# группировка и агрегация данных
titanic.groupby(["Pclass"]).
agg({'PassengerId': 'count', 'Fare': 'mean'}).
reset_index()
การรวมตารางในแนวตั้ง
การดำเนินการที่คุณรวมตารางตั้งแต่ XNUMX ตารางขึ้นไปที่มีโครงสร้างเดียวกัน ข้อมูลที่เราโหลดมีตาราง ga_nov и ga_dec. ตารางเหล่านี้มีโครงสร้างเหมือนกัน กล่าวคือ มีคอลัมน์เหมือนกันและมีประเภทข้อมูลในคอลัมน์เหล่านี้
นี่คือการอัปโหลดจาก Google Analytics สำหรับเดือนพฤศจิกายนและธันวาคม ในส่วนนี้เราจะรวมข้อมูลนี้ไว้ในตารางเดียว
การรวมตารางในแนวตั้งใน R: tidyverse, dplyr
В dplyr
คุณสามารถรวม 2 ตารางเป็นหนึ่งเดียวโดยใช้ฟังก์ชัน bind_rows()
โดยส่งตารางเป็นอาร์กิวเมนต์
การกรองแถวใน R: dplyr
# Вертикальное объединение таблиц
## dplyr
bind_rows(ga_nov, ga_dec)
การรวมตารางในแนวตั้งใน R: data.table
ไม่มีอะไรซับซ้อน ลองใช้ดูสิ rbind()
.
การกรองแถวใน R: data.table
## data.table
rbind(ga_nov, ga_dec)
การรวมตารางในแนวตั้งใน Python: pandas
В pandas
ฟังก์ชั่นนี้ใช้ในการรวมตาราง concat()
ซึ่งคุณจะต้องส่งรายการเฟรมเพื่อรวมเข้าด้วยกัน
การกรองสตริงใน Python: pandas
# вертикальное объединение таблиц
pd.concat([ga_nov, ga_dec])
การรวมตารางแนวนอน
การดำเนินการที่คอลัมน์จากคอลัมน์ที่สองถูกเพิ่มลงในตารางแรกโดยใช้คีย์ มักใช้เมื่อเพิ่มตารางข้อเท็จจริง (เช่น ตารางที่มีข้อมูลการขาย) ด้วยข้อมูลอ้างอิงบางส่วน (เช่น ต้นทุนของผลิตภัณฑ์)
การรวมมีหลายประเภท:
ในตารางที่โหลดไว้ก่อนหน้านี้ มหึมา เรามีคอลัมน์ เพศซึ่งสอดคล้องกับรหัสเพศของผู้โดยสาร:
1 - เพศหญิง
2 - ชาย
นอกจากนี้เรายังได้สร้างตาราง - หนังสืออ้างอิง เพศ. เพื่อการนำเสนอข้อมูลเกี่ยวกับเพศของผู้โดยสารได้สะดวกยิ่งขึ้น เราจำเป็นต้องเพิ่มชื่อเพศจากไดเร็กทอรี เพศ ไปที่โต๊ะ มหึมา.
รวมตารางแนวนอนใน R: tidyverse, dplyr
В dplyr
มีฟังก์ชันมากมายสำหรับการเข้าร่วมในแนวนอน:
inner_join()
left_join()
right_join()
full_join()
semi_join()
nest_join()
anti_join()
ที่ใช้กันมากที่สุดในการปฏิบัติของฉันคือ left_join()
.
เนื่องจากเป็นอาร์กิวเมนต์สองตัวแรก ฟังก์ชันที่แสดงไว้ด้านบนจึงต้องใช้สองตารางเพื่อรวมเข้าด้วยกัน และเป็นอาร์กิวเมนต์ที่สาม by คุณต้องระบุคอลัมน์ที่จะเข้าร่วม
เข้าร่วมตารางแนวนอนใน R: dplyr
# объединяем таблицы
left_join(titanic, gender,
by = c("Sex" = "id"))
การรวมตารางแนวนอนใน R: data.table
В data.table
คุณต้องเข้าร่วมตารางด้วยคีย์โดยใช้ฟังก์ชัน merge()
.
อาร์กิวเมนต์เพื่อผสานฟังก์ชัน () ใน data.table
- x, y — ตารางสำหรับการเข้าร่วม
- โดย — คอลัมน์ที่เป็นกุญแจสำคัญในการรวมหากมีชื่อเหมือนกันในทั้งสองตาราง
- by.x, by.y — ชื่อของคอลัมน์ที่จะรวม หากมีชื่อที่แตกต่างกันในตาราง
- all, all.x, all.y — ประเภทการรวม all จะส่งคืนแถวทั้งหมดจากทั้งสองตาราง all.x สอดคล้องกับการดำเนินการ LEFT JOIN (จะปล่อยแถวทั้งหมดของตารางแรก) all.y — สอดคล้องกับ การดำเนินการ RIGHT JOIN (จะออกจากแถวทั้งหมดของ table ที่สอง)
การรวมตารางแนวนอนใน R: data.table
# объединяем таблицы
merge(titanic, gender, by.x = "Sex", by.y = "id", all.x = T)
เข้าร่วมตารางแนวนอนใน Python: pandas
รวมทั้งใน data.table
ใน pandas
ฟังก์ชั่นนี้ใช้ในการรวมตาราง merge()
.
อาร์กิวเมนต์ของฟังก์ชัน merge() ในแพนด้า
- อย่างไร — ประเภทการเชื่อมต่อ: ซ้าย, ขวา, ด้านนอก, ด้านใน
- on — คอลัมน์ที่เป็นคีย์หากมีชื่อเหมือนกันในทั้งสองตาราง
- left_on, right_on — ชื่อของคอลัมน์หลัก หากมีชื่อต่างกันในตาราง
เข้าร่วมตารางแนวนอนใน Python: pandas
# объединяем по ключу
titanic.merge(gender, how = "left", left_on = "Sex", right_on = "id")
ฟังก์ชันหน้าต่างพื้นฐานและคอลัมน์จากการคำนวณ
ฟังก์ชันหน้าต่างมีความหมายคล้ายกับฟังก์ชันการรวม และมักใช้ในการวิเคราะห์ข้อมูลด้วย แต่ต่างจากฟังก์ชันการรวมกลุ่ม ฟังก์ชันหน้าต่างไม่เปลี่ยนจำนวนแถวของดาต้าเฟรมขาออก
โดยพื้นฐานแล้ว เมื่อใช้ฟังก์ชัน window เราจะแบ่ง dataframe ที่เข้ามาออกเป็นส่วน ๆ ตามเกณฑ์บางประการ เช่น ตามค่าของฟิลด์หรือหลายฟิลด์ และเราทำการคำนวณทางคณิตศาสตร์ในแต่ละหน้าต่าง ผลลัพธ์ของการดำเนินการเหล่านี้จะถูกส่งกลับในแต่ละบรรทัด เช่น โดยไม่ต้องเปลี่ยนจำนวนแถวทั้งหมดในตาราง
ตัวอย่างเช่น เรามาจัดโต๊ะกันดีกว่า มหึมา. เราสามารถคำนวณราคาของตั๋วแต่ละใบที่อยู่ในชั้นโดยสารได้เป็นเปอร์เซ็นต์
ในการดำเนินการนี้ เราจำเป็นต้องได้รับค่าใช้จ่ายรวมของตั๋วในแต่ละบรรทัดสำหรับชั้นห้องโดยสารปัจจุบันที่มีตั๋วในบรรทัดนี้ จากนั้นหารราคาของตั๋วแต่ละใบด้วยราคารวมของตั๋วทั้งหมดในชั้นห้องโดยสารเดียวกัน .
ฟังก์ชั่นหน้าต่างใน R: tidyverse, dplyr
หากต้องการเพิ่มคอลัมน์ใหม่โดยไม่ต้องใช้การจัดกลุ่มแถวใน dplyr
ทำหน้าที่ mutate()
.
คุณสามารถแก้ไขปัญหาที่อธิบายไว้ข้างต้นได้โดยการจัดกลุ่มข้อมูลตามฟิลด์ พีคลาส และสรุปฟิลด์ในคอลัมน์ใหม่ ค่าโดยสาร. ถัดไป ยกเลิกการจัดกลุ่มตารางและหารค่าของฟิลด์ ค่าโดยสาร กับสิ่งที่เกิดขึ้นในขั้นตอนที่แล้ว
ฟังก์ชั่นหน้าต่างใน R: dplyr
group_by(titanic, Pclass) %>%
mutate(Pclass_cost = sum(Fare)) %>%
ungroup() %>%
mutate(ticket_fare_rate = Fare / Pclass_cost)
ฟังก์ชั่นหน้าต่างใน R: data.table
อัลกอริธึมการแก้ปัญหายังคงเหมือนกับใน dplyr
เราต้องแยกตารางออกเป็นหน้าต่างตามฟิลด์ พีคลาส. ส่งออกจำนวนเงินสำหรับกลุ่มที่สอดคล้องกับแต่ละแถวในคอลัมน์ใหม่ และเพิ่มคอลัมน์ที่เราคำนวณส่วนแบ่งต้นทุนของตั๋วแต่ละใบในกลุ่ม
หากต้องการเพิ่มคอลัมน์ใหม่เข้าไป data.table
มีผู้ดำเนินการอยู่ :=
. ด้านล่างนี้เป็นตัวอย่างการแก้ปัญหาโดยใช้แพ็คเกจ data.table
ฟังก์ชั่นหน้าต่างใน R: data.table
titanic[,c("Pclass_cost","ticket_fare_rate") := .(sum(Fare), Fare / Pclass_cost),
by = Pclass]
ฟังก์ชั่นหน้าต่างใน Python: pandas
วิธีหนึ่งในการเพิ่มคอลัมน์ใหม่ pandas
- ใช้ฟังก์ชั่น assign()
. เราจะใช้ฟังก์ชันนี้ในการสรุปราคาตั๋วตามชั้นโดยสารโดยไม่จัดกลุ่มแถว transform()
.
ด้านล่างนี้เป็นตัวอย่างของโซลูชันที่เราเพิ่มลงในตาราง มหึมา 2 คอลัมน์เดียวกัน
ฟังก์ชั่นหน้าต่างใน Python: pandas
titanic.assign(Pclass_cost = titanic.groupby('Pclass').Fare.transform(sum),
ticket_fare_rate = lambda x: x['Fare'] / x['Pclass_cost'])
ตารางการติดต่อฟังก์ชันและวิธีการ
ด้านล่างนี้เป็นตารางการติดต่อระหว่างวิธีดำเนินการต่าง ๆ กับข้อมูลในแพ็คเกจที่เราพิจารณา
ลักษณะ
เรียบร้อย
ตารางข้อมูล
หมีแพนด้า
กำลังโหลดข้อมูล
vroom()
/ readr::read_csv()
/ readr::read_tsv()
fread()
read_csv()
การสร้างดาต้าเฟรม
tibble()
data.table()
dict()
+ from_dict()
การเลือกคอลัมน์
select()
ข้อโต้แย้ง jตำแหน่งที่สองในวงเล็บเหลี่ยม
เราผ่านรายการคอลัมน์ที่ต้องการในวงเล็บเหลี่ยม / drop()
/ filter()
/ select_dtypes()
การกรองแถว
filter()
ข้อโต้แย้ง i, ตำแหน่งแรกในวงเล็บเหลี่ยม
เราแสดงรายการเงื่อนไขการกรองในวงเล็บเหลี่ยม / filter()
การจัดกลุ่มและการรวมกลุ่ม
group_by()
+ summarise()
ข้อโต้แย้ง j + by
groupby()
+ agg()
ยูเนี่ยนตารางแนวตั้ง (UNION)
bind_rows()
rbind()
concat()
การรวมตารางแนวนอน (JOIN)
left_join()
/ *_join()
merge()
merge()
ฟังก์ชันหน้าต่างพื้นฐานและการเพิ่มคอลัมน์จากการคำนวณ
group_by()
+ mutate()
ข้อโต้แย้ง j โดยใช้ตัวดำเนินการ :=
+ อาร์กิวเมนต์ by
transform()
+ assign()
ข้อสรุป
บางทีในบทความที่ฉันอธิบายไว้ไม่ใช่การใช้งานการประมวลผลข้อมูลที่เหมาะสมที่สุดดังนั้นฉันจะดีใจถ้าคุณแก้ไขข้อผิดพลาดในความคิดเห็นหรือเพียงเสริมข้อมูลที่ให้ไว้ในบทความด้วยเทคนิคอื่น ๆ สำหรับการทำงานกับข้อมูลใน R / Python
ดังที่ฉันเขียนไว้ข้างต้น จุดประสงค์ของบทความนี้ไม่ใช่เพื่อกำหนดความคิดเห็นว่าภาษาใดดีกว่า แต่เพื่อลดความซับซ้อนของโอกาสในการเรียนรู้ทั้งสองภาษา หรือหากจำเป็น ย้ายระหว่างภาษาเหล่านั้น
หากคุณชอบบทความนี้ฉันยินดีที่จะมีสมาชิกใหม่ของฉัน
Опрос
คุณใช้แพ็คเกจใดต่อไปนี้ในการทำงานของคุณ?
ในความคิดเห็นคุณสามารถเขียนเหตุผลที่คุณเลือกได้
เฉพาะผู้ใช้ที่ลงทะเบียนเท่านั้นที่สามารถเข้าร่วมในการสำรวจได้
คุณใช้แพ็คเกจการประมวลผลข้อมูลใด (คุณสามารถเลือกได้หลายตัวเลือก)
-
ลด 45,2%เป็นระเบียบเรียบร้อย19
-
ลด 33,3%ข้อมูล.table14
-
ลด 54,8%หมีแพนด้า23
ผู้ใช้ 42 คนโหวต ผู้ใช้ 9 รายงดออกเสียง
ที่มา: will.com