Работа диспансеров в городе Денвер: общие тенденции и сезонный анализ

ПРИМЕЧАНИЕ. Это вторая из серии статей, посвященных показателям Денверского магазина спиртных напитков и диспансера. первая статья охватывала общий, ежемесячный и сезонный анализ данных по алкогольным напиткам в Денвере и пришла к выводу, что винные магазины Денвера были более популярны в летние и весенние месяцы.

Люди всегда относились к идее опьянения как средства отдыха от бремени современной жизни. Алкоголь служил инструментом для отдыха и расслабления с момента его открытия, и люди приняли потребление алкоголя как форму социальных связей. Использование марихуаны для отдыха в истории часто игнорировалось, но сейчас эта тенденция смещается в сторону более позитивного взгляда на это вещество. В 2012 году оба основных рекреационных вещества начали применяться в городе Денвер, поскольку в этом году марихуана была легализована в Колорадо. В связи с наличием в городе двух крупных рекреационных наркотиков и увеличением числа аптек после легализации каннабиса кажется логичным проанализировать тенденции потребления этих веществ в городе Денвер. Эта статья является второй в серии статей, посвященных анализу популярности спиртных напитков и марихуаны в Денвере, и касается только диспансеров Денвера. Для анализа тенденций в данных о магазинах спиртных напитков в Денвере ознакомьтесь с первой статьей этой серии.

Для нашего анализа мы будем использовать данные паттернов Safegraph, а также данные из города Денвер. SafeGraph - это поставщик данных, который предоставляет данные о точках интереса для сотен предприятий и категорий. Он предоставляет данные бесплатно ученым. В этом конкретном проекте данные из набора данных Patterns относительно показателей посещений и популярности окажутся очень полезными для нашего анализа. Схему данных паттернов можно найти здесь: Schema Info

Первым шагом, как и в случае с данными о спиртных напитках, является загрузка и визуализация как шаблонов SafeGraph, так и данных Денверского диспансера.

Просто данные диспансера из Денвера выглядят так:

Давайте проанализируем количество типов лицензий, чтобы увидеть, какие локации с разными локациями могут легально продавать марихуану в США:

print(dispo_df[‘License Type’].value_counts())
plt.bar(dispo_df[‘License Type’].unique(), dispo_df[‘License Type’].value_counts())

В рамках этой статьи мы будем рассматривать только лицензии на розничные магазины марихуаны. Следующий фрагмент будет служить для форматирования и расширения столбца адреса, чтобы лучше соответствовать нашим потребностям в будущем при объединении обоих наборов данных:

dispo_df = dispo_df.where(dispo_df[‘License Type’] == ‘Retail Marijuana Store’).dropna()
dispo_df[‘index’] = range(1, len(dispo_df) + 1)
dispo_df[‘Facility Street Number’] = dispo_df[‘Facility Street Number’].astype(int)
dispo_df[‘Address’] = dispo_df[[‘Facility Street Number’, ‘Facility Street Name’,’Facility Street Type’]].apply(
lambda x: ‘ ‘.join(x.dropna().astype(str)),
axis=1
)
dispo_df.head(5)

Вот как выглядят данные шаблонов SafeGraph:

Итак, теперь у нас есть два отдельных набора данных, один из официального города Денвер с такой информацией, как координаты местоположения и тип лицензии на спиртные напитки, а другой из SafeGraph, который содержит информацию о показателях посещаемости и популярности. Возникает вопрос, как нам объединить эти два набора данных. Ответ можно найти в концепции генерации Placekey.

Placekey решает многие проблемы, связанные с понятиями сопоставления адресов, путем создания уникального идентификатора для всех точек интереса и использования сгенерированного значения в качестве столбца соединения. Процесс создания ключа метки прост, и отличное пошаговое руководство по этому процессу можно найти здесь.

patterns_18_m_path = ‘/content/drive/MyDrive/UpWork/safeGraph/Data Projects/Project1/Patterns Data M/year sep/patterns_2018_m.csv’
patterns18_m_df = pd.read_csv(patterns_18_m_path)
#{‘city’, ‘iso_country_code’, ‘query_id’, ‘location_name’, ‘longitude’, ‘postal_code’, ‘region’, ‘latitude’, ‘street_address’}
def get_df_for_api(df, column_map = {
“index”: “query_id”, “Entity Name” : “location_name”,”Address” : “street_address”,
“Facility City”: “city”, “region”: “region”, “Facility Zip Code”: “postal_code”}):
    df_for_api = df.rename(columns=column_map)
    cols = list(column_map.values())
    df_for_api = df_for_api[cols]
    df_for_api[‘iso_country_code’] = ‘US’
    return(df_for_api)
