Pandas Groupโดย Aggregate

Pandas Groupdoy Aggregate



เทคนิคการจัดกลุ่มเป็นสิ่งจำเป็นเนื่องจากความสามารถในการรวบรวมข้อมูลทั้งในแง่ของประสิทธิภาพและขนาดโค้ดได้ดีเพียงใด คำว่า “groupby” โดยทั่วไปจะอธิบายขั้นตอนต่างๆ รวมถึงขั้นตอนต่อไปนี้:

  • แยก : โดยการใช้เงื่อนไขบางอย่างกับชุดข้อมูล เราสามารถแบ่งข้อมูลออกเป็นกลุ่มได้
  • การสมัคร : กระบวนการที่เราใช้วิธีการกับทุกกลุ่มเป็นรายบุคคล
  • การรวมกัน : ขั้นตอนการรวมชุดข้อมูลต่างๆ เพื่อสร้างโครงสร้างข้อมูลหลังจากใช้เมธอด groupby()

ในกระบวนการรวม สถิติสรุปสำหรับแต่ละกลุ่มจะถูกคำนวณ สำหรับแต่ละกลุ่ม วิธีการรวมจะส่งคืนค่ารวม (ค่าเดียว) เราสามารถดำเนินการรวมหลายๆ อย่างกับข้อมูลที่จัดกลุ่มหลังจากแบ่งข้อมูลออกเป็นกลุ่มโดยใช้ฟังก์ชัน groupby







ทำไมแพนด้าถึงมีวิธีการรวบรวมข้อมูลที่หลากหลาย?

Pandas มีฟีเจอร์และฟังก์ชันมากมายเพื่อช่วยในการวิเคราะห์และการรวมข้อมูล ตัวอย่างเช่น การใช้เมธอด pivot(), groupby() และ pivot_table() แต่ละวิธีมีมุมมองที่แตกต่างกันเกี่ยวกับวิธีการรวมข้อมูล พวกเขาให้แนวทางปฏิบัติในการปฏิบัติงานต่าง ๆ มากกว่าที่จะเพียงแค่บรรจุใหม่



วิธีใช้ฟังก์ชัน .agg() ใน Pandas

ค่าเฉลี่ยอย่างง่ายหรือผลรวมของค่าคือฟังก์ชันการรวมที่ใช้บ่อยที่สุด คุณสามารถใช้คอลัมน์ของ dataframe หรือหลายคอลัมน์เพื่อเรียกใช้ฟังก์ชันการรวม คุณจะเห็นหลายวิธีในการรวบรวมข้อมูลโดยใช้วิธีจัดกลุ่มตาม Pandas เพื่อแสดงให้เห็นว่าขั้นตอนง่ายเพียงใด มาดูตัวอย่างด้านล่าง การดำเนินการทางคณิตศาสตร์ขั้นพื้นฐาน เช่น ผลรวม ค่าต่ำสุด ค่าสูงสุด ค่าเบี่ยงเบนสัมบูรณ์ ค่าเบี่ยงเบนมาตรฐาน ค่าเฉลี่ย ค่ามัธยฐาน ความแปรปรวน และผลิตภัณฑ์ เป็นฟังก์ชันการรวมในตัวที่ใช้บ่อยที่สุด เพื่อสรุปข้อมูล เราสามารถรวมฟังก์ชัน groupby และ agg() เข้าด้วยกัน



ตัวอย่าง # 01: กำหนดผลรวมของคอลัมน์โดยการจัดกลุ่มข้อมูลโดยใช้ฟังก์ชัน groupby.agg()

ก่อนอื่นเราจะสร้าง dataframe โดยใช้ฟังก์ชัน pd.DataFrame() เพื่อที่เราจะจัดกลุ่มข้อมูลจากคอลัมน์หรือคอลัมน์ของ dataframe แล้วจึงกำหนดค่าเฉลี่ย เราต้องนำเข้าโมดูลของแพนด้าและไลบรารี numpy ก่อนที่เราจะสร้างดาต้าเฟรม





อย่างที่คุณเห็น เราใช้พจนานุกรมแพนด้าเพื่อสร้างดาต้าเฟรมของเรา df dataframe ของเรามีสี่คอลัมน์: 'ผู้ป่วย' 'กลุ่ม', 'อายุ' และ 'ขวดเลือด' ค่าข้อมูล ('Ali', 'John', 'Mike', 'Mike', 'John', 'Ali', 'Ali', 'Mike') มีอยู่ในคอลัมน์ 'ผู้ป่วย' ในขณะที่ค่าข้อมูล ('A ', 'A', 'B', 'C', 'A', 'C', 'C', 'B'), (21, 22, 24, 21, 20, 24, 22, 22) และ ( 2, 3, 1, 1, 2, 3, 2, 1) อยู่ในคอลัมน์ 'กลุ่ม', 'อายุ' และ 'blood_bottles' ตามลำดับ สมมติว่าเราต้องกำหนดผลรวมของค่าในคอลัมน์ 'blood_bottles' โดยจัดกลุ่มค่าในคอลัมน์ 'group'



