我最近刚开始学习python(现在已经学习了6周),我也不知道如何应对这项作业。对于该任务,我们从Twitter获得了一个excel数据集,并应该“抓取数据”。
我应该在您拥有的数据集中找到唯一的用户名及其在Twitter上发推的次数(不包括转推和回复)。 并找到推文次数最多的前10位用户(不包括推文和回复)。
我一直在使用熊猫,但是我找不到正确的代码字符串来完成我所需要的。
我能够使用此代码过滤仅发送“ Tweet”的所有用户。这似乎是我唯一的突破。
df.loc[df['Relationship'] == "Tweet"]
在数据集中,有一列具有用户名“ Users1”(即其Twitter句柄)和一列名为“ Relationship”(即提及,回复,Tweet)。这是我一直在使用的两列。
不幸的是,我头疼,需要任何帮助。
谢谢
编辑:
print(df.User1.value_counts(['Relationship'] == "Tweet"))
使用此代码可以取得一些进步^
那是我发现唯一半有用的唯一代码字符串。我已经打了一个多小时了。
我已经附上了部分数据的图片。Portion of data
答案 0 :(得分:0)
我想要做的第一件事是为每个User1添加一个“ tweetcount”列。如果每个换行符都代表一条推文,则仅意味着计算每个推文字符串中的结尾行('\ n')。
如果您已将numpy导入为np,则在熊猫数据框中的数据列中查找唯一元素的方法应该有效:
#generate a numpy array from the dataframe:
names = df[['username']].to_numpy()
#generate a simple list from the numpy array (flatten the array):
temp = [x for items in names for x in items]
#extract the unique elements from the simple list using the count method:
uniques = [x for x in temp if temp.count(x) == 1]
现在您有了一个唯一名称列表,可以从熊猫df中提取索引值:
indices = [x for x in range(len(df)) if df.loc[x, 'username'] in uniques]
要获取每个唯一用户名的完整数据行:
for x in indices:
print(df.loc[x, 'username'], df.loc[x, 'tweetcount'])
在pandas数据框中按给定的列排序要简单得多(它们也可能是更简单的解决方案)。只需使用:
df.sort_values(by='tweetcount')