Python入門:數值分析代碼

教程來自扇貝編程

常用數據分析:
包括平均數、中位數、分位數狠怨、眾數、極差邑遏、方差佣赖、標準差等等


附代碼:

# -*- coding: utf-8 -*-
"""
Created on Thu May 16 2019

@author: YangYang
"""

import math

# 輸入數據,假設這是一組訂單的金額
order = [27.0, 15.0, 19.0, 68.0, 32.0, 19.0, 19.0, 120.0, 20.0, 32.0, 12.0]
print("輸入數組:")
print(order)

# 【1】計算均值
get_mean = sum(order)/len(order)  # 計算平均值
get_mean = round(get_mean,2)  # round取小數位后兩位
print('\n')
print("平均數:get_mean =",get_mean)

# 【2】中位數
def get_median(numbers):  #找到numbers最中間的數    
    length = len(numbers)  #length 為numbers中數值的個數    
    sorted_numbers = sorted(numbers)  #將numbers排序记盒,存入sorted_numbers
    mid_point = int(length/2) #中位數的位置憎蛤,需要是int類型    
    if length % 2 == 1: # 如果數值個數為奇數
        median = sorted_numbers[mid_point]
    else: # 如果數值個數為偶數,中位數為中間兩個數 mid_a 和 mid_b 的均值
        mid_a = sorted_numbers[mid_point-1]
        mid_b = sorted_numbers[mid_point]
        median = (mid_a + mid_b)/2    
    return median  # 函數返回 median
median_order = get_median(order)
print('\n')
print("中位數:get_median =",median_order)

# 【3】分位數
def find_nperc(numbers,n): #返回numbers中纪吮,n分位對應的數值是多少    
    sorted_numbers = sorted(numbers) # 先將數值排序     
    n_index = int(n/100 * len(sorted_numbers)) # 找到n分位數值在sorted_numbers中的索引位置    
    return sorted_numbers[n_index]  #函數返回n分位數數值
print('\n')
print("95分位數:find_nperc = {}".format(find_nperc(order,95)))
print('\n')
# 【4】眾數
def get_mode(numbers):  #返回 numbers中出現次數最多的數值(眾數)及其出現次數
    count_num = {}
    max_count_num = []
    # 循環(huán)numbers俩檬,建立字典 count_num {數值:出現次數}
    for num in numbers:
        count_num[num] = numbers.count(num)
    # 循環(huán)count_num
    # 用max() 得到數值出現次數的最大值,賦值給 max_count
    # 將出現次數最大值的數值(眾數)放入 max_count_num
    for num,count in count_num.items():
        if count == max(count_num.values()):
            max_count = count
            max_count_num.append(num)
    return max_count_num,max_count
#將order作為函數 get_mode 的參數    
mode_num, times = get_mode(order)
for num in mode_num:
  print("眾數:get_mode = {}".format(num))
#print("眾數出現次數為{}".format(times))

# 【5】極差
def get_range(data):
    # get_range 為 data 的極差
    cal_range = max(data) - min(data)
    return cal_range
order_range = get_range(order)
print('\n')
print("極差:get_rang = {}".format(order_range))

# 【6】方差
def get_variance(data):
    # 均值在上面已經求解過 get_mean
    get_mean = sum(order)/len(order)
    sum_sqr = 0
    for num in order:
        sum_sqr += (num - get_mean) ** 2
    # 求方差 variance碾盟,其為 sum_sqr 的均值
    variance = sum_sqr / (len(order) -1)
    return variance
variance = get_variance(order)
variance = round(variance,2)
print('\n')
print("方差:get_variance =",variance)


# 【7】標準差
# 用 math 中的 .sqrt() 方法求 std_dev,sqrt表示平方根
get_std_dev = math.sqrt(variance)  # variance ** 0.5
get_std_dev = round(get_std_dev,2)
print('\n')
print("標準差:get_std_dev =",get_std_dev)
print('\n')

# 【8】異常值
# 25分位數值為 q1_num
q1_num = find_nperc(order,25)
# 75分位數值為 q3_num
q3_num = find_nperc(order,75)
# 計算 IQR
iqr = q3_num - q1_num
for o in order:
    if o < (q1_num - iqr * 1.5) or o > (q3_num + iqr * 1.5):
        print("{}是異常值".format(o))

# 【9】數據調整
'''
訂單大于等于 60 元棚辽,標記為 "***";
訂單小于 60元并且大于等于 20元巷疼,標記為 "**"晚胡;
其他情況下灵奖,訂單標記為 "*"。
'''
update_order = []
for o in order:
    if o >= 60:
        update_order.append("***")
    elif o >= 20:
        update_order.append("**")
    else:
        update_order.append("*")
print('\n')
print("數據標記:")
print("訂單大于等于 60 元估盘,標記為 ***")
print("訂單小于 60元并且大于等于 20元瓷患,標記為 **")
print("其他情況下,訂單標記為 *")
print('\n')
print(list(zip(update_order,order)))