สำหรับข้อมูลกลุ่ม 'A' ผลรวมของค่า 'blood_bottles' คือ 7 สำหรับค่ากลุ่ม 'B' และ 'C' ผลรวมของค่า 'blood_bottles' คือ 2 และ 6 ตามลำดับ นอกจากนี้เรายังสามารถจัดกลุ่มหลายคอลัมน์เพื่อกำหนดผลรวมสำหรับแต่ละกลุ่ม

ดังที่สังเกตได้ เราได้ส่งรายการป้ายชื่อคอลัมน์ เช่น ['ผู้ป่วย', 'กลุ่ม'] ภายในฟังก์ชัน groupby() เพื่อสร้างกลุ่มของหมวดหมู่ในแต่ละคอลัมน์ที่ระบุ สำหรับแต่ละกลุ่มของคอลัมน์ที่ระบุ เราได้กำหนดผลรวมของค่าใน 'blood_bottles' ตัวอย่างเช่น 'Ali' อยู่ในคอลัมน์ 'group' ค่า A และ C ในกลุ่ม A ผลรวมของค่า 'blood_bottles' สำหรับ Ali คือ 2 และ 5 ในกลุ่ม 'C'

ตัวอย่าง # 02: การใช้หลายฟังก์ชันในคอลัมน์เดียวของ Dataframe โดยใช้ groupby.agg() Function

การรวมหลายรายการสามารถใช้เมธอด 'groupby()' โดยใช้ฟังก์ชันแพนด้า aggg() สามารถส่งรายชื่อที่เรียกได้ไปยังเมธอด มาดูกันว่าเราจะรวบรวมข้อมูลของเราได้อย่างไรโดยใช้วิธีการในตัวของ numpy library ต่างจากตัวอย่างก่อนหน้านี้ เราจะใช้หลายฟังก์ชันกับคอลัมน์เดียวของดาต้าเฟรม ฟังก์ชัน pd.DataFrame() จะถูกใช้เพื่อสร้างดาต้าเฟรมสำหรับสิ่งนี้ด้วยคอลัมน์อย่างน้อยหนึ่งคอลัมน์ที่มีค่าตัวเลข


สร้าง dataframe ที่ต้องการแล้วโดยมีคอลัมน์ตัวเลขหนึ่งคอลัมน์เช่น 'marks' ที่มีค่า 41, 40, 35, 39, 49, 31, 34 และ 42 มีอีก 3 คอลัมน์ 'student', ' subjects' และ 'degree' ใน dataframe ของเราซึ่งสามารถแบ่งออกเป็นกลุ่มโดยใช้ฟังก์ชัน groupby() ค่าในคอลัมน์ 'นักเรียน' และ 'วิชา' คือ ('Harry', 'Ron', 'Harry', 'Lana', 'Sam', 'Ron', 'Lana', 'Max') และ ('C++' , 'JAVA', 'Python', 'Python', 'AI', 'JAVA', 'C++', 'AI') ในขณะที่ระดับคอลัมน์มีค่าข้อมูลเป็นสตริง เช่น ('Ms', 'Bs', 'Bs', 'Ms', 'Ms', 'Ms', 'Bs', 'Bs') สมมติว่าเราต้องจัดกลุ่มข้อมูลของคอลัมน์ 'หัวเรื่อง' และกำหนดทั้งค่าเฉลี่ยและผลรวมของ 'เครื่องหมาย' ของคอลัมน์สำหรับแต่ละข้อมูลที่จัดกลุ่ม

เราได้ระบุชื่อของคอลัมน์ 'หัวเรื่อง' เป็นสตริงภายในฟังก์ชัน groupby() เพื่อแปลงข้อมูลเป็นกลุ่มของหมวดหมู่ สำหรับคอลัมน์เครื่องหมาย เราได้ใช้เมธอด agg() และภายในฟังก์ชัน agg() เราได้ระบุฟังก์ชัน numpy np.sum และ np.mean เพื่อค้นหาผลรวมและค่าเฉลี่ยของเครื่องหมายของข้อมูลแต่ละกลุ่มในหัวข้อคอลัมน์ ผลรวมและค่าเฉลี่ยสำหรับค่ากลุ่ม 'AI' คือ 91 และ 45.5 ตามลำดับ ผลรวมของคะแนนสำหรับค่า 'C++' คือ 75 และค่าเฉลี่ยคือ 37.5 สำหรับกลุ่ม JAVA ผลรวมของเครื่องหมายคือ 71 และค่าเฉลี่ยคือ 35.5 ในขณะที่ผลรวมและค่าเฉลี่ยสำหรับ Python คือ 74 และ 37 ตามลำดับ

