Invada um cientista de dados para encontrar os Meetups certos (usando Python)

Conteúdo

Introdução

Cientistas de dados são uma raça preguiçosa de animais!! Detestamos a prática de fazer qualquer trabalho repetível manualmente. Nós nos encolhemos de medo com o simples pensamento de fazer tarefas manuais tediosas e quando nos deparamos com um, tentamos automatizá-lo para que o mundo se torne um lugar melhor.

Temos hospedado algumas reuniões na Índia nos últimos meses e queríamos ver o que algumas das melhores reuniões ao redor do mundo estavam fazendo. Para um ser humano normal, isso significaria navegar nas páginas da reunião e encontrar essas informações manualmente.

Não é para um cientista de dados!

O que são reuniões?

Meetup pode ser melhor compreendido como uma reunião auto-organizada de pessoas para atingir um objetivo predefinido. Meetup.com é a maior rede de grupo local do mundo. A missão do Meetup é “revitalizar a comunidade local e ajudar as pessoas ao redor do mundo a se organizarem”.

meet-9420108

O processo de busca de reuniões pode levar muito tempo (Eu prefiro dizer isso). Existem várias limitações anexadas (que eu expliquei na próxima seção). Mas, Como um cientista de dados executaria essa tarefa para economizar tempo? Claro, se esforçaria para automatizar este processo!

Neste artigo, Apresentarei a abordagem de um cientista de dados para localizar grupos de reuniões usando Python. Tomando isso como referência, você pode encontrar grupos localizados em qualquer canto da terra. Você também pode adicionar sua própria camada de análise para descobrir algumas ideias interessantes.

Inscreva-se no Data Hackathon 3.X: ganhe um cupom no valor da Amazon 10.000 rúpias (~ 200 Dólares)

O desafio com foco manual

Digamos que você queira descobrir e participar de algumas das melhores reuniões em sua área.. Obviamente, você pode fazer esta tarefa manualmente, mas existem alguns desafios que você enfrenta:

  • Pode haver vários grupos com nomes e finalidades semelhantes. Torna-se difícil encontrar os corretos apenas lendo os nomes.
  • Digamos que você esteja procurando reuniões em ciência de dados, você precisará navegar manualmente por cada um dos grupos, ver varios parametros para juzgar su calidad (por exemplo, frequência de reunião, Filiação, crítica média, etc.) e então tomar a decisão de se juntar ao grupo ou não, Parece muito trabalho para mim!
  • O que mais, se você tiver algum requisito específico, como se você quisesse ver grupos presentes em várias cidades, você vai acabar navegando nos grupos de cada cidade manualmente; Eu já me encolho com o pensamento.

Suponha que você esteja em uma localidade com mais de 200 grupos em sua área de interesse. Como você encontraria o melhor?

encontro-000212-4307875

A solução do cientista de dados

Neste artigo, Eu identifiquei vários Python Meetups das cidades na Índia, EE. UU., Reino Unido, HK, TW y Australia. A seguir estão as etapas que irei realizar:

  • Obtenha informações de meetup.com usando a API que eles forneceram.
  • Mova os dados para um DataFrame e
  • Analise-o e junte-se aos grupos certos

Essas etapas são muito fáceis de executar. A seguir, Eu listo as etapas para realizá-los. Como mencionado anteriormente, este é apenas o começo das possibilidades que se abrem. Você pode usar essas informações para obter um grande conhecimento sobre várias comunidades ao redor do mundo..

Paso 0: importar bibliotecas

Abaixo está a lista de bibliotecas que usei para codificar este projeto.

importar urllib
importar json
importar pandas como pd
import matplotlib.pyplot as plt
de geopy.geocoders import Nominatim

Aqui está uma rápida visão geral dessas bibliotecas:

  • urllib: Este módulo fornece uma interface de alto nível para obter dados da World Wide Web.
  • json (Notação de objeto de script Java): la biblioteca json puede analizar JSON a partir de cadenas o archivos. A biblioteca analisa JSON em um dicionário Python ou lista.
  • pandas: Usado para operações e manipulações de dados estruturados. Muito usado para preparação e processamento de dados.
  • matplotlib: Usado para traçar uma ampla variedade de gráficos, a partir de histogramas hasta gráficos de líneas y gráficos de calor.
  • geocodificadores: Biblioteca de geocodificação simples e consistente escrita em Python.

