Chế độ của một tập dữ liệu là / là (các) thành viên xảy ra thường xuyên nhất trong tập hợp. Nếu có hai thành viên xuất hiện thường xuyên nhất với cùng số lần, thì dữ liệu có hai chế độ. Cái này được gọi là lưỡng kim .
Nếu có nhiều hơn 2 chế độ, thì dữ liệu sẽ được gọi là
đa phương thức . Nếu tất cả các thành viên trong tập dữ liệu xuất hiện cùng một số lần, thì tập dữ liệu
không có chế độ cả.
Chức năng sau modes()
có thể hoạt động để tìm (các) chế độ trong danh sách dữ liệu đã cho:
import numpy as np; import pandas as pd
def modes(arr):
df = pd.DataFrame(arr, columns=['Values'])
dat = pd.crosstab(df['Values'], columns=['Freq'])
if len(np.unique((dat['Freq']))) > 1:
mode = list(dat.index[np.array(dat['Freq'] == max(dat['Freq']))])
return mode
else:
print("There is NO mode in the data set")
Đầu ra:
# For a list of numbers in x as
In [1]: x = [2, 3, 4, 5, 7, 9, 8, 12, 2, 1, 1, 1, 3, 3, 2, 6, 12, 3, 7, 8, 9, 7, 12, 10, 10, 11, 12, 2]
In [2]: modes(x)
Out[2]: [2, 3, 12]
# For a list of repeated numbers in y as
In [3]: y = [2, 2, 3, 3, 4, 4, 10, 10]
In [4]: modes(y)
There is NO mode in the data set
# For a list of stings/characters in z as
In [5]: z = ['a', 'b', 'b', 'b', 'e', 'e', 'e', 'd', 'g', 'g', 'c', 'g', 'g', 'a', 'a', 'c', 'a']
In [6]: modes(z)
Out[6]: ['a', 'g']
Nếu chúng ta không muốn nhập numpy
hoặc pandas
gọi bất kỳ hàm nào từ các gói này, thì để có cùng đầu ra này, modes()
hàm có thể được viết là:
def modes(arr):
cnt = []
for i in arr:
cnt.append(arr.count(i))
uniq_cnt = []
for i in cnt:
if i not in uniq_cnt:
uniq_cnt.append(i)
if len(uniq_cnt) > 1:
m = []
for i in list(range(len(cnt))):
if cnt[i] == max(uniq_cnt):
m.append(arr[i])
mode = []
for i in m:
if i not in mode:
mode.append(i)
return mode
else:
print("There is NO mode in the data set")