从海量 Twitter 数据中提取信息
上一个练习中,您已成功将文件按块读取,做得很好。您现在已经知道在需要处理超大文件时如何应对,这是一项非常实用的技能!
把文件拆成更小、更易管理的块来处理固然不错,但如果每次做同样的任务都要重复写相同的代码,就会变得很繁琐。在本练习中,您将把上一个练习的工作放入一个函数定义中,使代码更具"可复用性"。
已将 pandas 包导入为 pd,并且文件 'tweets.csv' 已位于您当前的目录中,供您使用。
本练习是课程的一部分
Python 工具箱
练习说明
- 定义函数
count_entries(),它有 3 个参数。第 1 个参数csv_file表示文件名,第 2 个参数c_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)