Как найти частоту повторного предложения в файле - PullRequest
2 голосов
/ 28 января 2020

У меня есть датафрейм, в котором мне нужно найти 20 лучших повторных предложений, используя Python. Пожалуйста, дайте мне знать, как go об этом

Column A
Hello How are you?
This ticket is not valid
How are things at you end?
Hello How are you?
How can I help you?
Please help me with tickets
This ticket is not valid
Hello How are you?

Ожидаемый результат

Column A                         Frequency of Repeated sentence
Hello How are you?               3
This ticket is not valid         2
How can I help you?              1
.
.
.

Код до сих пор

df = pd.read_csv("C:\\Users\\aaa\\abc\\Analysis\\chat.csv", encoding="ISO-8859-1") 
df['word_count'] = df['Column A'].apply(lambda x: len(str(x).split(" ")))
df[['Column A','word_count']].head()

for i, g in df.groupby('Column A'):
   print ('Frequency of repeating sentence : {}'.format(g['Column A'].duplicated(keep=False).sum()))

Мне нужен результат в кадре данных, который можно записать в CSV со столбцами «Столбец A» и «Частота» в конечном результате

Ответы [ 4 ]

4 голосов
/ 28 января 2020

Вот способ использования .value_counts:

df['ColumnA'].value_counts()

Чтобы добавить его в виде столбца, вы можете сделать:

df['Frequency'] = df['ColumnA'].map(df['ColumnA'].value_counts())
2 голосов
/ 28 января 2020

Попробуйте это:

df['count']=df.groupby(['ColumnA'] ).count()
df.sort_values(by='count', ascending=False)
print(df.head(20))
1 голос
/ 28 января 2020
df['count'] = df.groupby('Sentence')['Sentence'].transform('count')
df = df.sort_values(by = 'count', ascending = False)
df.head(20)

Это добавит столбец count к исходному кадру данных, который будет содержать частоту соответствующего предложения. transform() возвращает серию, выровненную по исходному фрейму данных.

0 голосов
/ 28 января 2020

Попробуйте это

freq_series= df.groupby(['Column A']).size()
new_df=pd.DataFrame({'ColumnA':freq_series.index,'frequency':freq_series.values})
new_df.to_csv('<your csv name>.csv')
...