2015年7月18日 星期六

[Python] 資料科學家的日常(二) Clean Data-清理HTML標籤

enter image description here
繼承上次提的Read Data,Read本身除了讀取之外也包含著閱讀的意思.當資料讀取進來前後,都要好好閱讀資料,決定之後的分析方向.通常把資料讀取進來後,就會進入清理資料的階段.Clean Data雖說是分析資料的基本功,但是當資料大到某種程度後,Clean Data也變成相當惱人而且很多坑的事情.

因為資料量很大,而且分析方式很多種,所以在清資料前就要先想好等下要用什麼方式來分析資料,才能知道資料要往哪個方向處理.畢竟不同的資料分析方式吃的資料格式不太一樣,對一些極端值的敏感度也不同,得想清楚再出發.(不過實務上很少一次就OK的啦,通常都是邊做邊想邊調整.)

因為最近很愛KNN所以想把每個單詞當成feature來跑model,所以第一步先清理可怕的html資料.
enter image description here

靠網路上神人大大的碼,就可以簡單移除HTML標籤
from HTMLParser import HTMLParser
import re

class MLStripper(HTMLParser):
    def __init__(self):
        self.reset()
        self.fed = []
    def handle_data(self, d):
        self.fed.append(d)
    def get_data(self):
        return ''.join(self.fed)

def strip_tags(html):
    s = MLStripper()
    s.feed(html)
    return s.get_data()


要把function套用到pandas的欄位上要用apply方法:
enter image description here


同時也順便去除分行和數字(因為數字切詞通常沒有意義所以一起去掉了)
處理完後就會看到比較清爽的模樣
enter image description here
(待續…)