Paso 1: usar API para ler dados em formato JSON

Você pode obter dados de qualquer site de várias maneiras:

  • Rastreie páginas da web usando uma combinação de bibliotecas como BeautifulSoup e Scrapy. Encontre tendências subjacentes em html usando expressões regulares para extrair os dados necessários.
  • Se o site fornece uma API (interface de programação de aplicativo), use-o para obter os dados. Você pode entender isso como um intermediário entre um programador e um aplicativo. Este corretor aceita solicitações e, se esse pedido for permitido, retorna os dados.
  • Ferramentas como import.io também podem ajudá-lo a fazer isso.

Para sites que fornecem uma API, geralmente é a melhor maneira de obter as informações. O primeiro método mencionado acima é suscetível a alterações de layout em uma página e, as vezes, pode ser muito complicado. Felizmente, Meetup.com oferece vários API para acessar os dados necessários. Usando esta API, podemos acessar informações sobre vários grupos.

Para acessar a solução baseada em API automatizada, precisaríamos de coragem para sig_id e sig (diferente para diferentes usuários). Siga as etapas abaixo para acessá-los.

assinado_url-3637734

Paso 2: Gere uma lista de urls assinados para todas as cidades fornecidas

Agora, devemos solicitar um url assinado para cada pesquisa (no nosso caso, Cidade + tema) e a saída desses urls assinados fornecerá informações detalhadas sobre os grupos correspondentes:

  • Crie uma lista de todas as cidades
  • Crie um objeto para acessar a longitude e latitude da cidade.
  • Acesse a cidade da lista fornecida e gere a latitude e longitude usando “geolocalizador “ objeto
  • Gerar string de URL com atributos obrigatórios como formato de dados (json), rádio (número de milhas do centro da cidade, 50), tema (Pitão), latitude e longitude
  • Repita esta etapa para cada cidade e adicione todos os URLs em uma lista
lugares = [ "São Francisco", "Califórnia", "boston ", "Nova york" , "Pensilvânia", "Colorado", "Seattle", "Washington","os anjos", "São Diego", "houston", "Austin", "kansas", "Délhi", "Chennai", "Bangalore", "Mumbai" , "Sydney","Melbourne", "Perth", "Adelaide", "Brisbane", "Launceston", "Newcastle" , "pequim", "Xangai", "Suzhou", "Shenzhen","Guangzhou","Dongguan", "Taipei", "Chengdu", "Hong Kong"]
urls = [] #listas de urls
raio = 50.0 #adicione o raio em milhas
data_format = "json"
tópico = "Pitão" #adicione sua escolha de tópico aqui
sig_id = "########" # inicialize com o seu ID de sinal, verificar amostra de chave assinada
sig = "##############" # inicialize com o seu signo, verificar amostra de chave assinada
para lugar em lugares: 
 location = geolocator.geocode(Lugar, colocar)
 urls.append("https://api.meetup.com/2/groups?deslocamento = 0&format =" + formato de dados + "&lon =" + str(location.longitude) + "&tópico =" + tema + "&photo-host = public&page = 500&raio =" + str(raio)+"&campos =&anos =" + str(location.latitude) + "&pedido = id&desc = false&sig_id =" +sig_id + "&sig =" + sig)

Paso 3: ler dados de url e acessar funções relevantes em um DataFrame

Agora, temos uma lista de urls para todas as cidades. A seguir, vamos usar a biblioteca urllib para ler dados no formato JSON. Mais tarde, vamos ler os dados em uma lista antes de convertê-la em um DataFrame.

cidade,país,Avaliação,nome,membros = [],[],[],[],[]
para url em urls:
 resposta = urllib.urlopen(url)
 data = json.loads(response.read())
 dados = dados["resultados"] #dados acessados ​​da chave de resultados apenas
 