dispo_df[‘index’] = dispo_df[‘index’].astype(str)
dispo_df[‘region’] = ‘CO’
df_for_api = get_df_for_api(dispo_df)
df_for_api[‘postal_code’] = df_for_api[‘postal_code’].astype(int).astype(str)
df_for_api

data_jsoned = json.loads(df_for_api.to_json(orient=”records”))
print(“number of records: “, len(data_jsoned))
print(“example record:”)
data_jsoned[0]

responses = pk_api.lookup_placekeys(data_jsoned, verbose=True)
df_placekeys = pd.read_json(json.dumps(responses), dtype={‘query_id’:str})
df_placekeys.head()

Этот фрагмент кода берет эти сгенерированные Placekeys и объединяет их с данными Denver Dispensary:

def merge_and_format(loc_df, placekeys_df):   
    lr_placekey = pd.merge(loc_df, placekeys_df, left_on=”index”,
    right_on=”query_id”, how=’left’)    lr_placekey =
    lr_placekey.drop(‘error’, axis=1)
    lr_placekey[‘address_placekey’] = df_placekeys.placekey.str[:3]+
    df_placekeys.placekey.str[-12:]    
    lr_placekey = lr_placekey[[‘placekey’,‘address_placekey’]
    +list(loc_df.columns)]   
    return(lr_placekey)
loc_placekey=merge_and_format(liquor_df,df_placekeys)
def merge_with_patterns(patterns_df, loc_res_placekey):
    patterns_df[‘address_placekey’] patterns_df.placekey.str[:3]+patterns_df.placekey.str[-12:]
    df = loc_res_placekey.merge(patterns_df.drop(‘placekey’,  axis=1), how=’inner’,on=’address_placekey’)
    df = df.reset_index().drop(‘index’,axis=1)
    return(df)df = merge_with_patterns(patterns18_df, loc_placekey)cols = list(df.columns)cols.pop(cols.index(‘address_placekey’))df = df[[‘address_placekey’] + cols]print(df.shape)liquor_GS_df = df

Теперь, когда у нас есть отформатированные данные, мы можем начать процесс их анализа.

Денверские диспансеры: успех Botanico 2

При просмотре общей средней популярности и посещений диспансерных данных мы видим следующие тенденции:

В обоих случаях рекорд, который является самым популярным диспансером в 2018 году, соответствует Canosa Properties and Investments LLC, но есть интересное изменение, которое вы можете увидеть, если посмотрите на диаграммы этих показателей рядом.

Метрики посетителей не показывают значение этой записи как выброса, это странное отличие от данных, которые мы видели в предыдущем анализе алкогольных напитков. Во время анализа ликера, если запись была выбросом в метриках посетителя, она также была выбросом в метриках популярности. Это интересный вариант, и мы можем продолжить поиск этой потенциальной тенденции в будущем, а пока давайте рассмотрим причину успеха этого конкретного диспансера.

Выполнив быстрый поиск в Google по торговому наименованию BOTANICO 2, мы увидели, что рейтинг очень хороший: 3,9 на Weedmaps и 4,7 на Leafly. Это может свидетельствовать о том, что причина того, что этот диспансер работает так хорошо, заключается в том, что он предлагает такие хорошие услуги и качественные продукты.

Как соотносятся рейтинги этого конкретного диспансера с другими рейтингами диспансеров с тем же почтовым индексом?

Мы видим, что в этом почтовом индексе есть два диспансера, только Botanico имеет стабильно хорошие оценки популярности, другой диспансер не очень хорошо оценивался, и низкое качество другого диспансера могло быть связано с успехом Botanico 2.

Может ли быть какая-то другая причина популярности именно этого диспансера, например, местные магазины вокруг него? Давайте проверим местные бренды, связанные с каждой из этих записей:

Из этого видно, что нет брендов, которые коррелируют с популярностью диспансера. Корреляция потенциально может быть отнесена к большому количеству продуктовых брендов и продуктовых магазинов, которые связаны с диспансером, но это не очень хорошо подтверждается данными, поскольку корреляция с такими местами, как отели и хозяйственные магазины выше, чем у продуктовые и продуктовые магазины.

Давайте проанализируем ежемесячные данные диспансерных данных и посмотрим, поможет ли это найти причину популярности BOTANICO 2.

Ежемесячный анализ данных о диспансерах Денвера: коррелируют ли более холодные месяцы с большей популярностью диспансеров

