白準-2108(Python)-統計学


白駿2108

統計学



算術平均値と最貧値に注意すれば,苦労せずに解くことができる.
平均値はround関数で簡単に求めることができます.
最も頻繁な値は出現回数によって求められるため,Counterというクラスを用いて各数字が何回出現したかを知る.
(カウンタはソートされていないので、most commonでソートされたリストを返します.)
most commonで返された結果は(数,回数)形式であるため,1番目と2番目が同じ回数であれば2番目の値が出力され,そうでなければ1番目の値が最も多く現れるため出力される.
ここで使用するカウンタもsetで同じ効果を生み出すことができますが、タイムアウトします.
(ほとんどの場合、ライブラリはより高速と考えられます.)

コード#コード#

import sys

input = sys.stdin.readline
N=int(input())
arr = []
for _ in range(N):
    arr.append(int(input()))

#1 산술 평균 (소수점 첫 번째 자리에서 반올림)
print(round(sum(arr)/N))

#2 중앙값
arr.sort()
print(arr[N//2])

#3 최빈값
from collections import Counter
k=Counter(arr).most_common()


if len(arr) > 1:  #만약 입력값이 하나면 , 그게 최빈값이 되므로 예외처리
    if k[0][1] == k[1][1]:
        print(k[1][0]) 
    # 최빈값의 빈도수를 비교하여, 2개이상의 최빈값이 있으면 두번째로 작은것을 출력
    else:
        print(k[0][0]) 
else:
    print(arr[0]) 

#4 범위
print(arr[-1] -  arr[0])

四捨五入を実現する方法


Pythonでround関数を用いて0.5を四捨五入すると,整数部分偶数は半捨五入,奇数は四捨五入となる.これはPythonが使用するround内蔵関数がround half up方式ではなくround half偶数方式であるためである.
ex)つまり3.5の場合,四捨五入が4,4.5の場合,半捨五入が4となる.
この問題を解決するために、丸め誤差のない固定小数点を使用する場合は、10進モジュールのDecimalを使用します.Decimalは10進数で正確な小数位数を表します.
import decimal

decimal.Context = decimal.getcontext()

decimal.Context.rounding = decimal.ROUND_HALF_UP
このようにdecimalモジュールを読み込み、round関数の優先パラメータを変更します.
round(decimal.Decimal(4.5), 0)
このように四捨五入式の四捨五入を体現することができる.

CollectionsモジュールのCounterクラス


clear():カウンタオブジェクトからすべてのkey-valueペアを削除
copy():カウンタオブジェクトのコピーを返します.
Elements():カウンタ数値で要素を返します.
  • リストを使用してカウンタオブジェクトを作成した場合は、リストに変換するのが簡単です.順番が変わった.
  • get():keyをパラメータとして入力し、そのkeyに一致する値を返します.
    items():key,value対はtupleに戻る
    keys():カウンタオブジェクトを返すkey
    most common():最も頻繁なkeyは、valueペアからtupleに戻ります.数値(個数)をパラメータに渡すと、最も周波数の高いペアから等しいペアのみが返されます.
    pop(), popitem()
  • pop():パラメータを使用して鍵を渡し、鍵に一致する値を返し、カウンタオブジェクトから鍵と値のペア
  • を削除する必要があります.
  • popitem():渡されていないパラメータは、一番後ろのキーと値のペアをtuple形式として返し、カウンタオブジェクトから
  • を削除します.
    setdefault():カウンタオブジェクトにキーと値ペアを追加する
  • 個の鍵を送信するだけで、DIPORTRONONE
  • とカウントされます.
  • キーを持つdefault=10が渡されると、入力数字はそのキーに対応するカウントに
  • と反映される.
    subtract():iterableを渡すと、各要素の値がそれぞれ減算され、結果のカウントが負になる可能性があります.
    update():iterableを転送して同じ値がある場合にカウントを追加し、ない場合は新しいキーと値ペアを作成します.
    values():カウンタオブジェクトのvalues(カウント)を返します.