私はこのようなデータを持っています。メディアンを見つける方法
Ram,500
Sam,400
Test,100
Ram,800
Sam,700
Test,300
Ram,900
Sam,800
Test,400
上記のデータから「中央値」を細かくする最短の方法は何ですか。 結果は次のようになります。
Median = 1/2(n + 1)ここで、nはサンプルのデータ値の数です。
Test 500
Sam 700
Ram 800
私はこのようなデータを持っています。メディアンを見つける方法
Ram,500
Sam,400
Test,100
Ram,800
Sam,700
Test,300
Ram,900
Sam,800
Test,400
上記のデータから「中央値」を細かくする最短の方法は何ですか。 結果は次のようになります。
Median = 1/2(n + 1)ここで、nはサンプルのデータ値の数です。
Test 500
Sam 700
Ram 800
numpy's medianを使用してください。
そのデータが実際にどのように表現されるかはほとんど不明では、私はそれがタプルのリストであると仮定しました:
data = [('Ram',500), ('Sam',400), ('Test',100), ('Ram',800), ('Sam',700),
('Test',300), ('Ram',900), ('Sam',800), ('Test',400)]
from collections import defaultdict
def median(mylist):
sorts = sorted(mylist)
length = len(sorts)
if not length % 2:
return (sorts[length/2] + sorts[length/2 - 1])/2.0
return sorts[length/2]
data_dict = defaultdict(list)
for el in data:
data_dict[el[0]].append(el[1])
print [(key,median(val)) for key, val in data_dict.items()]
print median([5,2,4,3,1])
print median([5,2,4,3,1,6])
#output:
[('Test', 300), ('Ram', 800), ('Sam', 700)]
3
3.5
リストから中央値を返しますmedian
機能。エントリ数が偶数の場合は、中間の2つのエントリの中間値をとります(標準です)。
私はdefaultdictを使用して、データとその値でキーを作成しました。これはデータのより有用な表現です。
たぶん機能を試してみてくださいあなたが 'n = len(ソート) 'を除外した場合、少し明確になります。 –
空リストでmedian()がクラッシュする場合は、最初に' if not mylist:return 0'を追加するとよいでしょう。 – OlivierBlanvillain
@OlivierBlanvillainクラッシュすることはありませんが、例外が発生します。空のリストの中央値が* undefined *であり、確かに "0"ではない(これは '[2、-1,0]'のようなものの中央値です) –
整数データとリストの中央値を取得するための最も簡単な方法:
x = [1,3,2]
print "The median of x is:",sorted(x)[len(x)//2]
誰かがそれを調べるために://分割を切り捨てることを意味します(これはPython 2.xの通常の分割と同じです) – Bemmu
これは正しく動作しません偶数の要素に対して。 –
チェックこのアウト:
def median(lst):
even = (0 if len(lst) % 2 else 1) + 1
half = (len(lst) - 1)/2
return sum(sorted(lst)[half:half + even])/float(even)
注:
sorted(lst)
がlst
のソートされたコピーを生成します。
sum([1]) == 1
;あなたがメソッドstatistics.median
使用できるように
のPython 3.4は、組み込みのstatisticsが含まれています
>>> from statistics import median
>>> median([1, 3, 5])
3
を私はuser3100512の答えを開始し、すぐにそれはアイテムの数が偶数では動作しません実現しました。中央値を計算するためにいくつかの条件を追加しました。あなただけの中央値アルゴリズムを探しているなら
def median(x):
if len(x)%2 != 0:
return sorted(x)[len(x)/2]
else:
midavg = (sorted(x)[len(x)/2] + sorted(x)[len(x)/2-1])/2.0
return midavg
median([4,5,6,7])
は5.5
を返すべきである[これ](http://stackoverflow.com/questions/7578689/median-code-explanation) –