วิธีสร้างตารางความถี่ใน 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() ได้ที่นี่

เพิ่มความคิดเห็น

อีเมลของคุณจะไม่แสดงให้คนอื่นเห็น ช่องข้อมูลจำเป็นถูกทำเครื่องหมาย *