ตัวอย่าง # 03: การใช้หลายฟังก์ชันบนหลายคอลัมน์ของ Dataframe โดยใช้ groupby.agg() Function

แทนที่จะใช้ฟังก์ชันต่างๆ กับคอลัมน์ของ dataframe เดียว เราสามารถใช้หลายฟังก์ชันกับคอลัมน์ตัวเลขต่างๆ ได้ เราสามารถใช้พจนานุกรมในฟังก์ชัน agg() เป็นอินพุตเพื่อใช้วิธีการรวมเฉพาะกับคอลัมน์ของ dataframe ต่างๆ มานำเข้าไลบรารีแพนด้าและ numpy ก่อนสร้างดาต้าเฟรมที่มีคอลัมน์ตัวเลขหลายคอลัมน์

มีสี่คอลัมน์ใน dataframe ที่สร้างขึ้นใหม่โดยมีชื่อว่า 'player', 'least_score' 'highest_score' และ 'location' ในคอลัมน์ 'ผู้เล่น' เราได้จัดเก็บชื่อของผู้เล่นสองสามคนเป็นค่าข้อมูลสตริง ('Leo', 'Alex', 'Leo', 'Fin', 'Leo', 'Alex', 'Fin', ' Fin') ในคอลัมน์ 'least_score' มีคะแนนต่ำสุดของผู้เล่นสำหรับบางแมตช์ (12, 34, 2, 21, 9, 1, 0, 34) ในขณะที่คอลัมน์ 'คะแนนสูงสุด' เรามีคะแนนสูงสุดของผู้เล่น (12, 34, 2, 21, 9, 1, 0, 34) และในคอลัมน์ 'ตำแหน่ง' มีชื่อของสถานที่ที่ผู้เล่นได้เล่นแมตช์ของพวกเขา ('ฝรั่งเศส', 'อังกฤษ', 'ดูไบ', ' ดูไบ 'อังกฤษ' 'ฝรั่งเศส' 'ดูไบ' 'ฝรั่งเศส')

สมมติว่าหลังจากจัดกลุ่มข้อมูลลงในคอลัมน์ 'ผู้เล่น' แล้ว เราต้องหาค่าเฉลี่ยสำหรับค่าคอลัมน์ 'คะแนนน้อยที่สุด' และผลรวมของค่าข้อมูล 'คะแนนสูงสุด' สำหรับแต่ละกลุ่ม

ภายในฟังก์ชัน agg() เราส่งพจนานุกรมหลาม {'highest_score' : 'sum', 'least_score' : 'mean'} เพื่อค้นหาผลรวมและค่าเฉลี่ยสำหรับคอลัมน์ที่ระบุเทียบกับแต่ละกลุ่ม จะเห็นได้ว่าค่าที่จัดกลุ่ม Alex มีผลรวมของค่า 'คะแนนสูงสุด' ที่ 132 และค่าเฉลี่ยของค่า 'คะแนนน้อยที่สุด' 17.5 สำหรับ 'Fin' ผลรวมของค่าคือ 199 และค่าเฉลี่ยคือ 18.3333333 ในคอลัมน์ 'highest_score' และ 'least_score' ตามลำดับ ค่ากลุ่ม Leo มีมูลค่ารวม 180 ใน 'คะแนนสูงสุด' และค่าเฉลี่ย 7.666667 ใน 'คะแนนน้อยที่สุด'

บทสรุป

ในบทช่วยสอนนี้ เราได้พูดถึงฟังก์ชัน groupby() และการรวมในแพนด้า เราได้พูดคุยถึงวิธีการใช้ฟังก์ชัน groupby.agg() เราใช้ตัวอย่างสามตัวอย่างในบทความนี้เพื่อสอนวิธีใช้ฟังก์ชันการรวมเดี่ยวในคอลัมน์ดาต้าเฟรมโดยการจัดกลุ่มข้อมูลของคอลัมน์เดียวและหลายคอลัมน์ วิธีการใช้ฟังก์ชันการรวมหลายรายการในคอลัมน์เดียวของดาต้าเฟรม และวิธีการใช้หลายรายการ ฟังก์ชันการรวมบนหลายคอลัมน์ของ dataframe โดยใช้ฟังก์ชัน groupby.agg()