Hacken Sie einen Datenwissenschaftler, um die richtigen Meetups zu finden (mit Python)

Teilen auf Facebook
Teilen auf twittern
Teilen auf verlinktin
Teilen auf Telegramm
Teilen auf WhatsApp

Inhalt

Einführung

Data Scientists sind eine faule Tierrasse!! Wir verabscheuen die Praxis, wiederholbare Arbeiten manuell auszuführen. Wir ducken uns ängstlich bei dem bloßen Gedanken, mühsame manuelle Aufgaben zu erledigen und wenn wir mit einem, Wir versuchen es zu automatisieren, damit die Welt ein besserer Ort wird.

Wir haben in den letzten Monaten einige Meetings in Indien veranstaltet und wollten sehen, was einige der besten Meetings der Welt machen. Für einen normalen Menschen, Dies würde bedeuten, dass Sie die Meeting-Seiten durchsuchen und diese Informationen manuell finden.

Nichts für einen Datenwissenschaftler!

Was sind Treffen??

Meetup kann besser als ein selbstorganisiertes Treffen von Menschen verstanden werden, um ein vordefiniertes Ziel zu erreichen. Meetup.com ist das weltweit größte lokale Gruppennetzwerk. Die Mission von Meetup ist “revitalisieren Sie die lokale Gemeinschaft und helfen Sie Menschen auf der ganzen Welt, sich zu organisieren”.

treffen-942008

Die Besprechungssuche kann lange dauern (Ich sage es lieber). Es gibt mehrere angehängte Einschränkungen (die ich im nächsten Abschnitt erklärt habe). Aber, Wie würde ein Datenwissenschaftler diese Aufgabe ausführen, um Zeit zu sparen?? Natürlich, würde versuchen, diesen Prozess zu automatisieren!

In diesem Artikel, Ich werde Ihnen den Ansatz eines Datenwissenschaftlers zum Auffinden von Besprechungsgruppen mit Python vorstellen. Nimm das als Referenz, Sie können Gruppen in jedem Winkel der Erde finden. Sie können auch Ihre eigene Analyseebene hinzufügen, um einige coole Ideen zu entdecken.

Melden Sie sich für den Daten-Hackathon 3.X an: gewinne einen Amazon-Gutschein im Wert von 10.000 Rupien (~ 200 Dollar)

Die Herausforderung beim manuellen Fokus

Angenommen, Sie möchten einige der besten Meetings in Ihrer Nähe herausfinden und daran teilnehmen.. Offensichtlich, Sie können diese Aufgabe manuell ausführen, aber es gibt einige Herausforderungen, denen du gegenüberstehst:

  • Es könnte mehrere Gruppen mit ähnlichen Namen und Zwecken geben. Allein durch das Lesen der Namen wird es schwierig, die richtigen zu finden.
  • Nehmen wir an, Sie suchen nach Meetings im Bereich Data Science, Sie müssen manuell durch jede der Gruppen navigieren, Sehen Sie sich verschiedene Parameter an, um die Qualität zu beurteilen (zum Beispiel, Sitzungshäufigkeit, Mitgliedschaft, durchschnittliche Bewertung, etc.) und dann die Entscheidung treffen, der Gruppe beizutreten oder nicht, Es scheint mir viel Arbeit zu sein!
  • Was ist mehr, wenn Sie spezielle Anforderungen haben, als ob Sie Gruppen in mehreren Städten sehen möchten, Sie werden am Ende die Gruppen jeder Stadt manuell durchsuchen; Ich schrecke schon bei dem Gedanken zurück.

Angenommen, Sie befinden sich in einem Ort mit mehr als 200 Gruppen in Ihrem Interessengebiet. Wie findest du das Beste??

treffen-000212-4307875

Die Lösung des Data Scientists

In diesem Artikel, Ich habe mehrere identifiziert Python-Treffen der Städte in Indien, EE. UU., Vereinigtes Königreich, HK, TW und Australien. Die folgenden Schritte werde ich ausführen:

  • Holen Sie sich Informationen von meetup.com über die bereitgestellte API.
  • Verschieben Sie die Daten in einen DataFrame und
  • Analysiere es und trete den richtigen Gruppen bei

