Mod bir veri kümesinin / olmasıdır elemanı (ler) (ler), en sık kümesinde meydana geldiği. En sık aynı sayıda görünen iki üye varsa, verilerin iki modu vardır. Buna çift modlu denir .
2'den fazla mod varsa, veri
çok modlu olarak adlandırılır . Veri kümesindeki tüm üyeler aynı sayıda görünürse, veri kümesinin
hiç modu yoktur .
Aşağıdaki işlev modes()
, belirli bir veri listesinde modları bulmak için çalışabilir :
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")
Çıktı:
# 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']
Bu paketlerden herhangi bir işlevi içeri aktarmak numpy
veya pandas
çağırmak istemiyorsak , aynı çıktıyı elde etmek için modes()
işlev şu şekilde yazılabilir:
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")