para mim nos dados :
 city.append(eu['cidade'])
 country.append(eu['país'])
 rating.append(eu['Avaliação'])
 name.append(eu['nome'])
 members.append(eu['membros']) 
 
df = pd.DataFrame([cidade,país,Avaliação,nome,membros]).T
df.columns =['cidade','país','Avaliação','nome','membros']

python-9107865

Paso 4: compare grupos Meetup em várias cidades

É hora de analisar os dados agora e encontrar os grupos certos com base em várias métricas, como o número de membros, as qualificações, a cidade e outros. Aqui estão algumas descobertas básicas, que eu gerei para grupos de pítons em diferentes cidades da Índia, EE. UU., Reino Unido, HK, TW y Australia.

Para saber mais sobre esses códigos Python, Você pode ler artigos sobre como explorar e visualizar dados usando Python

Número de grupos Python em seis países

freq = df.groupby('país').city.count() 
fig = plt.figure(figsize =(8,4))
ax1 = fig.add_subplot(121)
ax1.set_xlabel('País')
ax1.set_ylabel('Contagem de Grupos')
ax1.set_title("Número de grupos Meetup em Python")
freq.plot(kind = 'bar') number_groups-6157079Acima você pode notar que os EUA são os líderes em grupos de encontro de python. This stats can also help us to estimate the penetration of python in US data science industry compare to others.

Tamanho médio dos grupos em todos os países

freq = df.groupby('país').membros.sum()/df.groupby('país').membros.contagem()
fig = plt.figure(figsize =(8,4))
ax1 = fig.add_subplot(121)
ax1.set_xlabel('País')
ax1.set_ylabel('Média de membros em cada grupo')
ax1.set_title("Grupos Meetup Python")
freq.plot(kind = 'bar')

Average_members-7923124
Mais uma vez, EE. UU. Surge como líder em número médio de membros em cada grupo, enquanto CN tem a menor média.

Avaliação média de grupos em todos os países

freq = df.groupby('país').rating.sum()/df.groupby('país').rating.count()
fig = plt.figure(figsize =(8,4))
ax1 = fig.add_subplot(121)
ax1.set_xlabel('País')
ax1.set_ylabel('Classificação média')
ax1.set_title("Grupos Meetup Python")
freq.plot(kind = 'bar')

Average_rating-9166011AU e EE. UU. Eles têm uma classificação média semelhante (~ 4) em todos os grupos.

o 2 melhores grupos de cada país

df = df.sort(['país','membros'], ascendente =[Falso,Falso])
df.groupby('país').cabeça(2)

top_2_groups-1005934

É hora de identificar os dois grupos principais em cada país com base no número de membros. Você também pode identificar grupos com base na classificação. Aqui, fiz uma análise básica para ilustrar essa abordagem. Você também pode acessar outras APIs para encontrar informações como os próximos eventos, número de eventos, duração dos eventos e outros e, em seguida, mesclar todas as informações relevantes com base no group_id (ou valor-chave).

Código final

Abaixo está o código final para este exercício, você pode brincar com isso colocando sua sig_id e chave de assinatura e pesquisar vários resultados de diferentes tópicos em diferentes cidades. Eu também fiz o upload em GitHub.

