使用panda的dataframe.drop_duplicate()删除数据集中的重复项

时间:2014-11-09 11:52:54

标签: python python-2.7 pandas

我正在阅读我使用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对我来说是新的,我还在学习它和科学的软件包。

感谢您抽出宝贵时间阅读本文以及提供的任何帮助。

1 个答案:

答案 0 :(得分:1)

我决定采用不同的方法来处理重复项,完全使用数据帧作为我的结构。我不是必须处理Python的原生库来阅读CSV并遍历每一行,而是决定使用pandas内置read_csv方法并将它们放在数据帧中。然后,我使用drop_duplicate()的相同方法删除重复数据。

我希望这有助于未来的读者。