Diese Schritte sind ganz einfach durchzuführen. Dann, Ich liste die Schritte auf, um sie durchzuführen. Wie bereits erwähnt, Das ist erst der Anfang der Möglichkeiten, die sich eröffnen. Sie können diese Informationen verwenden, um eine Fülle von Wissen über verschiedene Gemeinschaften auf der ganzen Welt zu erlangen..

Paso 0: Bibliotheken importieren

Unten ist die Liste der Bibliotheken, die ich verwendet habe, um dieses Projekt zu codieren.

URL importieren
json importieren
Pandas als pd importieren
import matplotlib.pyplot als plt
von geopy.geocoders importieren Nominatim

Hier ist ein kurzer Überblick über diese Bibliotheken:

  • urllib: Dieses Modul bietet eine High-Level-Schnittstelle zum Abrufen von Daten aus dem World Wide Web.
  • json (JavaScript-Objekt-Notation): json-Bibliothek kann JSON aus Strings oder Dateien analysieren. Die Bibliothek parst JSON in ein Python-Wörterbuch oder eine Python-Liste.
  • Pandas: Wird für strukturierte Datenmanipulationen und Operationen verwendet. Viel verwendet für die Datenaufbereitung und -verarbeitung.
  • matplotlib: Wird zum Plotten einer Vielzahl von Grafiken verwendet, von Histogrammen zu Liniendiagrammen und Wärmediagrammen.
  • Geocoder: Einfache und konsistente Geokodierungsbibliothek, geschrieben in Python.

Paso 1: Verwenden Sie die API, um Daten im JSON-Format zu lesen

Sie können auf verschiedene Weise Daten von jeder Website abrufen:

  • Verfolgen Sie Webseiten mit einer Kombination aus Bibliotheken wie BeautifulSoup und Scrapy. Finden Sie zugrunde liegende Trends in HTML mithilfe von regulären Ausdrücken, um die erforderlichen Daten zu extrahieren.
  • Wenn die Website eine API bereitstellt (Programmierschnittstelle), Verwenden Sie es, um die Daten zu erhalten. Sie können dies als Vermittler zwischen einem Programmierer und einer Anwendung verstehen. Dieser Broker akzeptiert Anfragen und, wenn diese Anfrage erlaubt ist, gibt die Daten zurück.
  • Tools wie import.io können Ihnen dabei auch helfen.

Für Websites, die eine API bereitstellen, ist normalerweise der beste Weg, um die Informationen zu erhalten. Die erste oben erwähnte Methode ist anfällig für Layoutänderungen auf einer Seite und, manchmal, es kann sehr kompliziert sein. Glücklicherweise, Meetup.com bietet mehrere API um auf die benötigten Daten zuzugreifen. Verwenden dieser API, wir können auf Informationen über verschiedene Gruppen zugreifen.

So greifen Sie auf die automatisierte API-basierte Lösung zu, wir bräuchten Mut dazu sig_id Ja sig (unterschiedlich für verschiedene Benutzer). Befolgen Sie die folgenden Schritte, um auf diese zuzugreifen.

signierte_url-3637734

Paso 2: Erstellen Sie eine Liste der signierten URLs für alle angegebenen Städte

Jetzt, wir sollten für jede Suche eine signierte URL anfordern (in unserem Fall, Stadt + Thema) und die Ausgabe dieser signierten URLs liefert die detaillierten Informationen zu den übereinstimmenden Gruppen:

  • Erstellen Sie eine Liste aller Städte
  • Erstellen Sie ein Objekt, um auf den Längen- und Breitengrad der Stadt zuzugreifen.
  • Greifen Sie über die angegebene Liste auf die Stadt zu und generieren Sie den Breiten- und Längengrad mit “Geolokalisierer “ Objekt
  • URL-String mit erforderlichen Attributen als Datenformat generieren (json), Radio (Kilometer vom Stadtzentrum entfernt, 50), Thema (Python), Breiten-und Längengrad
  • Wiederholen Sie diesen Schritt für jede Stadt und fügen Sie alle URLs in eine Liste ein
Orte = [ "San Francisco", "Kalifornien", "Boston ", "New York" , "Pennsylvania", "Colorado", "Seattle", "Washington","Die Engel", "San Diego", "Houston", "austin", "Kansas", "Delhi", "chennai", "Bangalore", "Mumbai" , "Sydney","Melbourne", "Perth", "Adelaide", "Brisbane", "Launceston", "Newcastle" , "Peking", "shanghai", "Suzhou", "Shenzhen","Guangzhou","Dongguan", "Taipeh", "Chengdu", "Hongkong"]
URLs = [] #URL-Listen
Radius = 50.0 #füge den Radius in Meilen hinzu
data_format = "json"
Thema = "Python" #füge hier deine Themenwahl hinzu
sig_id = "########" # mit Ihrer Zeichen-ID initialisieren, Überprüfen Sie das Muster des signierten Schlüssels
sig = "##############" # mit deinem Zeichen initialisieren, Überprüfen Sie das Muster des signierten Schlüssels
für Platz an Orten: 
 Standort = geolocator.geocode(Platz)
 urls.anhängen("https://api.meetup.com/2/groups?Offset=0&format=" + Datei Format + "&lon=" + str(Lage.Längengrad) + "&Thema=" + Thema + "&photo-host=public&Seite=500&Radius=" + str(Radius)+"&Felder=&Jahre =" + str(Lage.Breitengrad) + "&order=id&desc = falsch&sig_id=" +sig_id + "&sig =" + sig)

Paso 3: Daten aus URL lesen und auf relevante Funktionen in einem DataFrame zugreifen

Jetzt, Wir haben eine Liste mit URLs für alle Städte. Dann, Wir werden die URLlib-Bibliothek verwenden, um Daten im JSON-Format zu lesen. Später, Wir werden die Daten in einer Liste lesen, bevor wir sie in einen DataFrame konvertieren.

Stadt,Land,Bewertung,Name,Mitglieder = [],[],[],[],[]
für URL in URLs:
 Antwort = urllib.urlopen(URL)
 data = json.loads(antwort.lesen())
 Daten = Daten["Ergebnisse"] #nur auf Daten des Ergebnisschlüssels zugegriffen
 
für ich in daten :
 Stadt.anhängen(ich['Stadt'])
 Land.anhängen(ich['Land'])
 Bewertung.anhängen(ich['Bewertung'])
 name.anhängen(ich['Name'])
 Mitglieder.anhängen(ich['Mitglieder']) 
 
df = pd.DataFrame([Stadt,Land,Bewertung,Name,Mitglieder]).T
df.columns=['Stadt','Land','Bewertung','Name','Mitglieder']

Python-9107865

Paso 4: Meetup-Gruppen in verschiedenen Städten vergleichen

Jetzt ist es an der Zeit, die Daten zu analysieren und anhand verschiedener Metriken die richtigen Gruppen zu finden, wie die Anzahl der Mitglieder, Die Qualifikationen, die stadt und andere. Hier einige grundlegende Erkenntnisse, die ich für Python-Gruppen in verschiedenen Städten Indiens generiert habe, EE. UU., Vereinigtes Königreich, HK, TW und Australien.

Um mehr über diese Python-Codes zu erfahren, Sie können Artikel zum Untersuchen und Visualisieren von Daten mit Python lesen

Anzahl der Python-Gruppen in sechs Ländern

freq = df.groupby('Land').city.count() 
fig = plt.figur(Feigengröße=(8,4))
ax1 = fig.add_subplot(121)
ax1.set_xlabel('Land')
ax1.set_ylabel('Anzahl der Gruppen')
ax1.set_title("Anzahl der Python Meetup-Gruppen")
freq.plot(kind='bar') number_groups-6157079Oben können Sie feststellen, dass die USA bei Python-Meetup-Gruppen führend sind. Diese Statistiken können uns auch helfen, die Durchdringung von Python in der US-amerikanischen Data-Science-Industrie im Vergleich zu anderen abzuschätzen..

Durchschnittliche Gruppengröße in allen Ländern

