Skip to content

Instantly share code, notes, and snippets.

@akrisanov
Last active November 8, 2022 11:09
Show Gist options
  • Save akrisanov/f6318c05fd8b966e667845727a713c1d to your computer and use it in GitHub Desktop.
Save akrisanov/f6318c05fd8b966e667845727a713c1d to your computer and use it in GitHub Desktop.
Yandex.Praktikum πŸ‚
import pandas as pd
stock = pd.read_csv('/datasets/stock_upd.csv')
stock['item_lowercase'] = stock['item'].str.lower()
apple = stock[stock['item_lowercase'].str.contains('apple')]['count'].sum()
samsung = stock[stock['item_lowercase'].str.contains('samsung')]['count'].sum()
stock['item_lowercase'] = stock['item_lowercase'].drop_duplicates()
stock = stock.dropna().reset_index(drop=True)
stock.at[3, 'count'] = apple
stock.at[1, 'count'] = samsung
print(stock)
# Π Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚
# id item count item_lowercase
# 0 100480924 Π‘ΠΌΠ°Ρ€Ρ‚Ρ„ΠΎΠ½ Xiaomi Redmi 6A 16GB 44 смартфон xiaomi redmi 6a 16gb
# 1 100480938 Π‘ΠΌΠ°Ρ€Ρ‚Ρ„ΠΎΠ½ Samsung Galaxy A30 32GB 60 смартфон samsung galaxy a30 32gb
# 2 100480959 Π‘ΠΌΠ°Ρ€Ρ‚Ρ„ΠΎΠ½ HUAWEI P30 lite 38 смартфон huawei p30 lite
# 3 100480975 Π‘ΠΌΠ°Ρ€Ρ‚Ρ„ΠΎΠ½ Apple iPhone Xr 64gb 29 смартфон apple iphone xr 64gb
# 4 100480988 Π‘ΠΌΠ°Ρ€Ρ‚Ρ„ΠΎΠ½ Honor 8X 64GB 64 смартфон honor 8x 64gb
from nltk.stem import SnowballStemmer
russian_stemmer = SnowballStemmer('russian')
queries = ["эпл Π°ΠΉΡ„ΠΎΠ½Ρ‹",
"ΠΊΡƒΠΏΠΈΡ‚ΡŒ эпл Ρ‚Π΅Π»Π΅Ρ„ΠΎΠ½",
"Π»ΡƒΡ‡ΡˆΠΈΠ΅ смартфоны",
"Π±Π°Ρ€ΠΎΠ½ Ρ„ΠΎΠ½",
"смартфон эпл Π°ΠΉΡ„ΠΎΠ½",
"смартфоны 2019",
"эплан",
"фоновая ΠΌΡƒΠ·Ρ‹ΠΊΠ°",
"эпл Π°ΠΉΡ„ΠΎΠ½Ρ‹ икс",
"эпл Π°ΠΉΡ„ΠΎΠ½ 64Π³Π±",
"Ρ„ΠΎΠ½ для Ρ„ΠΎΡ‚ΠΎ",
"ΠΊΡƒΠΏΠΈΡ‚ΡŒ эпл",
"эпл Π°ΠΉΡ„ΠΎΠ½ ΠΊΡƒΠΏΠΈΡ‚ΡŒ",
"эплСрСнон ΠΊΡƒΠΏΠΈΡ‚ΡŒ",
"смартфон Π³Π΄Π΅ ΠΊΡƒΠΏΠΈΡ‚ΡŒ",
"эплан показания",
"смартфон huawei",
"эпл"]
for stemmed_query in queries:
for word in stemmed_query.split():
stemmed_word = russian_stemmer.stem(word)
if stemmed_word == 'эпл':
print(stemmed_query)
# Π Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚
# эпл Π°ΠΉΡ„ΠΎΠ½Ρ‹
# ΠΊΡƒΠΏΠΈΡ‚ΡŒ эпл Ρ‚Π΅Π»Π΅Ρ„ΠΎΠ½
# смартфон эпл Π°ΠΉΡ„ΠΎΠ½
# эпл Π°ΠΉΡ„ΠΎΠ½Ρ‹ икс
# эпл Π°ΠΉΡ„ΠΎΠ½ 64Π³Π±
# ΠΊΡƒΠΏΠΈΡ‚ΡŒ эпл
# эпл Π°ΠΉΡ„ΠΎΠ½ ΠΊΡƒΠΏΠΈΡ‚ΡŒ
# эпл
import pandas as pd
from pymystem3 import Mystem
from collections import Counter
feedback = pd.read_csv('/datasets/feedback.csv')
m = Mystem()
lemmas = m.lemmatize(feedback.at[1, 'text'])
print(Counter(lemmas))
# Counter({' ': 16, 'Π½Π°': 2, '- ': 1, 'ΠΎΠ³Ρ€ΠΎΠΌΠ½Ρ‹ΠΉ': 1, 'качСствСнный': 1, 'экран': 1, 'запас': 1, 'ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ': 1, 'Ρ…Π²Π°Ρ‚ΠΈΡ‚ΡŒ': 1, 'нСсколько': 1, 'Π³ΠΎΠ΄': 1, 'Π·Π°ΠΌΠ΅Ρ‡Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹ΠΉ': 1, 'ΠΊΠ°ΠΌΠ΅Ρ€Π°': 1, 'ΠΎΡ‡Π΅Π½ΡŒ': 1, 'Π΅ΠΌΠΊΠΈΠΉ': 1, 'батарСя': 1, '. ': 1, 'Ρ…Π²Π°Ρ‚Π°Ρ‚ΡŒ': 1, 'Ρ†Π΅Π»Ρ‹ΠΉ': 1, 'дСнь': 1, '.': 1, '\n': 1})
import pandas as pd
def alert_group(messages):
if messages <= 300:
return 'срСдний'
elif messages > 300 and messages < 500:
return 'высокий'
else:
return 'ΠΊΡ€ΠΈΡ‚ΠΈΡ‡Π½Ρ‹ΠΉ'
support_log = pd.read_csv('/datasets/support_log.csv')
support_log_grouped = support_log.groupby('type_id').count()
support_log_grouped['alert_group'] = support_log_grouped['user_id'].apply(alert_group)
print(support_log_grouped['alert_group'].value_counts())
# Π Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚
# высокий 4
# ΠΊΡ€ΠΈΡ‚ΠΈΡ‡Π½Ρ‹ΠΉ 2
# срСдний 2
# Name: alert_group, dtype: int64
import pandas as pd
def alert_group_importance(row):
if row['alert_group'] == 'срСдний' and row['importance'] == 1:
return 'ΠΎΠ±Ρ€Π°Ρ‚ΠΈΡ‚ΡŒ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅'
elif row['alert_group'] == 'высокий' and row['importance'] == 1:
return 'высокий риск'
return 'Π² порядкС ΠΎΡ‡Π΅Ρ€Π΅Π΄ΠΈ'
support_log_grouped = pd.read_csv('/datasets/support_log_grouped.csv')
# print(alert_group_importance({'alert_group': 'высокий', 'importance': 1}))
support_log_grouped['importance_status'] = support_log_grouped.apply(alert_group_importance, axis=1)
print(support_log_grouped)
# Π Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚
# type_id user_id timestamp alert_group importance importance_status
# 0 1 311 311 высокий 1 высокий риск
# 1 2 302 302 высокий 0 Π² порядкС ΠΎΡ‡Π΅Ρ€Π΅Π΄ΠΈ
# 2 3 606 606 ΠΊΡ€ΠΈΡ‚ΠΈΡ‡Π½Ρ‹ΠΉ 0 Π² порядкС ΠΎΡ‡Π΅Ρ€Π΅Π΄ΠΈ
# 3 4 312 312 высокий 1 высокий риск
# 4 5 586 586 ΠΊΡ€ΠΈΡ‚ΠΈΡ‡Π½Ρ‹ΠΉ 1 Π² порядкС ΠΎΡ‡Π΅Ρ€Π΅Π΄ΠΈ
# 5 6 303 303 высокий 1 высокий риск
# 6 7 283 283 срСдний 1 ΠΎΠ±Ρ€Π°Ρ‚ΠΈΡ‚ΡŒ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅
# 7 8 297 297 срСдний 0 Π² порядкС ΠΎΡ‡Π΅Ρ€Π΅Π΄ΠΈ
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment