2014-11-09 2 views
0

파이썬의 csv.reader()을 사용하여 얻은 Twitter 데이터 세트를 읽었습니다. 이 데이터 세트에는 복제본이 있다는 것을 알게되었습니다. 나는 pandas.drop_duplicate() 함수를 사용하여 이들을 제거하려고하는데, 약간의 문제가 있습니다. 그리고 몇 가지 독특한 것들 (참조 : 0,4을) : 나는 반복 데이터를 포함 iPython의 목록을 만들어팬더의 dataframe.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' 

(1,2,3를 참조하십시오) 여기

내가 작성한 구현, 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 

이 도움이하지만 난 내 dataframe df을 인쇄 할 때, 모든 트윗은 별도의 dataframes에 포함되어있는 것을 관찰하면 나도 몰라. 이것이 내 구현에서 df.drop_duplicates()이 작동하지 않는 이유입니까?

내 인상적이지 않은 코드를 용서해주십시오. 파이썬은 저에게 새로운 것입니다. 그리고 나는 아직도 그것을 배우며, 이동 중에도 과학 패키지를 배울 것입니다.

시간을내어이 내용을 읽어 주신 데 대해 감사드립니다.

답변

0

필자는 데이터 프레임을 내 구조로 사용하여 복제본을 다룰 때 다른 접근 방식을 사용하기로 결정했습니다. Python의 네이티브 CSV 읽기 라이브러리를 다루지 않고 모든 행을 반복 할 때마다 팬더가 내장 된 read_csv 메서드를 사용하여 데이터 프레임에 배치하기로 결정했습니다. 그런 다음 같은 방법으로 drop_duplicate()을 사용하여 반복되는 데이터를 제거했습니다.

나는 미래의 독자들에게 도움이되기를 바랍니다.

관련 문제