大量のTwitterデータから情報を抽出する
前の演習ではファイルをうまくチャンクに分割できました。非常に大きなファイルを処理する際の対処法を習得できました。これはとても役立つスキルです!
ファイルをより小さく扱いやすいチャンクに分けて処理する方法がわかりました。ただし、同じタスクに対して毎回同じコードを書き直すのは非常に手間がかかります。この演習では、前の演習で書いたコードを関数定義にまとめることで、コードをより再利用しやすくします。
pandasパッケージは pd としてインポート済みで、ファイル 'tweets.csv' は現在のディレクトリにあります。
この演習はコースの一部です
Python Toolbox
演習の手順
- 3つのパラメータを持つ関数
count_entries()を定義してください。1つ目のパラメータはファイル名を受け取るcsv_file、2つ目はチャンクサイズを受け取るc_size、3つ目は列名を受け取るcolnameです。 csv_fileループを使ってforのファイルを繰り返し処理してください。ループ変数にchunkを使い、pd.read_csv()の呼び出しをイテレートします。このときc_sizeにchunksizeを渡してください。- 内側のループでは、
colnameループを使ってchunk内のforで指定された列をイテレートしてください。ループ変数に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)