importar urllib
importar json
importar pandas como pd
import matplotlib.pyplot as plt
de geopy.geocoders import Nominatim
Geolocator = Por nome() #criar objeto
lugares = [ "São Francisco", "Califórnia", "boston ", "Nova york" , "Pensilvânia", "Colorado", "Seattle", "Washington","os anjos", "São Diego", "houston", "Austin", "kansas", "Délhi", "Chennai", "Bangalore", "Mumbai" , "Sydney","Melbourne", "Perth", "Adelaide", "Brisbane", "Launceston", "Newcastle" , "pequim", "Xangai", "Suzhou", "Shenzhen","Guangzhou","Dongguan", "Taipei", "Chengdu", "Hong Kong"]
# faça login em meetup.com. se você não tem uma conta, então por favor inscreva-se
# Vá para https://secure.meetup.com/meetup_api/console/?caminho = / 2 / grupos
# Em tópicos como "Pitão", insira o tópico de sua escolha. e clique em mostrar resposta
# copie a chave assinada. na tonalidade chamuscada, copie o sig_id e sig e inicialize as variáveis ​​sig_id e sig
# amostra de chave assinada : "https://api.meetup.com/2/groups?deslocamento = 0&format = json&topic = python&photo-host = public&page = 20&raio = 25,0&campos =&pedido = id&desc = false&sig_id = ******&sig = *****************"
urls = [] #listas de urls
raio = 50.0 #adicione o raio em milhas
data_format = "json" #você pode adicionar outro formato como XML
tópico = "Pitão" #adicione sua escolha de tópico aqui
sig_id = "186640998" # inicialize com o seu ID de sinal, verificar amostra de chave assinada
sig = "6dba1b76011927d40a45fcbd5147b3363ff2af92" # inicialize com o seu signo, verificar amostra de chave assinada
para lugar em lugares: 
 location = geolocator.geocode(Lugar, colocar)
 urls.append("https://api.meetup.com/2/groups?deslocamento = 0&format =" + formato de dados + "&lon =" + str(location.longitude) + "&tópico =" + tema + "&photo-host = public&page = 500&raio =" + str(raio)+"&campos =&anos =" + str(location.latitude) + "&pedido = id&desc = false&sig_id =" +sig_id + "&sig =" + sig)
cidade,país,Avaliação,nome,membros = [],[],[],[],[]
para url em urls:
 resposta = urllib.urlopen(url)
 data = json.loads(response.read())
 dados = dados["resultados"]
 
para mim nos dados :
 city.append(eu['cidade'])
 country.append(eu['país'])
 rating.append(eu['Avaliação'])
 name.append(eu['nome'])
 members.append(eu['membros']) 
 
df = pd.DataFrame([cidade,país,Avaliação,nome,membros]).T
df.columns =['cidade','país','Avaliação','nome','membros']
df.sort(['membros','Avaliação'], ascendente =[Falso, Falso])
freq = df.groupby('país').city.count()
fig = plt.figure(figsize =(8,4))
ax1 = fig.add_subplot(121)
ax1.set_xlabel('País')
ax1.set_ylabel('Contagem de Grupos')
ax1.set_title("Número de grupos Meetup em Python")
freq.plot(kind = 'bar')
freq = df.groupby('país').membros.sum()/df.groupby('país').membros.contagem()
ax1.set_xlabel('País')
ax1.set_ylabel('Média de membros em cada grupo')
ax1.set_title("Grupos Meetup Python")
freq.plot(kind = 'bar')
freq = df.groupby('país').rating.sum()/df.groupby('país').rating.count()
ax1.set_xlabel('País')
ax1.set_ylabel('Classificação média')
ax1.set_title("Grupos Meetup Python")
freq.plot(kind = 'bar')
df = df.sort(['país','membros'], ascendente =[Falso,Falso])
df.groupby('país').cabeça(2)

Notas finais

Neste artigo, Analisamos o aplicativo Python para automatizar um processo manual e o nível de precisão para encontrar os grupos Meetup certos. Usamos API para acessar informações da web e transferi-las para um DataFrame. Subseqüentemente, analisamos essas informações para gerar insights práticos.

Podemos tornar este aplicativo mais inteligente adicionando informações adicionais, como eventos futuros, número de eventos, RSVP e várias outras métricas. Você também pode usar esses dados para obter informações interessantes sobre a comunidade e as pessoas. Por exemplo, O RSVP para a taxa de participação para revisar o funil de taxas difere de país para país?? Quais países planejam suas reuniões com antecedência?

Experimente no final e compartilhe seu conhecimento na seção de comentários abaixo.

Se você gostou do que acabou de ler e deseja continuar seu aprendizado sobre análise, inscreva-se em nossos e-mails, Siga-nos no Twitter ou como o nosso página do Facebook.

Assine a nossa newsletter

Nós não enviaremos SPAM para você. Nós odiamos isso tanto quanto você.