了解到電腦如何存放資料,及如何取得想要的資料之後。接下來,我們要試著用程式化的方法去存取資料。所謂的存取指的是怎麼將資料轉到程式中的變數裡,如此一來,就能透過程式的邏輯進行更多的操作。在Python 程式語言初探 - 操作篇有講過,Python 有一些基本的變數類型,像是數值、字串、以及容器等等。除了這些基本的變數之外,Numpy 與 Pandas 提供了種類似 R 語言 Dataframe 型態的函式庫。
NumPy(Numerical Python)是 Python 的一個擴充程式庫。 它提供了功能強大的 N-dimensional array object 的資料結構,並支援高階大量的維度陣列與矩陣運算。Pandas 主要是基於 NumPy 再增加了 Series 和 DataFrame 兩種資料結構。
Series 是一個一維資料型態,他可以包含其他的一維容器及 NumPy 的 Ndarray。DataFrame 是一種二維的資料型態,有點類似數學中提到的矩陣,或是資料庫中的表格都是二維的。可以透過行(column)或列(Row)分層的索引(index)去操控資料,讓資料分析的彈性半變得完整。
from pandas import Series
# 從 pandas 中引入 Series
obj = Series([4, 7, -5, 3])
# Series 可以帶一般的陣列,預設的 index 從 0 開始
>>> obj = Series([4, 7, -5, 3], index=['d', 'b', 'a', 'c'])
# Series 也可以自訂像是字串的 index
>>> obj = Series({'Ohio': 35000, 'Texas': 71000})
# Series 也可以放像是 dict、 Ndarray 這樣的一維陣列
from pandas import DataFrame
# 從 pandas 中引入 DataFrame
data = {'state': ['Ohio', 'Ohio', 'Ohio', 'Nevada', 'Nevada'],
'year': [2000, 2001, 2002, 2001, 2002],
'pop': [1.5, 1.7, 3.6, 2.4, 2.9]}
frame = DataFrame(data)
# Dataframe 是一個二維的陣列,Column index 是 'state', 'year', 'pop', Row index 是從 0 開始的數值(也可以自訂)
如果把 frame 印出來就會長這樣:
>>> frame
pop state year
0 1.5 Ohio 2000
1 1.7 Ohio 2001
2 3.6 Ohio 2002
3 2.4 Nevada 2001
4 2.9 Nevada 2002
Series 或是 DataFrame 都有很多方式可以操作資料,需要花時間好好熟練。把資料操作玩得熟練,可以幫助分析時更加順手。
pandas 的強項在於操作資料,他也支援了各種資料格式的存取。像是 read_csv() 對於 CSV、read_json() 對於 JSON,甚至是 excel 或是 html 都可以透過 pandas 來存取。
import pandas as pd
data = pd.read_csv('file.csv')
data = pd.read_excel('file.xls', 'sheet')
data = pd.read_html('url')