วิธีสร้างตารางความถี่ใน python
ตารางความถี่ คือตารางที่แสดงความถี่ของหมวดหมู่ต่างๆ ตารางประเภทนี้มีประโยชน์อย่างยิ่งในการทำความเข้าใจการกระจายค่าในชุดข้อมูล
บทช่วยสอนนี้จะอธิบายวิธีสร้างตารางความถี่ใน Python
ตารางความถี่ทางเดียวสำหรับอนุกรม
หากต้องการค้นหาความถี่ของแต่ละค่าในชุดหมีแพนด้าคุณสามารถใช้ฟังก์ชัน value_counts() ได้:
import pandas as pd #defineSeries data = pd.Series([1, 1, 1, 2, 3, 3, 3, 3, 4, 4, 5]) #find frequencies of each value data.value_counts() 3 4 1 3 4 2 5 1 2 1
คุณสามารถเพิ่มอาร์กิวเมนต์ sort=False ได้ หากคุณไม่ต้องการให้เรียงลำดับค่าข้อมูลตามความถี่:
data.value_counts(sort= False )
1 3
2 1
3 4
4 2
5 1
วิธีการตีความผลลัพธ์มีดังนี้:
- ค่า “1” ปรากฏ 3 ครั้งในชุดข้อมูล
- ค่า “2” ปรากฏ 1 ครั้งในชุดข้อมูล
- ค่า “3” ปรากฏ 4 ครั้งในชุดข้อมูล
และอื่นๆ
ตารางความถี่ทางเดียวสำหรับ DataFrame
หากต้องการค้นหาความถี่ของ DataFrame ของ pandas คุณสามารถใช้ฟังก์ชัน crosstab () ซึ่งใช้ไวยากรณ์ต่อไปนี้:
ครอสแท็บ (ดัชนี คอลัมน์)
ทอง:
- ดัชนี: ชื่อของคอลัมน์ที่จะจัดกลุ่มตาม
- คอลัมน์: ชื่อที่จะตั้งให้กับคอลัมน์ความถี่
ตัวอย่างเช่น สมมติว่าเรามี DataFrame ที่มีข้อมูลเกี่ยวกับเกรด อายุ และเพศของนักเรียน 10 คนในชั้นเรียนที่แตกต่างกัน วิธีค้นหาความถี่ของเกรดตัวอักษรแต่ละตัวมีดังนี้:
#create data df = pd.DataFrame({'Grade': ['A','A','A','B','B', 'B', 'B', 'C', 'D', 'D '], 'Age': [18, 18, 18, 19, 19, 20, 18, 18, 19, 19], 'Gender': ['M','M', 'F', 'F', 'F', 'M', 'M', 'F', 'M', 'F']}) #view data df Grade Age Gender 0 to 18 m 1 to 18 m 2 A 18 F 3 B 19 F 4 B 19 F 5 B 20 M 6 B 18 M 7 C 18 F 8 D 19 M 9 D 19 F #find frequency of each letter grade pd.crosstab(index=df[' Grade '], columns=' count ') col_0 count Grade At 3 B4 C 1 D 2
วิธีการตีความนี้คือ:
- นักเรียน 3 คนได้เกรด “A” ในชั้นเรียน
- นักเรียน 4 คนได้เกรด B ในชั้นเรียน
- นักเรียน 1 คนได้เกรด C ในชั้นเรียน
- นักเรียน 2 คนได้เกรด “D” ในชั้นเรียน
เราสามารถใช้ไวยากรณ์ที่คล้ายกันเพื่อค้นหาจำนวนความถี่สำหรับคอลัมน์อื่นๆ ตัวอย่างเช่น วิธีค้นหาความถี่ตามอายุมีดังนี้
pd.crosstab(index=df[' Age '], columns=' count ') col_0 count Age 18 5 19 4 20 1
วิธีการตีความนี้คือ:
- นักเรียน 5 คน อายุ 18 ปี
- นักเรียน 4 คน อายุ 19 ปี
- นักเรียน 1 คน อายุ 20 ปี
คุณยังสามารถแสดงความถี่เป็นสัดส่วนของชุดข้อมูลได้อย่างง่ายดายโดยการหารด้วยผลรวม:
#define crosstab tab = pd.crosstab(index=df['Age'], columns='count') #find proportions tab/tab.sum() col_0 count Age 18 0.5 19 0.4 20 0.1
วิธีการตีความนี้คือ:
- 50% ของนักเรียนมีอายุ 18 ปี
- 40% ของนักเรียนมีอายุ 19 ปี
- 10% ของนักเรียนมีอายุ 20 ปี
ตารางความถี่แบบสองทิศทางสำหรับ DataFrame
คุณยังสามารถสร้างตารางความถี่แบบสองทางเพื่อแสดงความถี่ของตัวแปรสองตัวที่แตกต่างกันในชุดข้อมูลได้ ตัวอย่างเช่น ต่อไปนี้เป็นวิธีสร้างตารางความถี่แบบสองทางสำหรับตัวแปรอายุและเกรด:
pd.crosstab(index=df[' Age '], columns=df[' Grade ']) Grade A B C D Age 18 3 1 1 0 19 0 2 0 2 20 0 1 0 0
วิธีการตีความนี้คือ:
- มีนักเรียนอายุ 18 ปี จำนวน 3 คน ที่ได้เกรด “A” ในชั้นเรียน
- มีนักเรียน 1 คน อายุ 18 ปี และได้เกรด B ในชั้นเรียน
- มีนักเรียน 1 คน อายุ 18 ปี และได้เกรด C ในชั้นเรียน
- มีนักเรียนอายุ 18 ปี จำนวน 0 คนที่ได้เกรด D ในชั้นเรียน
และอื่นๆ
คุณสามารถดูเอกสารฉบับเต็มสำหรับฟังก์ชัน crosstab() ได้ที่นี่