Как да изразя цялото това забавление с думи

В момента съм по средата на проект за изтриване на Twitter (повече за това друг ден) и се натъкнах на това:

„Комуникации 🌿🖤 | тук за пуканките.🍿’

Излишно е да казвам, че трябваше да направя нещо.

За мое щастие съществува чудесна библиотека, която превръща това:

🗣 @GamblingPodcast\n🚀 @theSGPNetwork🤝@bluewirepods\n\n #TogetherBlue | #Hokies 🦃 | #Bitcoin\n\nАкредитиран 1H под инвеститор\n🎥

в това:

:speaking_head: @GamblingPodcast\n:rocket: @theSGPNetwork:handshake:@bluewirepods\n\n #TogetherBlue | #Hokies :turkey: | #Bitcoin\n\nАкредитиран 1 час под инвеститор\n:movie_camera:

Коя библиотека е това, ще попитате? Защо „емоджи“, разбира се 😁.

Как да използвате emoji

Инсталация

Не може да бъде по-лесно да инсталирате emoji:

$ pip install emoji

След като бъде инсталиран, можем да проучим функционалността му.

Основни случаи на употреба

Въпреки че можете да конвертирате кратки кодове в емотикони по този начин:

result = emoji.emojize('Python is the :bomb:')
print(result)
Python is the 💣

истинската стойност на тази библиотека е преобразуването на емотикони в кратки кодове по следния начин:

result = emoji.demojize('Python is the 💣')
print(result)
'Python is the :bomb:'

за почистване, филтриране и/или бъдещ анализ.

Езици, различни от английски

Както е посочено в документите, езикът по подразбиране е английски, но също така поддържа следните европейски езици: немски португалски, италиански, френски и испански. Примерно:

result = emoji.demojize('Python es la 💣', language='es')
print(result)
Python es la :bomba:

Сега знам какво си мислите:

„Как да почистя цяла серия Pandas?“

Благодаря, че попита.

Почистване на серия Pandas

Представете си, че имате серия от панди като тази по-долу:

sentences = ["I want a 🍔", "I don't want a 🍔",
             "I ❤️ 🍔", "I 💩 🍔", "I am 💩 ⚽"]
pd.Series(sentences)
0 I want a 🍔
1 I don't want a 🍔 
2 I ❤️ 🍔 
3 I 💩 🍔 
4 I am 💩 ⚽

За да замените емоджитата с кратките кодове, можете просто да подадете emoji.demojize()in ламбда функция като тази:

pd.Series(sentences).apply(lambda x: emoji.demojize(x))

и за нашия пример с играчка ще получите желания резултат:

0 I want a :hamburger: 
1 I don't want a :hamburger: 
2 I :red_heart: :hamburger: 
3 I :pile_of_poo: :hamburger: 
4 I am :pile_of_poo: :soccer_ball:

Въпреки това, „животът не е шоу с пони“, така че не можем да сме сигурни, че всеки запис в нашия pd.Seriesще съдържа текст като в нашия пример за играчка по-горе. Например, ако нашето pd.Series съдържа една единствена Nanстойност като тази:

sentences = ["I want a 🍔", "I don't want a 🍔",
             "I ❤️ 🍔", "I 💩 🍔", "I am 💩 ⚽, np.nan"]
pd.Series(sentences)
0 I want a 🍔
1 I don't want a 🍔 
2 I ❤️ 🍔 
3 I 💩 🍔 
4 I am 💩 ⚽
5 NaN

ще получим следната грешка:

TypeError: object of type ‘float' has no len()

За тази цел се нуждаем от начин да обработваме NaN стойности и въпреки че не се съмнявам, че има други безкрайно по-сбити/ефективни/питонични начини за справяне с този проблем (и ако знаете за такъв, моля, оставете го в коментарите), методът, описан по-долу, работи за мен и е много лесен.

def emoji_to_text(text):
    if type(text) != float:
        return emoji_cleaner(text)
    else:
        return text

Казано по-просто, докато стойността в нашата серия не е float (каквито са NaN стойностите), ние сме добри.

Накрая предаваме нашата emoji_to_text()функция на pd.apply()за създаване на new pd.Series:

pd.Series.apply(emoji_to_text)

Ето! Вече имате pd.Series, където всяко емоджи е заменено със съответния кратък код.

Това е страхотно, работя с DataFrame. Какво да правя?

О, това е наистина лесно!

Просто извикайте apply() на колоната във вашия pd.DataFrame, която искате да конвертирате, и запазете изхода в нова колона по следния начин:

df['clean_sentences'] = df['sentences'].apply(cleaner)

Заключителни мисли

Ако правите текстов анализ на публикации в социалните медии, вероятността да срещнете емотикони е почти 100%. Като такъв, наличието на инструмент, който бързо и лесно ги преобразува в използваем текст, е от съществено значение.

За наш късмет библиотеката emoji е един такъв инструмент.