###### 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())
```