Как и в предыдущем месячном анализе тенденций, фрагменты кода здесь будут сравнивать показатели популярности и посещений за каждый месяц 2018 года. В этот раздел код не будет включен, поскольку он повторяется из ежемесячного анализа алкогольных напитков. Чтобы самостоятельно заглянуть в код и поиграть с данными, не стесняйтесь заглянуть в записную книжку.

Январь:

Февраль:

Март:

Апрель:

Май:

Июнь:

Июль:

Август:

Сентябрь:

Октябрь:

Ноябрь:

Декабрь:

Ежемесячный анализ показывает интересную закономерность. Похоже, что по мере того, как становится холоднее, показатели популярности и посещаемости диспансеров в Денвере в 2018 году растут. Это, конечно, резко контрастирует с данными о потреблении алкоголя, где рост этих же показателей происходил по мере того, как погода становилась теплее. Это также немного противоречит тому, что я лично ожидал, потому что апрель месяц является лидером по популярности этих диспансеров. Похоже, что так же, как минимальное влияние увеличения продаж спиртных напитков в праздничные дни на общие результаты данных, продажи марихуаны 20 апреля очень мало повлияли на потребление в этом месяце в целом, и, таким образом, апрель месяц не очень занимает высокое место в этом списке. Теперь давайте подтвердим нашу теорию относительно популярности диспансеров с помощью сезонного анализа.

Данные диспансера: сезонный анализ

Этот фрагмент объединяет предыдущие данные ежемесячного анализа в одну таблицу и добавляет сезонную информацию:

Season_Df = pd.DataFrame(data = {‘Monthly_avg_visits’: [2.645161,1.571429,2.258065,2.5,1.741935,1.633333,1.419355,1.354839,2.166667,2.612903,2.466667,2.516129]
,’Monthly_avg_pop’: [13.958333,6.125,8.291667,8.291667,6.541667,7.125,5.5,4.958333,7.125,8.541667,7.458333,9.333333],
‘Season’: [‘Winter’,’Winter’,’Spring’,’Spring’,’Spring’,’Summer’,’Summer’,’Summer’,’Fall’,’Fall’,’Fall’,’Winter’]})
Season_Df.head()

Визулинг этих данных дает следующие графики:

Из этих графиков мы можем в первую очередь увидеть, что корреляция между показателями посещаемости и популярности является линейной, и этот вывод также был характерен для линейных данных. Присмотревшись, мы видим, что зимние и осенние месяцы намного популярнее, чем другие месяцы. Это резко контрастирует с тем, что рассматривалось ранее с данными по алкогольным напиткам, которые показали, что популярность винных магазинов увеличивалась в теплые месяцы. Давайте применим этот же анализ ко всему набору данных, а не только к среднемесячным, и посмотрим, сохраняется ли тенденция.

Из этих тенденций видно, что корреляция между популярностью и посещениями сохраняется при использовании полных данных. Более того, мы снова видим, что наиболее популярными сезонами являются зима и осень, что подтверждает нашу гипотезу.

Заключение:

Что касается посетителей (по сезонам), наибольшее количество посещений в диспансеры приходилось на январь, октябрь, ноябрь, декабрь и март. Это удивительно, потому что было бы разумнее, чтобы апрель был самым популярным месяцем, а наступление 4/20 стало популярным днем ​​для употребления марихуаны. Но, как и в случае с данными о спиртных напитках, наличие одного дня месяца, когда продукт популярен, не компенсирует общее среднее количество посещений за весь месяц. Наблюдается тенденция к увеличению количества посещений диспансеров при более холодной погоде.

Что касается популярности, наиболее популярными месяцами были январь, декабрь, октябрь, март, апрель и ноябрь. Это кажется интересным, потому что это коррелирует с сезонными тенденциями посещений - более холодные месяцы, как правило, показывают рост популярности диспансеров. Одна из существующих тенденций заключается в том, что в апреле месяце наблюдается значительный рост популярности. Это интересно из-за разницы между посещаемостью и тенденциями популярности. Это может быть связано с тем, что диспансер BOTANICO 2 в основном продает через Интернет. Это могло быть причиной роста популярности, но не увеличения количества посещений.

Вопросы?

Я приглашаю вас задать их в канале #safegraphdata SafeGraph Community, бесплатного сообщества Slack для энтузиастов данных. Получайте поддержку, делитесь своей работой или общайтесь с другими участниками ГИС-сообщества. Благодаря сообществу SafeGraph ученые имеют свободный доступ к данным о более чем 7 миллионах предприятий в США, Великобритании и Канаде.