我正在阅读我使用Python csv.reader()
获取的Twitter数据集。我注意到在这个数据集中,有重复。我尝试使用pandas.drop_duplicate()
函数删除它们,但是有些麻烦。
以下是我撰写的实施内容:
import csv
import re
import pandas as pd
def process_tweet(tweet):
# lowercase all text
tweet = tweet.lower()
# remove additional whitespaces in tweets
tweet = re.sub('[\s]+', ' ', tweet)
# remove all hashtags
tweet = re.sub(r'#([^\s]+)', "", tweet)
# replace all url links to T_URL
tweet = re.sub('((www\.[\s]+)|(https?://[^\s]+))', 'T_URL', tweet)
# tweet = re.sub(r"http\S+", "T_URL", tweet)
tweet = tweet.split('\n')
remove_duplicates(tweet)
print tweet,
print ',' # added this because I needed each of the list, L1,L2..LN, to end with a comma
return tweet
def remove_duplicates(tweet):
df = pd.DataFrame(tweet)
removed_list = df.drop_duplicates()
# print removed_list;
return removed_list
if __name__ == '__main__':
with open('../../dataset/data.csv', 'rb') as f:
reader = csv.reader(f)
for row in reader:
process_tweet(row[1])
print '\n End run'
当我在iPython中创建包含重复数据的列表(请参阅:1,2,3
)和一些独特数据(请参阅:0,4
)时,drop_duplicate()
似乎正常工作。请注意,我已对某些数据进行了修改,并将其标记为<removed>
。
In [27]: df5
Out[27]:
0
0 <removed> <removed> forced off course by spa...
1 <removed> adds <removed> to <removed> T_URL
2 <removed> adds <removed> to <removed> T_URL
3 <removed> adds <removed> to <removed> T_URL
4 <removed> winner T_URL
In [28]: df5.drop_duplicates()
Out[28]:
0
0 <removed> <removed> forced off course by spa...
1 <removed> adds <removed> to <removed> T_URL
4 <removed> winner T_URL
我不知道这是否有帮助,但我发现当我打印数据框df
时,每条推文都包含在不同的数据框中。这是df.drop_duplicates()
在我的实现中不起作用的原因吗?
请原谅我不太令人印象深刻的代码。 Python对我来说是新的,我还在学习它和科学的软件包。
感谢您抽出宝贵时间阅读本文以及提供的任何帮助。
答案 0 :(得分:1)
我决定采用不同的方法来处理重复项,完全使用数据帧作为我的结构。我不是必须处理Python的原生库来阅读CSV并遍历每一行,而是决定使用pandas内置read_csv
方法并将它们放在数据帧中。然后,我使用drop_duplicate()
的相同方法删除重复数据。
我希望这有助于未来的读者。