2016-05-31 31 views
0

我正在使用yelp數據集,當然這是數百萬條目,所以我想知道是否有任何方法可以下載你需要的東西,或者你必須手動選擇它?例如,yelp對從汽車修理到美容院的所有事情都有評論,但我只想要在餐廳進行評論。所以我必須閱讀整個內容,然後刪除不需要的行嗎?在使用read_csv將數據下載到熊貓數據框之前,是否有預過濾數據的方法?

+0

你從哪裏下載? –

+0

我從yelp數據集中下載了一個json文件,然後使用他們的轉換器將其更改爲csv文件 – mmera

+0

您可以共享一個鏈接到您從中獲取它的位置,我想有一種方法可以進行過濾。 –

回答

0

假設你正在尋找一個.csv文件,你可以閱讀和預處理chunks而不是讀完整數據集,如:

df = pd.DataFrame() 
chunksize = 100000 
for chunk in pd.read_csv(filename, chunksize=chunksize): 
    process(chunk) 
    df = pd.concat([df, chunk]) 

如果你要控制什麼進入原始數據集的能力,你當然會更好。

+0

我認爲這是爲我走的路。我可以處理大塊數據,然後保持連接,因此它不會永久存在。 – mmera

+0

是的,當計算時間增加的速度快於線性時,速度要快得多。 – Stefan

0

通常是,加載所有內容,然後過濾數據集。

但是,如果您確實想要進行預過濾,並且您使用的是unix系統,則可以在啓動Python之前使用grep進行預過濾。

它們之間的折衷方案是使用Python和Pandas編寫預過濾器,這樣您下載數據,預過濾它們(將預過濾的數據寫入另一個csv)並使用您的預過濾數據進行播放。

要走的路要取決於你需要載入整個數據集的次數,如果你想讀取一次並放棄它,不需要預過濾器,但是在處理代碼時,如果你想測試很多時候,預過濾可能會爲您節省幾秒鐘。但是在這裏,還有另外一種可能性:使用ipython筆記本,這樣你就可以加載你的數據集,對它進行過濾,然後執行你當前在這個已經加載的數據集上工作任意時間的代碼塊,它比加載預先過濾的數據集還要快。

所以這裏沒有真正的答案,這取決於你的使用和個人口味。

+0

實際上與ipython筆記本一起被證明比我預期的要快得多!謝謝! – mmera