<jupyter_start><jupyter_text>* 作業目標：  * 計算有缺失值的資料，統計量實作 * 作業重點：  * 當遇到缺失值有函式可以處理，不須額外寫程式刪除  * 計算統計量時不能出現缺失值 * 題目：  * 【基本題05】     1. 產生一個 1-11 的一維陣列，並且把 3-6 由正數變成負數。     2. 試著從一個隨機陣列中，找出比 0.5 大的數有幾個？   * 【基本題06】     1. 【簡答題】請問下列這三種方法有什麼不同？     ```     print(a.sum())      print(np.sum(a))     print(sum(a))      ```     2. 請對一個 5x5 的隨機矩陣作正規化的操作。     3. 請建立一個長度等於 10 的正整數向量，並且將其中的最大值改成 -1。    * 【進階題05_v1】```  english_score = np.array([55,89,76,65,48,70])  math_score = np.array([60,85,60,68,55,60])  chinese_score = np.array([65,90,82,72,66,77])```     上3列共六位同學的英文、數學、國文成績，第一個元素代表第一位同學，舉例第一位同學英文55分、數學60分、國文65分，運用上列數據回答下列問題。     1. 有多少學生英文成績比數學成績高?     2. 是否全班同學最高分都是國文?  * 【進階題05_v2】```english_score = np.array([55,89,76,65,48,70])math_score = np.array([60,85,60,68,np.nan,60])chinese_score = np.array([65,90,82,72,66,77])```     上3列共六位同學的英文、數學、國文成績，第一個元素代表第一位同學，舉例第一位同學英文55分、數學60分、國文65分，今天第五位同學因某原因沒來考試，導致數學成績缺值，運用上列數據回答下列問題。     1. 請計算各科成績平均、最大值、最小值、標準差，其中數學缺一筆資料可忽略?     2. 第五位同學補考數學後成績為55，請計算補考後數學成績平均、最大值、最小值、標準差?     3. 用補考後資料找出與國文成績相關係數最高的學科?<jupyter_code>import numpy as np
print( 'NumPy 版本: ', np.__version__ )<jupyter_output>NumPy 版本:  1.19.2<jupyter_text>【基本題05】<jupyter_code>#1. 產生一個 1-11 的一維陣列，並且把 3-6 由正數變成負數。
a = np.arange(11)+1
print(a)

a[(3 <= a) & (a < 7)] *= -1
print(a)
#2. 試著從一個隨機陣列中，找出比 0.5 大的數有幾個？
b = np.random.rand(3, 6)
print(b)

print(b[b > 0.5].size)<jupyter_output>[[0.2333607  0.15583061 0.8633127  0.66629102 0.69835116 0.94573644]
 [0.03956573 0.16276819 0.9094251  0.89282478 0.73940203 0.66462101]
 [0.34872858 0.93984373 0.4614102  0.40843081 0.07095749 0.82438326]]
10<jupyter_text>【基本題06】<jupyter_code>#1. [簡答題] 請問下列這三種方法有什麼不同？
a = np.arange(6)
print(a.sum())
print(np.sum(a))
print(sum(a)) 

# a.sum() 及 np.sum(a) 為陣列之函式，結果相同，會回傳所有數值的總和
# sum(a) 為 python 之函式，則會回傳依軸加總後的陣列，所有型態皆可使用
#2. 請對一個 5x5 的隨機矩陣作正規化的操作
A = np.random.random((5, 5))
norA = (A-A.min()) / (A.max()- A.min())
print(A, norA, sep = '========\n')
#3. 請建立一個長度等於 10 的正整數向量，並且將其中的最大值改成 -1
B = np.random.randint(1,100,10)
print(B)
print('='*20)
B[B.argmax()] = -1
print(B)<jupyter_output>[18 50 35 96 56 71 99 93 69 93]
====================
[18 50 35 96 56 71 -1 93 69 93]<jupyter_text>【進階題05_v1】<jupyter_code>english_score = np.array([55,89,76,65,48,70])
math_score = np.array([60,85,60,68,55,60])
chinese_score = np.array([65,90,82,72,66,77])
#1.有多少學生英文成績比數學成績高?
np.greater(english_score, math_score)
#2.是否全班同學最高分都是國文?
CH_EN = np.greater(chinese_score,english_score)
CH_MA = np.greater(chinese_score,math_score)
np.all(np.logical_and(CH_EN, CH_MA))<jupyter_output><empty_output><jupyter_text>【進階題05_v2】<jupyter_code>english_score = np.array([55,89,76,65,48,70])
math_score = np.array([60,85,60,68,np.nan,60])
chinese_score = np.array([65,90,82,72,66,77])
#1. 請計算各科成績平均、最大值、最小值、標準差，其中數學缺一筆資料可忽略?

subject_list = ['英文', '數學', '國文']
score_list = [english_score, math_score, chinese_score]
for subject, score in zip(subject_list, score_list):
    if not np.any(np.isnan(score)):
        print( subject, '的成績:沒有缺漏值' )
        print( '平均 = ', np.mean(score) )
        print( '最大值 = ', np.max(score) )
        print( '最小值 = ', np.min(score) )
        print( '標準差 = ', np.std(score), '\n' )
    else: 
        print( subject, '的成績:含有缺漏值' )
        print( '平均 = ', np.nanmean(score) )
        print( '最大值 = ', np.nanmax(score) )
        print( '最小值 = ', np.nanmin(score) )
        print( '標準差 = ', np.nanstd(score) )
        print( '缺漏值:', np.isnan(score), '\n' )
#2. 第五位同學補考數學後成績為55，請計算補考後數學成績平均、最大值、最小值、標準差?

math_score[4] = 55
print( math_score )
print( '數學補考後:' )
print( '平均 = ', np.nanmean(math_score) )
print( '最大值 = ', np.nanmax(math_score) )
print( '最小值 = ', np.nanmin(math_score) )
print( '標準差 = ', np.nanstd(math_score) )
#3. 用補考後資料找出與國文成績相關係數最高的學科?

print( '國文與數學的相關係數: \n', np.corrcoef(chinese_score, math_score), '\n' )
print( '國文與英文的相關係數: \n', np.corrcoef(chinese_score, english_score) )<jupyter_output>國文與數學的相關係數: 
 [[1.         0.74056803]
 [0.74056803 1.        ]] 

國文與英文的相關係數: 
 [[1.         0.97792828]
 [0.97792828 1.        ]]
{'fraction_non_alphanumeric': 0.19084158415841584, 'fraction_numerical': 0.12128712871287128, 'mean_word_length': 4.505449591280654, 'pattern_counts': {'":': 0, '<': 19, '<?xml version=': 0, '>': 18, 'https://': 0, 'lorem ipsum': 0, 'www.': 0, 'xml': 0}, 'pii_count': 0, 'substrings_counts': 0, 'word_list_counts': {'cursed_substrings.json': 0, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
{'chain_length': '5', 'dir': 'jupyter-structured-clean-dedup', 'id': '101545', 'license': 'MIT', 'n_tokens_mistral': 2773, 'n_tokens_neox': 2757, 'n_words': 287, 'path': 'Homework/Day_05_Homework.ipynb', 'repo_name': 'sueshow/Data_Science_Marathon', 'size': '4040'}