python

Разделение на категории, диапазоны, градации

category = pd.cut(df['category'], [0, 10, 20])
чтобы добавить в столбец
df['col_category'] = pd.cut(df['col1'], [0, 10, 20])

Работа с несколькими показателями и подсчет долей, сводные таблицы

df.groupby('col1')[['col2']].mean()

Способ 1

df.groupby(['col1', 'col2'])['col3'].aggregate('mean').unstack()
или
df.groupby(['col_left', 'col_high'])['col_value'].aggregate('mean').unstack()

Способ 2
df.pivot_table('col3', index='col1', columns='col2')
df.pivot_table('col_value', index='col_left', columns='col_high')

Разделение на категории, диапазоны, градации
category = pd.cut(df['category'], [0, 10, 20])
чтобы добавить в столбец
df['col_category'] = pd.cut(df['col1'], [0, 10, 20])

Перевод в нижний регистр

#приводим к нижнему регистру методом .lower()
df.lower()

#в Pandas метод str.lower()
df.str.lower()

#перевод в нижний регистр с сохранением в новом столбце
df['new_col_lower'] = df['col'].str.lower()

.apply()

df['column'].apply(method)
(к столбцу)

df.apply(method, axis=1)
(к строке)

Внесение результата работы функции в таблицу с помощью метода .apply ()

1) создаем функцию для разделения на категории
(она возвращает название категории в зависимости от соответствия условию)
(*отступы могут отображаться некорректно)

def my_function_name(smth_to_enter_in_function):

Словари, таксономия и категории. Категоризация

df_new = df[['col1',col2','col3']]
(перенос столбцов в новую таблицу)

df = df.drop_duplicates().reset_index(drop=True)
(удаление дубликатов)

df.groupby('col1').mean().sort_values('col2',ascending=False)
(группировка по столбцу col1, среднее и сортировка по col2 по убыванию)

Пример внесение результата работы кастомной функции в таблицу с помощью метода .apply () https://data-scientists.ru/node/46

Переименовать столбцы, заменить индексы

df.set_axis(['col1','col2','col3'],axis = 'columns',inplace = True)

df.set_index('col2', inplace=True)
(заменит индексы на значения из столбца col2, сохранить ту же таблицу с новыми индексами)

Лемматизация

1) pymystem3 (библиотека, разработанная сотрудниками Яндекса)

from pymystem3 import Mystem

name = Mystem()
test_name = list(df['text_col'])        

а) some_words_or_text = '...' created_lemmas = name.lemmatize(some_words_or_tex) print(created_lemmas)

б)created_lemmas = ' '.join(name.lemmatize(some_words_or_text)) print(created_lemmas) склеивает

в) from collections import Counter print(Counter(created_lemmas)) сколько раз употребляется каждое слово

г)функция  принимает текст и возвращает лемматизированную строку:

Стемминг, split(), stem()

from nltk.stem import SnowballStemmer
snowball_stemmer_ru = SnowballStemmer('russian')
words_list = [....]
for name in names_list:
for word in name.split():
stemmed_short_word = snowball_stemmer_ru.stem(word)
if stemmed_short_word == 'smth':
print(name)

split() создает список из набора слов, разбивает строку на массив из отдельных слов по разделителю, указанному в параметре.
Подробнее https://www.geeksforgeeks.org/python-string-split/

Предобработка и анализ текста

Предобработка текста:

1)токенизация (разбиение текста на текстовые единицы, например, слова, предложения, фразы, символы)

2)удаление стоп-слов import nltk nltk.download('stopwords') from nltk.corpus import stopwords stopwords.words("russian")

3)стемминг (нахождения основы слова) from nltk.stem import SnowballStemmer snowball_stemmer_ru = SnowballStemmer(language="russian")

4)лемматизация (приведение слова к его словарной форме (лемме))

а) from pymystem3 import Mystem

m = Mystem()

m.lemmatize("лемматизируй этот текст")

Страницы

Подписка на RSS - python