【動態圖表實作】S&P500 ETF 10年以上漲跌圖

這次打算抓資料分析 S&P 500 這10多年來的價位變化,看看 S&P 500 這種指數 ETF 是不是真的像大家說的賣著放 10年、20年一定會獲利。 S&P 500 的數據來自 Yahoo 提供的 csv 資料檔,一開始想用爬蟲通過 beautifulsoup 或是 scrapy 把數據抓下來,但是 Yahoo 已經提供了 csv 資料檔,也就沒有利用爬蟲的必要了。 把資料抓取下來後,利用 Pandas 作資料清洗的動作,把多餘的資料清除掉。 2011年至2020年的價位變化 從2020年12月31日往前看10年, S&P 500 價位從,目前為止符合大家所說的 ETF 10年會營利。 (滑動圓形按鍵可調整區間範圍) 2001年至2010年的價位變化 發現2010年12月31日時, S&P 500 的價位相較於10年前稍微低了一點。 2001年至2020年的價位變化 再觀察2001年至2020年的價位變化,觀察2001年1月1日至2020年12月31日的 S&P 500 價位變化。  即使從長遠的角度看,S&P 500 ETF 買入的時機點也很重要,並不完全是大家說的買著放 10 年就會獲利。根據以上圖表,S&P 500 ETF 作為長期投資還是很合適的,個人會建議持有 至少10 年以上。 資料抓取來源:Yahoo

【正規表達法練習】用正規表達法快速抓取所有上市公司代號

學習於: 2021 年 1 月 7 號 這次練習用正規表達法快速抓取所有上市公司代號,學習來源:大樹數據YouTube。 輸出 res 文字。 輸出的是看不懂的亂碼。 這時候輸出的內容就可以看懂了。 發現資料都放在 Table 中。 仔細看內容不是我們要找的,沒有上市公司的資料。 往下找。 可以看到資料都在這裡。 取得純文字內容。 \d: 抓去所有都是數字,把上市公司代碼抓下來。 這樣就可以抓到每個上市公司的代碼啦。

【用 Pandas 比較方案】比較 iPhone12 相關的預購方案

學習於: 2021 年 1 月 6 號 這次練習的是比較iPhone12 相關的預購方案,學習來源:大樹數據YouTube。 抓取 iPhone12 相關的預購方案,比較分析看哪個預購方案更優惠。 來到中華電信的 iPhone12 預購頁面會看到以下畫面。 往下滑會看到「精采5G購機方案」。 發現資料放在表格之中, 資料在 table,可以用更簡單的方式。 點擊 Headers,複製 URL。 輸出 dfs[0]。 把 dfs[0] 定義為 df。 輸出 df.head()。 輸出 df.head()。 把月份填上。 輸出 df.head() 查看。 輸出 df.head()。 去除月繳金額含「個月」的資訊。 查看 df2.columns 把錢轉換成整數。

【抓取黃金價格】用 Pandas 判斷黃金最佳買入點

學習於: 2021年1月5號 這次練習的是歷史黃金存摺牌價查詢,學習來源:大樹數據YouTube。 判斷買入黃金的最佳時機。 查詢期間改為 「最近一年」,其他不變(照下圖)。 設定完後,打開開發人員畫面,來到 network,在preserve log 以及 disable cache 打勾後點擊查詢。 會來到這個頁面: https://rate.bot.com.tw/gold/chart/year/TWD,在開發人員工具的左下角可以看到有 77 個回應。 2021/1/5的本行買入價格是 1,730元。 在開發人員工具,點擊 Ctrl + F,輸入1730,按 Enter 發現有 4 項符合,分別點開,發現是 228 行是我們要找的。 第 228 行的顯示結果。 發現資料都存在 table 底下(213 行)。 點擊 Headers ,我們可以通過 URL 用 GET 的方法取得資訊。 複製 URL,打開 Jupyter Notebook。 dfs 是個 list。 可以通過簡單的技術分析,通過線圖,畫出 G 線,如果資料漲超過 G 線,就是黃金交叉,可以買。 …

【抓取黃金價格】用 Pandas 判斷黃金最佳買入點 Read More »

【Pandas 操作練習】使用Python Pandas 讀取實價登錄網的資料

學習於: 2021年1月5號 這次練習的是內政部不動產交易實價查詢服務網,學習來源:大樹數據YouTube。 點擊右下角的 Open Data 免費下載及批次資料申請,會來到以下畫面。 選擇最新的資料,CSV 格式,下載後解壓縮放到 lvrdata 文件夾底下。 如果要使用資料,建議用 csv 檔。 點擊 a_lvr_land_b.csv 開啟的檔案長這樣 把 csv 檔案放到和 python 檔案同樣文件夾底下。 這樣就讀得到檔案了。 如果加上 encoding=’big5′ 會出現 unicode decode error 這時候需要清除不要的 byte,先下載 git 下載多個季度的資料,放在 lvrdata2 底下。 命名為 109_3,109_2,109_1。 會出現下載的檔案名稱 把 f 替代進路徑裡頭 自動產生路徑結果: lvrdata2/109-3/a_lvr_land_b.csv lvrdata2/109_1/a_lvr_land_b.csv lvrdata2/109_2/a_lvr_land_b.csv 輸出 dflist 的長度 把 dataframe 合併在一起 輸出 df_all 的長度 得到數據統計 …

