數據分析救星!3 個實用但常被忽略的 Google Colab 功能

相信很多人在做數據分析或資料清理的時候,都會使用 Google Colab、Jupyter Notebook 這些工具,其中 Colab 因為免安裝、易分享、可以跑 GPU 等等的特性,最近越來越多人在使用,老師們在線上課程教學上也很方便,但其實很多人不知道 Colab 有一些比較隱藏容易被忽略的實用功能,學會的話可以讓數據分析更加事半功倍唷!

Interactive Table (互動式表格)

原本的 Colab 表格就跟 Jupyter 表格是一樣的,如果要篩選或排序就要另外利用 Pandas 寫 sort_values、filter 或是 query 的語法,而我最近做爬蟲整理資料時發現,有個功能可以將原本的表格轉為互動式的,直接透過點按來做篩選、排序、分頁等等的效果。

這個功能預設是關閉的,有兩種方式可以轉換成互動式

  • 執行下列程式碼開啟/關閉功能(建議)
from google.colab import data_table
# 開啟功能
data_table.enable_dataframe_formatter()
# 關閉功能
data_table.disable_dataframe_formatter()
  • 在表格輸出後,點擊表格右上方的按鈕

轉換按鈕如下圖的紅框處,但這方法需要每次表格產出時都按一次,如果想要每個表格都直接產出互動式表格的話,還是建議執行上面的程式碼來一次搞定~

轉換後的互動式表格會長下方這樣

閱讀更多»

奧運即時比分 LINE 通知 (Python + LINE Notify)

當家裡沒電視、沒辦法看奧運轉播,卻很想知道中華隊現在比數如何的時候,發現 Google 有即時更新的比分,於是打開 F12 看了一下 XHR,有一個開頭是 torspo 的網址一直在送資料,如下圖。

URL = ‘https://www.google.com/async/torspo?ei=wuEEYZkqiLWYBeK8pYAG&yv=3&p3=1&async=emids:%2Fg%2F11fr0b7qvf,id:lu,ctx:%5Bnull%2Cnull%2C%5B%5B%22ev2%22%2C%22clb%22%2C%22tlb%22%2C%22tv%22%2C%22gs2%22%2C%22msv%22%5D%5D%2Cnull%2C1%2Cnull%2C1%2C%5Bnull%2C%5Bnull%2Cnull%2Cnull%2C%22%2Fm%2F05gj2h%22%5D%2Cnull%2Cnull%2Cnull%2Cnull%2Cnull%2C%5B%22%2Fm%2F0194d%22%5D%2Cnull%2Cnull%2Cnull%2Cnull%2Cnull%2Cnull%2C%5Bnull%2Cnull%2C%22%2Fm%2F06vvk%22%5D%5D%2C28%2C1%5D,dme:%2Fg%2F11fr0b7qvf,ct:,hl:zh-TW,tz:Asia%2FTaipei,_fmt:jspb’

但這網址除了參數有夠長之外,回應也非常混亂,有很多層的資料,光是解析出來就花了我好多時間,總之比賽國家和比分資訊就是藏在 ["tsp-mr4","tsp-vm"] 這個的後面,就用 regex 加上一些簡單的資料清理把它們抓出來:

閱讀更多»

【Python 網頁爬蟲入門實戰】ch2 HW

目標 1:
・找出範例網頁一 總共有幾篇 blog 貼文
找出範例網頁一 總共有幾張圖片網址含有 ‘crawler’ 字串

import requests
from bs4 import BeautifulSoup
import re

resp = requests.get("http://blog.castman.net/web-crawler-tutorial/ch2/blog/blog.html")
soup = BeautifulSoup(resp.text, "html5lib")

titles = []
for t in soup.find_all("h4"):
    titles.append(t)
    print(t.text.strip())

print("此部落格共有 " + str(len(titles)) + " 篇文章")

img_len = 0
#若沒有使用這方法,最後會輸出那一行有幾個字元
#而不是原本目標的幾篇or幾張

for img in soup.find_all("img", {"src": re.compile(".*crawler")}):
   print(img["src"])
   img_len += 1

print("此部落格共有 " + str(img_len) + " 張網址含有 'crawler' 字串的圖片")

閱讀更多»

【Python 網頁爬蟲入門實戰】ch1 HW

目標

1. 取出範例網頁的標題 (title) 與段落 (p) 文字
2. 讓程式試著取出範例網頁中不存在的標籤文字 (如 button.text), 並且在標籤不存在時, 程式能正常結束

程式碼

import requests
from bs4 import BeautifulSoup

def get_text(url, tag):
    resp = requests.get(url)
    soup = BeautifulSoup(resp.text, "html5lib")
    try:
        if resp.status_code == 200:
            return soup.find(tag).text
    except:
        return None

def main():
    t = get_text("http://blog.castman.net/web-crawler-tutorial/ch1/connect.html", "title")
    print(t)
    p = get_text("http://blog.castman.net/web-crawler-tutorial/ch1/connect.html", "p")
    print(p)
    b = get_text("http://blog.castman.net/web-crawler-tutorial/ch1/connect.html", "botton")
    print(b)

main()

閱讀更多»