freq = df.groupby('Land').Mitglieder.summe()/df.groupby('Land').Mitglieder.Anzahl()
fig = plt.figur(Feigengröße=(8,4))
ax1 = fig.add_subplot(121)
ax1.set_xlabel('Land')
ax1.set_ylabel('Durchschnittliche Mitglieder in jeder Gruppe')
ax1.set_title("Python Meetup-Gruppen")
freq.plot(kind='bar')

Durchschnitt_Mitglieder-7923124
Ein Mal noch, EE. UU. Erscheint als Anführer bei der durchschnittlichen Anzahl der Mitglieder in jeder Gruppe, während CN den niedrigsten Durchschnitt hat.

Durchschnittliche Bewertung der Gruppen in allen Ländern

freq = df.groupby('Land').Bewertungssumme()/df.groupby('Land').Bewertung.Anzahl()
fig = plt.figur(Feigengröße=(8,4))
ax1 = fig.add_subplot(121)
ax1.set_xlabel('Land')
ax1.set_ylabel('Durchschnittliche Bewertung')
ax1.set_title("Python Meetup-Gruppen")
freq.plot(kind='bar')

Average_rating-9166011AU und EE. UU. Sie haben eine ähnliche durchschnittliche Bewertung (~ 4) in allen Gruppen.

Das 2 beste Gruppen aus jedem Land

df=df.sort(['Land','Mitglieder'], aufsteigend=[Falsch,Falsch])
df.groupby('Land').Kopf(2)

top_2_groups-1005934

Es ist an der Zeit, die beiden Hauptgruppen in jedem Land basierend auf der Anzahl der Mitglieder zu identifizieren. Sie können auch Gruppen basierend auf der Bewertung identifizieren. Hier habe ich eine grundlegende Analyse durchgeführt, um diesen Ansatz zu veranschaulichen. Sie können auch auf andere APIs zugreifen, um Informationen wie anstehende Veranstaltungen zu finden, Anzahl der Veranstaltungen, Dauer von Events und anderen und führen dann alle relevanten Informationen basierend auf group_id . zusammen (oder Schlüsselwert).

Endgültiger Code

Unten ist der endgültige Code für diese Übung, Sie können damit herumspielen, indem Sie Ihre sig_id und Ihren sig-Schlüssel eingeben und mehrere Ergebnisse aus verschiedenen Themen in verschiedenen Städten suchen. Ich habe es auch hochgeladen in GitHub.

URL importieren
json importieren
Pandas als pd importieren
import matplotlib.pyplot als plt
von geopy.geocoders importieren Nominatim
Geolocator = Nach Name() #Objekt erstellen
Orte = [ "San Francisco", "Kalifornien", "Boston ", "New York" , "Pennsylvania", "Colorado", "Seattle", "Washington","Die Engel", "San Diego", "Houston", "austin", "Kansas", "Delhi", "chennai", "Bangalore", "Mumbai" , "Sydney","Melbourne", "Perth", "Adelaide", "Brisbane", "Launceston", "Newcastle" , "Peking", "shanghai", "Suzhou", "Shenzhen","Guangzhou","Dongguan", "Taipeh", "Chengdu", "Hongkong"]
# Einloggen auf meetup.com. wenn du kein Konto hast, dann melde dich bitte an
# Gehe zu https://secure.meetup.com/meetup_api/console/?Pfad=/2/Gruppen
# In den Themen wie "Python", Geben Sie ein Thema Ihrer Wahl ein. und klicke auf Antwort anzeigen
# kopiere den signierten Schlüssel. in der gesungenen Tonart, kopiere sig_id und sig und initialisiere die Variablen sig_id und sig
# muster signierter schlüssel : "https://api.meetup.com/2/groups?Offset=0&format=json&Thema=Python&photo-host=public&Seite=20&Radius=25,0&Felder=&order=id&desc = falsch&sig_id=*****&sig = ****************"
URLs = [] #URL-Listen
Radius = 50.0 #füge den Radius in Meilen hinzu
data_format = "json" #Sie können ein anderes Format wie XML hinzufügen
Thema = "Python" #füge hier deine Themenwahl hinzu
sig_id = "186640998" # Initialisieren Sie mit Ihrer Zeichen-ID, Überprüfen Sie das Muster des signierten Schlüssels
sig = "6dba1b76011927d40a45fcbd5147b3363ff2af92" # Initialisiere mit deinem Zeichen, Überprüfen Sie das Muster des signierten Schlüssels
für Platz an Orten: 
 Standort = geolocator.geocode(Platz)
 urls.anhängen("https://api.meetup.com/2/groups?Offset=0&format=" + Datei Format + "&lon=" + str(Lage.Längengrad) + "&Thema=" + Thema + "&photo-host=public&Seite=500&Radius=" + str(Radius)+"&Felder=&Jahre =" + str(Lage.Breitengrad) + "&order=id&desc = falsch&sig_id=" +sig_id + "&sig =" + sig)
