python 列表統計元素頻數 頻率

2021-09-26 21:23:27 字數 1527 閱讀 8059

乙個很簡單的問題:統計列表中元素出現個數、比例。

想了以下4種解決方案。我感覺pandas應該是最快的,不過在不能呼叫第三方庫的情況下,可以試試前面幾種哪個快些。

ls = ['a','a','a','b','b','c']

countdict = dict()

proportitiondict = dict()

for i in set(ls):

countdict[i] = ls.count(i)

proportitiondict[i] = ls.count(i)/len(ls)

print(countdict)

print(proportitiondict)

ls = ['a','a','a','b','b','c']

countdict = dict()

proportitiondict = dict()

for i in ls:

countdict[i] = countdict.get(i,0) + 1

for i in countdict:

proportitiondict[i] = countdict[i]/len(ls)

print(countdict)

print(proportitiondict)

from collections import counter

ls = ['a','a','a','b','b','c']

countdict = counter(ls)

proportitiondict = dict()

for i in countdict:

proportitiondict[i] = countdict[i]/len(ls)

print(countdict)

print(proportitiondict)

counter()類只有自動計數功能,沒有自動求比例的功能。有乙個獲取頻數最高的前n個元素的方法:

counter('abracadabra').most_common(1)
括號裡的引數代表獲取出現次數最多的前幾個元素,不填引數則按頻數從高到低輸出所有。

import pandas as pd

ls = ['a','a','a','b','b','c']

se = pd.series(ls)

countdict = dict(se.value_counts())

proportitiondict = dict(se.value_counts(normalize=true))

print(countdict)

print(proportitiondict)

value_counts()返回的是series,而且帶有自動按頻數排序的功能,比如想獲取出現次數最多的前2個:

se.value_counts().iloc[:2]

Python 列表元素統計

列表元素統計方法 1.使用字典 對列表元素進行一次遍歷,將結果保留在字典中 2.使用集合和內建函式 將列表轉化為集合,得到所有不同元素,對不同元素呼叫 list.count item 以統計次數 第二種方法的簡單應用 coding utf 8 question 有乙個數字列表,找出列表 現次數超過列...

python刪除列表元素 Python列表元素分組

比如列表 0,0,0,1,1,2,3,3,3,2,3,3,0,0 分割成 0,0,0 1,1 2 3,3,3 2 3,3 0,0 如何解決這樣的問題呢?1 首先說明,如果這樣的題目都不能寫出 原因在基本的迴圈判斷沒有搞清楚。2 黃哥在如何訓練自己的程式設計思路 文章所說的,做習題,要像開發專案的流程...

python列表元素移動 Python列表元素分組

比如列表 0,0,0,1,1,2,3,3,3,2,3,3,0,0 分割成 0,0,0 1,1 2 3,3,3 2 3,3 0,0 如何解決這樣的問題呢?1 首先說明,如果這樣的題目都不能寫出 原因在基本的迴圈判斷沒有搞清楚。2 黃哥在如何訓練自己的程式設計思路 文章所說的,做習題,要像開發專案的流程...