程式設計與資料科學導論

week 3

謝舒凱

本週學習內容

  • 資料科學的社會背景與數據識讀
  • 了解程式語言與程式設計的概念,以及 python 基本語法

數據識讀

  • 深偽 (用數據鬼扯) 的時代的核心思辨素養:用數據回答問題,不被數據假象操弄。
  • 當代的屁話哲學 On Bullshit (Harry Frankfurt): 一種【認為事實真相如何都沒有差別的態度】。

一句話惹惱維根斯坦

【我覺得自己像隻被車輾過的狗一樣】。。

她犯的錯,並不在於她沒有做對的事情,而在於她甚至沒有想過去做對它。

與時俱進的鬼扯

老派鬼扯

  • 「如同先賢烈祖,我們望向那廣袤無邊的偉大國土,帶著堅定心智與滿腔熱血,要重燃吾民那同舟一命卻暫熄的火花」 (

    ....饒了我們吧...

    )

(Bergstrom and West, 2020)

新派鬼扯

  • 「經匯率調整後,敝公司績效最佳的全球型基金在過去九年中有七年優於大盤」
    *

    收益表現的調整方式究竟是什麼?這家公司有幾檔基金表現不如大盤?差多少?九年中有七年表現優於大盤的是同一檔基金嗎?或者好幾檔不同基金在那七年中各有一年獲得優於大盤的表現呢)

新派鬼扯識讀練習

  • 「經由我們系統性篩選顯示,有搗亂行為問題的二年級學生中,34% 承認過去一年內曾經聞過麥克筆至少一次。」

Basic Python

  • Data types
  • Variables
  • Operators and expressions
  • Statements

有幾個概念先要釐清

📱chatGPT

  • python 是一個程式語言。

    • 需要一個編譯器 (interpreter) 來執行。
  • IPython 是一個強化版的 Python 互動式命令列介面.

    • The IPython Notebook (互動式筆記本) is now known as the Jupyter Notebook

So where do I write/run my code?

課堂練習

我們用一個 hello ntu 的例子來看看

分別用單純 VSCode、VSCode 延伸套件 Jupyter packageJupyter NotebookGoogle Colab 來執行。

資料型別 Data types

內建 (built-in)

  • 基本資料型別(primitive data types)
  • 複合資料型別 (composite Data Types)
  • 特殊型別: NoneType: 有一個值 None,表示缺少值或空值。

第三方 (in third-party packages)

  • DataFrame in Pandas
  • ndarray in Numpy

內建基本資料型別

- int (整數): 例如 1, 100, -33 等。
- float (浮點數): 例如 1.0, 3.14, -0.001 等。
- str (字串): 例如 "Hello", 'Python' 等。
- bool (布林): 只有兩個值 - True 和 False。

內建複合資料型別

- list (列表): 一個有序的元素集合,例如 [1, 2, 3] 或 ["apple", "banana", "cherry"]。
- tuple (元組): 類似於列表,但是元素不能修改,例如 (1, 2, 3)。
- set (集合): 一個無序且不重複的元素集合,例如 {1, 2, 3}。
- dict (字典): 一個存儲鍵值對的無序集合,例如 {"name": "John", "age": 30}。
  • 特殊資料型別

    • 空值 (None)
  • 自訂資料型別

    • 類別 (Classes)

可用 type() 函數來檢查資料型別

變數 Variables

  • 變數是用來儲存資料的容器。
  • 變數的名稱可以是任何合法的識別字 (identifier)。
  • 變數的命名規則:
    • 只能包含字母、數字和底線 (A-z, 0-9, and _ ),不能包含空格。
    • 不能以數字開頭。
    • 不能使用保留字 (reserved words)。
  • 變數的給定,是用等號 = (assignment statement) 來指定。

Operators and expressions

  • 運算子 (operator) 是用來執行特定的任務。
  • 運算元 (operand) 是運算子所作用的對象。
  • 運算式 (expression) 是由運算子和運算元所組成的序列。
  • 運算式的結果是一個值 (value)。

Arithmetic operators

x =2, y = 5

Relational operators

Assignment operators

Logical operators

Bitwise operators

x =2, y = 5 (use bin() to convert to binary)

Set operators

優先性

  • 優先性 (precedence) 是運算子的優先順序。

陳述式 (Statement)

📱chatGPT

  • 陳述式是一個完整的指令,用來執行特定的任務。

  • 一個程式語言的語法 (syntax) 是由一系列的陳述式 (statement) 所組成。

    • assignment statement, if statement, for statement, while statement, ..
  • 注意:運算式 (expression) 是一個會返回值的計算 (3+4)
    陳述式 (statement) 是一個執行動作,但不返回值。(x=3+4)

學習與輔助資源

  • 請善用限時教育版的 datacamp, 你一定會升級!

  • 其他免費的高品質學習資源還有:freecodecampCoursera

  • 透過 chatGPTGithub copilot X 來學習程式語言的語法,並且練習自己先寫程式。(也可讓 AI 家教幫你出題再練習)。

pip3 install --upgrade pip

pip3 install jupyter

jupyter notebook

- 運算式的結果可以是一個物件 (object)。