###### tags: `Python`,`count`,`眾數計算` # Python 眾數計算的6種方式 隨意創造一個資料如下: l = [0,1,1,1,2,3,7,3] 請寫程式,計算每個元素於list內出現次數 ```python= #方法1 print("************1st******************") l = [0,1,1,1,2,3,7,3] #dict (key,value) d = dict() for i in l: d[i] = d.get(i,0)+1 #get i ,如果get不到就出現0 #如果get的到,之後就是累加1 print(d) #{0: 1, 1: 3, 2: 1, 3: 2, 7: 1} #方法2 print("************2nd******************") l = [0,1,1,1,2,3,7,3] x = set(l) #避免重複,set 重複的元素只會存在一次 print(x) #{0, 1, 2, 3, 7} y = [l.count(i) for i in x] print(y) #[1, 3, 1, 2, 1]資料型態變成list #for idx in range(len(x)): #利用索引存取 # print(x[idx]) #set不支援索引會拋錯 # print(y[idx]) for a,b in zip(x,y): #zip照順序取出來 print(a,b) #0 1 #1 3 #2 1 #3 2 #7 1 #方法3 print("**************3rd****************") #Dictionary Comprehension l = [0,1,1,1,2,3,7,3] d = {x:l.count(x) for x in set(l)} #x當成key,count 當value print(d) #{0: 1, 1: 3, 2: 1, 3: 2, 7: 1} #方法4 print("**************4th****************") l = [0,1,1,1,2,3,7,3] import collections #使用collections模組 counter = collections.Counter(l) print(counter, type(counter)) #({1: 3, 3: 2, 0: 1, 2: 1, 7: 1}) <class 'collections.Counter'> l = sorted(counter.items(),key = lambda t:t[0]) print(l) #[(0, 1), (1, 3), (2, 1), (3, 2), (7, 1)] #方法5 print("***************5th***************") l = [0,1,1,1,2,3,7,3] import numpy as np arr = np.array([0,1,1,1,2,3,7,3]) element ,count = np.unique(arr,return_counts=True) print(element,type(element)) #[0 1 2 3 7] <class 'numpy.ndarray'> print(count,type(count))#[1 3 1 2 1] <class 'numpy.ndarray'> for x,y in zip(element,count): print(x,y) #0 1 #1 3 #2 1 #3 2 #7 1 #方法6 print("***************6th***************") import pandas as pd df = pd.DataFrame({'x':[0,1,1,1,2,3,7,3]}) print(df['x'].value_counts()) print(df['x'].value_counts().sort_index()) #依大小排序 ##------------------------------------------ l = [0,1,1,1,2,3,7,3] import pandas as pd df = pd.DataFrame({'x':l}) print(df['x'].value_counts()) print(df['x'].value_counts().sort_index()) ``` ![](https://i.imgur.com/QN2FGab.jpg) ![](https://i.imgur.com/JvD1vls.jpg)