前言
本文為「成為 Python 數據分析達人的第一堂課」課程的學習筆記。
Pandas
Pandas 是一個像是 Excel 的 Python 擴充程式庫。
1 | %matplotlib inline |
使用魔術方法查看資料夾內容。
1 | %ls |
讀取一個 CSV
檔。
1 | 'grades.csv') df = pd.read_csv( |
取得前五列資料。
1 | df.head() |
取得整行「國文」的資料。
1 | '國文'] df[ |
將整行「國文」的資料放進陣列。
1 | cg = df.國文.values |
使用 mean()
函數取得「國文」的平均値。
1 | cg.mean() |
使用 std()
函數取得「國文」的標準差。
1 | cg.std() |
使用 plot()
函數畫出折線圖。
1 | df.國文.plot() |
使用 hist()
函數畫出直方圖。
1 | False) df.國文.hist(grid= |
grid
參數代表是否有網格。
基本數據分析
使用 describe()
函數算出常用的基本統計數據。
1 | df.describe() |
使用 corr()
函數算出各科之間的相關係數。
1 | df.corr() |
使用 corr()
函數算出「國文」與「數學」之間的相關係數。
1 | df.國文.corr(df.數學) |
使用 sum()
函數算出總級分,並新增到陣列內。
1 | '總級分'] = df.sum(axis=1) df[ |
sum()
函數的axis
參數是1
代表將同一列相加。
新增一個加權過的主科成績到陣列內。
1 | '主科'] = df.數學*1.5 + df.英文 df[ |
使用 sort_values()
函數先對「總級分」進行排序,再對「主科」進行排序。
1 | '總級分', '主科'], ascending=False).head(20) df.sort_values(by=[ |
ascending
參數為False
代表降冪排序。
組裝 DataFrame 物件
建立一個亂數矩陣。
1 | 4, 3) mydata = np.random.randn( |
建立一個 DataFrame 物件。
1 | list("ABC")) df1 = pd.DataFrame(mydata, columns= |
建立第二個 DataFrame 物件。
1 | 3, 3), columns=list("ABC")) df2 = pd.DataFrame(np.random.randn( |
合併二個 DataFrame 物件,方向是列的方向。
1 | 0) df3 = pd.concat([df1, df2], axis= |
重新編排索引。
1 | range(7) df3.index = |
合併二個 DataFrame 物件,方向是行的方向。
1 | 1) df4 = pd.concat([df1, df2], axis= |
統計 UFO 目擊數量
讀取線上 CSV 檔。
1 | 'http://bit.ly/uforeports') df = pd.read_csv( |
使用 groupby()
函數群組化特定欄位,並且計數。
1 | 'State').count() df_state = df.groupby( |
以 Time
欄位進行排序,並且實際改變原來的 df_state
變數。
1 | "Time", ascending=False, inplace=True) df_state.sort_values(by= |
畫出長條圖。
1 | 10].Time.plot(kind="bar") df_state[: |
定位特定資料
建立一個 DataFrame 物件。
1 | 5, 3), df = pd.DataFrame(np.random.rand( |
列出 B 行大於 0 的資料。
1 | 0] df[df.B > |
使用 loc()
函數定位特定範圍的資料。
1 | 2:3, "B":"C"] df.loc[ |
更改特定範圍的資料。
1 | 0, "C"] = 0 df.loc[df.B > |
分析股票資料
先在 Anaconda 終端機安裝 pandas-datareader
套件。
1 | conda install pandas-datareader |
如果出現以下錯誤:
1 | ImportError: cannot import name 'is_list_like' |
則直接到儲存庫下載下來重新安裝。
1 | pip install git+https://github.com/pydata/pandas-datareader.git |
讀取 Yahoo 特定期間 Apple 公司的股票資料。
1 | "AAPL", "yahoo", start="2012-09-01", end="2017-08-31") df = web.DataReader( |
將這五年內的收盤價畫出來。
1 | "Adj Close"] P = df[ |
使用 diff()
函式計算報酬率,並畫出圖來。
1 | r = P.diff()/P |
使用 rolling()
函式以每 20 天為區間計算平均値,並畫出圖來。
1 | 20).mean().plot() P.rolling(window= |