print('\n')
input("數據分析完畢")

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
  • 序言:七十年代末遣妥,一起剝皮案震驚了整個濱河市擅编,隨后出現的幾起案子,更是在濱河造成了極大的恐慌箫踩,老刑警劉巖,帶你破解...
    沈念sama閱讀 219,490評論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現場離奇詭異洞渔,居然都是意外死亡磁椒,警方通過查閱死者的電腦和手機,發(fā)現死者居然都...
    沈念sama閱讀 93,581評論 3 395
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來调窍,“玉大人张遭,你說我怎么就攤上這事菊卷〗嗳颍” “怎么了万细?”我有些...
    開封第一講書人閱讀 165,830評論 0 356
  • 文/不壞的土叔 我叫張陵聘裁,是天一觀的道長弓千。 經常有香客問我洋访,道長姻政,這世上最難降的妖魔是什么汁展? 我笑而不...
    開封第一講書人閱讀 58,957評論 1 295
  • 正文 為了忘掉前任妹萨,我火速辦了婚禮乎完,結果婚禮上树姨,老公的妹妹穿的比我還像新娘帽揪。我一直安慰自己转晰,他們只是感情好查邢,可當我...
    茶點故事閱讀 67,974評論 6 393
  • 文/花漫 我一把揭開白布芳撒。 她就那樣靜靜地躺著,像睡著了一般冬耿。 火紅的嫁衣襯著肌膚如雪淆党。 梳的紋絲不亂的頭發(fā)上染乌,一...
    開封第一講書人閱讀 51,754評論 1 307
  • 那天褐望,我揣著相機與錄音瘫里,去河邊找鬼谨读。 笑死铐尚,一個胖子當著我的面吹牛宣增,可吹牛的內容都是我干的。 我是一名探鬼主播誉简,決...
    沈念sama閱讀 40,464評論 3 420
  • 文/蒼蘭香墨 我猛地睜開眼筋量,長吁一口氣:“原來是場噩夢啊……” “哼肋拔!你這毒婦竟也來了性誉?” 一聲冷哼從身側響起,我...
    開封第一講書人閱讀 39,357評論 0 276
  • 序言:老撾萬榮一對情侶失蹤羞海,失蹤者是張志新(化名)和其女友劉穎却邓,沒想到半個月后,有當地人在樹林里發(fā)現了一具尸體,經...
    沈念sama閱讀 45,847評論 1 317
  • 正文 獨居荒郊野嶺守林人離奇死亡初坠,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 37,995評論 3 338
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現自己被綠了彭雾。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片碟刺。...
    茶點故事閱讀 40,137評論 1 351
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖薯酝,靈堂內的尸體忽然破棺而出半沽,到底是詐尸還是另有隱情爽柒,我是刑警寧澤,帶...
    沈念sama閱讀 35,819評論 5 346
  • 正文 年R本政府宣布者填,位于F島的核電站浩村,受9級特大地震影響,放射性物質發(fā)生泄漏占哟。R本人自食惡果不足惜心墅,卻給世界環(huán)境...
    茶點故事閱讀 41,482評論 3 331
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望榨乎。 院中可真熱鬧怎燥,春花似錦、人聲如沸谬哀。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,023評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽苫纤。三九已至,卻和暖如春涛漂,著一層夾襖步出監(jiān)牢的瞬間篇梭,已是汗流浹背氢橙。 一陣腳步聲響...
    開封第一講書人閱讀 33,149評論 1 272
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留恬偷,地道東北人悍手。 一個月前我還...
    沈念sama閱讀 48,409評論 3 373
  • 正文 我出身青樓,卻偏偏與公主長得像袍患,于是被迫代替她去往敵國和親坦康。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 45,086評論 2 355

推薦閱讀更多精彩內容

  • 描述性統計描述性統計是用來概括诡延、表述事物整體狀況以及事物間關聯滞欠、類屬關系的統計方法。通過統計處理可以簡潔地用幾個統...
    AnthRax閱讀 25,592評論 -1 5
  • 本文您將要了解: 1肆良、數據由什么類型的屬性或字段組成筛璧? 2、每個屬性具有何種類型的數據值惹恃? 3夭谤、哪些屬性是離散的?...
    Mickey_Q閱讀 3,051評論 0 0
  • 目錄 1. 數據類型1.1 數值數據連續(xù)和離散1.2 分類數據定序和定類1.3 數值數據和分類數據的比較 2. 概...
    IntoTheVoid閱讀 1,029評論 1 3
  • 利用數據的圖表展示數據巫糙,可以對數據的分布形狀和特征有一個大致的了解朗儒。但是要全面的把握數據的分布特征,還需要找到反映...
    沒有那么委屈閱讀 2,468評論 0 4
  • CDA level I考試大綱 Part1 數據分析概念與統計學基礎 占考試比例的30%; 共分5個知識方向采蚀,考試...
    嬛嬛非甄嬛閱讀 2,142評論 0 7