M
Size: a a a
M
d
R
sns.barplot(x=count_churn.index, y="count", data=count_churn)
Нормально строит барплот в Юпитере, но эта же самая строчка в Пайчарме приводит к ошибке
)import numpy as np
import pandas as pd
import scipy.stats as ss
import seaborn as sns
import plotly
import plotly.offline as py
import plotly.express as px
#import matplotlib.pyplot as plt
import matplotlib
matplotlib.use('TkAgg')
from matplotlib import pyplot as plt
df = pd.read_csv('https://stepik.org/media/attachments/lesson/406362/churn.csv')
df.head()
df.shape
df.isna().sum()
df.nunique()
df.dtypes
# Изменяем тип для дат:
df.last_trip_date = pd.to_datetime(df.last_trip_date)
df.signup_date = pd.to_datetime(df.signup_date)
# взглянем на колонки датафрейма
df.info()
# Посмотрим некоторые описательные статистики
df.describe()
# Посмотрим на переменные с типом обжект
df.describe(include='object')
# Посмотрим на переменные с типом дата время
df.describe(include='datetime')
# 2: графики, гипотезы и тесты
# Создаем лейбл churn – пользователь ушел, если не был активен последние 30 дней
# (но можно попробовать и другие значения в зависимости от вашей компании/данных)
df['days_since_last_trip'] = df.last_trip_date.max() - df.last_trip_date
df['days_since_last_trip']
# Преобразуем в int:
df['days_since_last_trip'] = df['days_since_last_trip'].dt.days
df['days_since_last_trip']
# создадим колонку churn not churn если <> 30 дней
df['churn'] = df.days_since_last_trip.apply(lambda x: 'churn' if x > 30 else 'not_churn')
df[['days_since_last_trip', 'churn']]
# Видим, что очень много пользователей не использовали сервис в последнем месяце. Нужно разобраться, какие факторы могут влиять на отток водителей
count_churn = df.churn.value_counts(normalize=True).mul(100) # value_counts подсчитывает поличество уникальных значений , а параметр normalize=true расчитывает частоту этих значений
#метод mul умножает на 100 чтобы получить проценты
sns.countplot(x='churn', data=df) # строим гистограмму по churn
# Еще лучше – отразим на графике нормализованные значения (сравниваем не сырые числа):
# переведем count_churn в датафрейм и простроим график
count_churn = pd.DataFrame(count_churn)
count_churn = count_churn.rename(columns={'churn': 'count'}) # переименование столбца churn в count_c
sns.barplot(x=count_churn.index, y="count", data=count_churn)
R
OM
R
ДК
R
T
A
A
s
T
AB
К
.
ῼk
К
s