【Pandas 操作練習】使用Python Pandas 讀取實價登錄網的資料 Read More »

【待完成 #TODO】資料清洗前期作業

字串操作是資料清洗必備的基礎,可以通過解析 HTML,但純字串解析 HTML 會導致程式容錯,不便維護,因此一般不建議這樣操作。 以中國鐵路為例,網址在這:中國鐵路,要找到網站資訊,在 Network -> JS 標籤,在 name 底下找到 station_name.js。 點擊 2 下就會看到下圖 字串操作主要用於個別資料清洗,且資料具有一定的特性,如下圖。 內容分析下來發現,每個城市有 5 個資訊,從特殊字元”@” 開始,每個資訊之間使用”|”隔開,如果想取得第二和第三個資訊,可以根據其特性”|”進行字串分割,程式如下: 輸出結果:{‘北京北’: ‘VAP’} 原先預計獲取完整資料,待完成。 ___________ 除了 split 對字串進行分割之外,資料設定值之前需要用 replace() 取代空白內容。 在一些設計不標準的網站中,HTML 重的資料經常帶有空白內容和特殊符號,可以使用 replace() 對這種資料進行清洗。

python find() 和index() 方法以及差別

字串.find find 函數會回傳符合字元的第一內容位置。 格式:字串.find(’要尋找的內容’,尋找的起始位置,尋找的結束位置) 如果尋找的起始位置和結束位置為空值,則表示尋找所有位置。 如果要找的內容不在尋找的範圍,回傳值為 -1。 尋找全部 從字串第 n 個開始尋找 從字串的第4個開始尋找,尋找的範圍從第5個字元開始尋找。 從字串第 n 個到第 n+x 個開始尋找 從字串第 2 個到第 6 個開始尋找 尋找不存在的內容 如果內容中沒有要尋找的字元,則輸出內容為-1。 字串.index 使用 index 函數和使用 find 函數類似,它們的差別在於如果找到符合的字元,會回傳 ‘substring not found’。

【Python 擷取字串】Slicing 利用 Python 擷取部份字元

擷取字串 格式:字串[開始位置 : 結束位置 : 間隔位置] 開始位置為0,負數代表從右邊開始。預設從0開始,結束位置是被截取的字串位置。 擷取字串 擷取第一位到第三位的字元 以 str[0:3:]表示。 0代表著字元從0開始,3代表著3個字元。 擷取字串的全部字元 擷取第7個字元到結尾 擷取字串開始到倒數第2個字元 擷取第3個字元 擷取倒數第2個字元 倒數的字元從 -1 開始,所以倒數第2個字元是以 str[-1] 表示。 擷取與原字串順序相反的字串 擷取倒數第三位與倒數第一位之前的字元 擷取倒數第三位到結尾的字元 反向擷取字元 這裡的開始位置代表 -1。 以 str=’abcdefgh’ 為例,從起始位置’h’算起,到倒數第四 (-5+1),也就是 ‘d’ 位置,字串區間為 ‘hgfe’。 而其中它們之間需要間隔3(間隔位置為 -3),因此為 ‘he’。

【爬 Google 網頁】如何用 Selenium 爬取 Google 網頁資料?

這篇文章會介紹爬 Google 首頁的詳細步驟,這次用的是 Selenium 模擬真人爬 Google 網頁。 準備工作 在開始爬蟲之前,先下載 Selenium。 2. 把 下載的 webdriver 與 python 文件檔放到同樣檔案底下。 3. 從 Selenium 的 library 中引入 webdriver 4. 打開 Chrome 5. 執行到這裡, Chrome 會跳出,並顯示以下畫面。 可以看到,上面會顯示 「Chrome 目前受到自動系統軟體控制。」 6. 在 driver.get() 之間,放入想爬的網址。這次我們爬的是 Google , 就放 Google 主頁。 7. 點擊執行,會出現爬的網站頁面。 打開開發人員工具 8. 滑鼠右鍵,點擊檢查,打開開發人員工具。 會看到像這樣的畫面 開始爬蟲 9. 找到輸入欄位的程式 10. 用程式找到輸入欄的位置,以 q …

【爬 Google 網頁】如何用 Selenium 爬取 Google 網頁資料? Read More »