Python / Чтение и группировка данных из текстового файла с помощью Pandas - PullRequest
0 голосов
/ 22 ноября 2018

У меня есть текстовый файл следующим образом:

Sentence:1 Polarity:N 5puan verdim o da anistonun güzel yüzünün hatırına.
Sentence:2 Polarity:N son derece sıkıcı bir filim olduğunu söyleyebilirim.
Sentence:3 Polarity:N ..saçma bir konuyu nasılda filim yapmışlar maşallah
Sentence:4 Polarity:P bence hoş vakit geçirmek için seyredilebilir.
Sentence:5 Polarity:P hoş ve sevimli bir film.
Sentence:6 Polarity:O eşcinsellere pek sempati duymamakla beraber bu filmde sanki onları sevimli göstermeye çalışmışlar gibi geldi.
Sentence:7 Polarity:O itici bir film değildi sonuçta.
Sentence:8 Polarity:N seyrederken bu kadar sinirlendiğim film hatırlamıyorum.
Sentence:9 Polarity:O  J.Aniston ın hiç mi umut yok diye sorduğu sahnede kıracaktım televizyonu!
Sentence:10 Polarity:O kimse yazmamış ben yazıyım:)
Sentence:11 Polarity:P  güzel bi pazar günü şirin bi film izlemek isteyenler için çok güzel.

Я хочу разбить эти данные на таблицу, подобную этой:

Sentence_No - Sentence_Polarity - Sentence_txt
1 - N - 5puan verdim o da anistonun güzel yüzünün hatırına.
2 - N - son derece sıkıcı bir filim olduğunu söyleyebilirim.
3 - N - ..saçma bir konuyu nasılda filim yapmışlar maşallah
4 - P - bence hoş vakit geçirmek için seyredilebilir.

Поэтому я думаю, что мне нужно получитьчасть после "предложения:", "полярность" и последняя часть текста.Я хочу так, чтобы я мог классифицировать данные.

Я написал код ниже, но он не работает для этой цели:

df = pd.read_csv('SU-Movie-Reviews-Sentences.txt', lineterminator='\n', names=['Sentence_No', 'Sentence_Polarity' , 'Sentence_txt'])

Ответы [ 2 ]

0 голосов
/ 22 ноября 2018

Используя метод DataFrame replace с regex и используйте header=None при чтении вашего файла с read_csv, так как по умолчанию ваша первая строка набора данных будет считаться заголовком, и вы не сможете получить первую строку,Итак, используйте fillna("0"), поскольку ваша числовая последовательность непоследовательна и имеет пустой или Nan:

df = pd.read_csv("SU-Movie-Reviews-Sentences.txt", header=None).fillna("0")

print(df)
                                                   0
0   Sentence:1 Polarity:N 5puan verdim o da anisto...
1   Sentence:2 Polarity:N son derece sıkıcı bir fi...
2   Sentence:3 Polarity:N ..saçma bir konuyu nasıl...
3   Sentence:4 Polarity:P bence hoş vakit geçirmek...
4      Sentence:5 Polarity:P hoş ve sevimli bir film.
5   Sentence:6 Polarity:O eşcinsellere pek sempati...
6   Sentence:7 Polarity:O itici bir film değildi s...
7   Sentence:8 Polarity:N seyrederken bu kadar sin...
8   Sentence:9 Polarity:O  J.Aniston ın hiç mi umu...
9   Sentence:10 Polarity:O kimse yazmamış ben yazı...
10  Sentence:11 Polarity:P  güzel bi pazar günü şi...

Ниже описано, как вы будете использовать replace:

>>> df.replace('Sentence:|Polarity:', '',regex=True)
                                                    0
0   1 N 5puan verdim o da anistonun güzel yüzünün ...
1   2 N son derece sıkıcı bir filim olduğunu söyle...
2   3 N ..saçma bir konuyu nasılda filim yapmışlar...
3   4 P bence hoş vakit geçirmek için seyredilebilir.
4                        5 P hoş ve sevimli bir film.
5   6 O eşcinsellere pek sempati duymamakla berabe...
6                 7 O itici bir film değildi sonuçta.
7   8 N seyrederken bu kadar sinirlendiğim film ha...
8   9 O  J.Aniston ın hiç mi umut yok diye sorduğu...
9                   10 O kimse yazmamış ben yazıyım:)
10  11 P  güzel bi pazar günü şirin bi film izleme...
0 голосов
/ 22 ноября 2018

Я взял это как тестовую строку:

test = """Sentence:1 Polarity:N 5puan verdim o da anistonun güzel yüzünün hatırına.
Sentence:2 Polarity:N son derece sıkıcı bir filim olduğunu söyleyebilirim.
Sentence:3 Polarity:N ..saçma bir konuyu nasılda filim yapmışlar maşallah
Sentence:4 Polarity:P bence hoş vakit geçirmek için seyredilebilir."""

Используя модуль re в Python, вы можете заменить то, что вы хотите, используя re.sub:

new_string = re.sub(r"Sentence:(\d+) Polarity:(\w)", r"\1 - \2 -", test)

дает вам форматты хочешь.\1 или \2 - это числа, которые соответствуют группе (\d+) или букве, которая соответствует (\w), соответственно.

Теперь вы можете работать с новой строкой.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...