從大量 Twitter 資料中擷取資訊
上一題你已經把檔案分成多個分塊來處理,做得很好。你現在知道如何在需要處理非常大的檔案時應對,這是非常實用的技能!
把檔案拆成較小、較好管理的分塊固然重要,但如果每次做同樣的工作都要重寫相同的程式碼,就會變得很繁瑣。在這一題中,你會把上一題的做法包進一個「函式定義」中,讓你的程式碼更「可重複使用」。
已經為你將 pandas 套件匯入為 pd,而且 'tweets.csv' 檔案也在你目前的目錄裡,可以直接使用。
本練習屬於課程
Python 工具箱
練習說明
- 定義函式
count_entries(),它有 3 個參數。第一個參數csv_file表示檔名,第二個c_size表示分塊大小(chunk size),最後一個colname表示欄位名稱。 - 使用
for迴圈疊代csv_file指定的檔案。使用迴圈變數chunk,對pd.read_csv()的呼叫進行疊代,並將c_size傳給chunksize。 - 在內層迴圈中,使用
for迴圈疊代chunk中由colname指定的欄位。使用迴圈變數entry。 - 呼叫
count_entries()並傳入檔名'tweets.csv'、分塊大小10,以及要計數的欄位名稱'lang'。將呼叫結果指定給變數result_counts。
動手互動練習
試著完成這個範例程式碼,體驗一下這個練習。
# Define count_entries()
def ____():
"""Return a dictionary with counts of
occurrences as value for each key."""
# Initialize an empty dictionary: counts_dict
counts_dict = {}
# Iterate over the file chunk by chunk
for ____ in ____:
# Iterate over the column in DataFrame
for ____ in ____:
if entry in counts_dict.keys():
counts_dict[entry] += 1
else:
counts_dict[entry] = 1
# Return counts_dict
return counts_dict
# Call count_entries(): result_counts
result_counts = ____
# Print result_counts
print(result_counts)