Stadt,Land,Bewertung,Name,Mitglieder = [],[],[],[],[]
für URL in URLs:
 Antwort = urllib.urlopen(URL)
 data = json.loads(antwort.lesen())
 Daten = Daten["Ergebnisse"]
 
für ich in daten :
 Stadt.anhängen(ich['Stadt'])
 Land.anhängen(ich['Land'])
 Bewertung.anhängen(ich['Bewertung'])
 name.anhängen(ich['Name'])
 Mitglieder.anhängen(ich['Mitglieder']) 
 
df = pd.DataFrame([Stadt,Land,Bewertung,Name,Mitglieder]).T
df.columns=['Stadt','Land','Bewertung','Name','Mitglieder']
df.sort(['Mitglieder','Bewertung'], aufsteigend=[Falsch, Falsch])
freq = df.groupby('Land').city.count()
fig = plt.figur(Feigengröße=(8,4))
ax1 = fig.add_subplot(121)
ax1.set_xlabel('Land')
ax1.set_ylabel('Anzahl der Gruppen')
ax1.set_title("Anzahl der Python Meetup-Gruppen")
freq.plot(kind='bar')
freq = df.groupby('Land').Mitglieder.summe()/df.groupby('Land').Mitglieder.Anzahl()
ax1.set_xlabel('Land')
ax1.set_ylabel('Durchschnittliche Mitglieder in jeder Gruppe')
ax1.set_title("Python Meetup-Gruppen")
freq.plot(kind='bar')
freq = df.groupby('Land').Bewertungssumme()/df.groupby('Land').Bewertung.Anzahl()
ax1.set_xlabel('Land')
ax1.set_ylabel('Durchschnittliche Bewertung')
ax1.set_title("Python Meetup-Gruppen")
freq.plot(kind='bar')
df=df.sort(['Land','Mitglieder'], aufsteigend=[Falsch,Falsch])
df.groupby('Land').Kopf(2)

Abschließende Anmerkungen

In diesem Artikel, Wir analysieren die Python-Anwendung, um einen manuellen Prozess zu automatisieren und das Maß an Präzision, um die richtigen Meetup-Gruppen zu finden. Wir verwenden API, um auf Informationen aus dem Web zuzugreifen und sie an einen DataFrame zu übertragen. Anschließend, Wir analysieren diese Informationen, um praktische Erkenntnisse zu gewinnen.

Wir können diese App intelligenter machen, indem wir zusätzliche Informationen wie anstehende Veranstaltungen hinzufügen, Anzahl der Veranstaltungen, RSVP und verschiedene andere Metriken. Sie können diese Daten auch verwenden, um interessante Informationen über die Community und die Menschen zu erhalten. Zum Beispiel, Unterscheidet sich die RSVP für die Anwesenheitsrate zur Überprüfung des Ratentrichters von Land zu Land?? Welche Länder planen ihre Treffen im Voraus?

Probieren Sie es am Ende aus und teilen Sie Ihr Wissen im Kommentarbereich unten.

Wenn Ihnen das, was Sie gerade gelesen haben, gefällt und Sie weiter über Analytics lernen möchten, abonnieren Sie unsere E-Mails, Folge uns auf Twitter oder wie bei uns Seite auf Facebook.

Abonniere unseren Newsletter

Wir senden Ihnen keine SPAM-Mail. Wir hassen es genauso wie du.