Analysieren beliebter Repositories auf GitHub

Inhalt

Dieser Artikel wurde im Rahmen der Data Science Blogathon

GitHub ist eine der beliebtesten Plattformen für Quellcodeverwaltung und Versionskontrolle. Es ist auch eine der größten Social-Media-Sites für Programmierer. Softwareentwickler nutzen es, um Recruitern und Einstellungsmanagern ihre Fähigkeiten zu präsentieren. Beim Parsen von Repositorys auf GitHub, können wir wertvolle Informationen wie das Nutzerverhalten erhalten, Was macht ein Repository beliebt oder welche Technologien sind heute bei Entwicklern im Trend?, und vieles mehr.

Den vollständigen Code, der im Artikel verwendet wird, finden Sie hier.

Ich habe benutzt das ‘GitHub-Repositorys 2020’ Kaggle-Datensatz, da es neuer ist.

Implementierung

gehen git Dies begann mit dem Importieren der erforderlichen Bibliotheken und dem Einlesen der Eingabedaten,

335841-20org20dataset20info-1940303

Der Datensatz enthält 19 Säulen, von denen ich gewählt habe 11 Spalten basierend auf den gängigsten GitHub-Terminologien und solchen, die für den Kontext dieser Diskussion relevant sind. Sie können sehen, dass sich in den Spaltennamen Tippfehler befinden, Ich habe sie der Übersichtlichkeit halber umbenannt.

730962-20dataframe20head-7086476

Eine kurze Zusammenfassung über die Spalten der Daten,

  • Thema – Ein Tag, das das Repository-Feld oder die Domäne beschreibt.
  • Repo_Name – Repository-Name (Kurzname des Repositorys)
  • Nutzername – Name des Repository-Eigentümers
  • Stern – Anzahl der Sterne, die ein Repository erhalten hat
  • Gabel – Wie oft ein Repository gegabelt wurde
  • Aussehen – Anzahl der Benutzer, die das Repository anzeigen
  • Fragen – Anzahl offener Probleme
  • Pull_Requests – Insgesamt generierte Pull-Requests
  • Thema_Tags – Liste der Themen-Tags, die vom Benutzer zu diesem Repository hinzugefügt wurden
  • Kompromisse – Gesamtzahl der getätigten Bestätigungen
  • Mitarbeiter – Anzahl der Personen, die zum Repository beitragen

Finde heraus wie Stern, Gabel, Ja Aussehen die Spalten enthalten 'Kansas Tausende bezeichnen, Also lass sie uns in Vielfache von umwandeln 1000. Was ist mehr, Ersetzen der ‘,’(Kommas) des Fragen Ja Kompromisse Säulen.

Jetzt, da die Spalten numerisch sind, wir können grundlegende statistische Informationen von ihnen erhalten.

# grundlegende statistische Details zu den Spalten anzeigen
github_df.describe()
585363-20Spalte20beschreiben-8169861

1. Analyse der wichtigsten Repositories nach ihrer Popularität

Was macht ein GitHub-Repository beliebt?? Diese Frage kann beantwortet werden mit 3 Metriken: Stern, Uhr und Gabel.

  • Stern: wenn ein Benutzer Ihr Repository mag oder etwas Wertschätzung zeigen möchte, markiert es mit einem Stern.
  • Betrachten: wenn ein Benutzer über alle Aktivitäten in einem Repository benachrichtigt werden möchte, sieht es.
  • Gabel: wenn ein Benutzer eine Kopie des Repositorys möchte oder einen Beitrag leisten möchte, die Gabel.
# Erstellen Sie einen Datenrahmen mit Durchschnittswerten der Spalten über alle Themen
pop_mean_df = github_df.groupby('Thema').bedeuten().reset_index()
pop_mean_df
451844-20pop20mean20df-4399723

1.1 Sternanalyse

Zeigen Sie die durchschnittliche Anzahl von Sternen in jedem Thema an,

579151-20Durchschnitt20stars-4753116
# oben 10 Repos mit den meisten Sternen
github_df.nlargest(n=10, Spalten="Stern")[['Repo_Name','Thema','Stern']]
752695-20top201020stars-9423044
# Schneller Tipp: '33[1m' druckt eine Zeichenfolge in Fettdruck und '33[0m druckt es normal zurück.
drucken('Das Repository mit den meisten Sternchen ist {}{}{} im thema {}{}{} mit {}{}{} Sterne'.
      Format('33[1m',github_df.iloc[github_df['Stern'].idxmax ()]['Repo_Name'], '33[0m',
             '33[1m',github_df.iloc[github_df['Stern'].idxmax ()]['Thema'], '33[0m',
            '33[1m',github_df.iloc[github_df['Stern'].idxmax ()]['Stern'], '33[0m'))
399936-20am meisten20starred-8927601

Ganz oben 10 Repositories mit den meisten Sternchen, 4 sind Rahmen (Gesehen, Reagieren, TensorFlow, Stiefelriemen) und 6 davon handelt es sich um JavaScript.

1.2 Analyse der Uhr

Visualisierung der durchschnittlichen Zuschauerzahl für jedes Thema,

758272-20Durchschnitt20Zuschauer-1547358

Notiz: Der Code für die obige Grafik ist mit Ausnahme der Spaltennamen derselbe wie die "Durchschnittssterne zu jedem Thema".. Ich habe nicht dasselbe hinzugefügt, um Redundanz zu vermeiden.

# oben 10 meistgesehene Repos
github_df.nlargest(n=10, Spalten="Betrachten")[['Repo_Name','Thema','Betrachten']]
459667-20top201020watch-3768590
drucken('Das meistgesehene Repository ist {}{}{} im thema {}{}'.
        Format('33[1m',github_df.iloc[github_df['Betrachten'].idxmax()]['Repo_Name'],
        '33[0m','33[1m',github_df.iloc[github_df['Betrachten'].idxmax()]['Thema']))
775918-20am meisten20gesehen-2358802

Im 10 meistgesehene Repositorys, 4 Sohn-Frameworks (TensorFlow, Stiefelriemen, Reagieren, Gesehen), 6 sind über JavaScript und 5 davon enthalten Lerninhalte für Programmierer.

1.3 Gabelanalyse

Zeigen Sie die durchschnittliche Anzahl von Forks in jedem Thema an,

899503-20Durchschnitt20 Gabeln-4182018
# oben 10 die meisten gegabelten Repos
github_df.nlargest(n=10, Spalten="Gabel")[['Repo_Name','Thema','Gabel']]
774959-20top201020gabeln-7091283
drucken('Das meist gegabelte Repository ist {}{}{} im thema {}{}'.
      Format('33[1m',github_df.iloc[github_df['Gabel'].idxmax()]['Repo_Name'],'33[0m',
      '33[1m',github_df.iloc[github_df['Gabel'].idxmax()]['Thema']))
5199810-20most20forked-3480329

Oben drauf 10 mehr gespaltene Repositorys, 4 Sohn-Frameworks (TensorFlow, Bootstrap, Frühlingsstiefel, reagieren) Ja 5 davon enthalten Lerninhalte für Programmierer.

1.4 Star-Beziehung, Haarnadel und schau

Häufig, Benutzer forken ein Repository, wenn sie dazu beitragen möchten. Dann, Lassen Sie uns die Beziehung zwischen Sterngabel und Uhrgabel untersuchen.

161284-20star20and20fork-4703214
# Bildgröße und dpi . einstellen
Feige, ax = plt.subplots(Feigengröße=(8,4), dpi=100)

# Seaborn-Thema für Hintergrundraster einstellen
sns.set_theme('Papier')

# Plotten Sie die Daten
sns.regplot(data=github_df, x='Beobachten', y='Gabel', Farbe="Violett");

# Legen Sie Beschriftungen und Titel für die X- und Y-Achse fest
ax.set_xlabel('Betrachten', Schriftgröße=13, Farbe="#333F4B")
ax.set_ylabel('Gabel', Schriftgröße=13, Farbe="#333F4B")
fig.Untertitel('Beziehung zwischen Wache und Gabel',Schriftgröße=18, Farbe="#333F4B")
287555-20watch20and20fork-8309100

Die Datenpunkte liegen viel näher an der Regressionslinie zwischen Watch und Fork im Vergleich zu Star und Fork.

Daraus können wir schließen, wenn ein Benutzer ein Repository anzeigt, eher gabel es.

2. Analyse von Benutzern mit mehr Repositorys

Werfen wir einen Blick auf die Benutzer mit den beliebtesten Repositorys.

815966-20top20users-5672251

Oben drauf 10 Benutzer mit mehr Repositorys,

  • Microsoft führt die Liste an mit 17 Repositorys.
  • Google macht weiter mit 15 Repositorys.
  • 6 davon sind Unternehmen oder Eigentum eines Unternehmens (Microsoft, Google, Adafrucht, Alibaba, PacktPublishing, flattern)
  • 3 sie sind einzelne Benutzer (junyanz, rasbt, MikrocontrollerAndMore)

3. Beitragsaktivitäten in Repositorien verstehen

GitHub ist berühmt für seinen Beitragsgraph.

75193Screenshot202021-06-2620at2000-20-1220padhma20-20Übersicht-3112791

Dieses Diagramm ist eine Aufzeichnung aller Beiträge, die ein Benutzer gemacht hat. Immer wenn ein Benutzer eine Bestätigung macht, ein Problem eröffnen oder eine Pull-Anfrage vorschlagen, gilt als Beitrag. Es gibt vier Spalten, die sich auf Beiträge in unserem Datensatz beziehen, Probleme, Pull_Requests, Verpflichtet, Mitarbeiter. Mal sehen, ob es eine echte Beziehung zwischen ihnen gibt.

584247-20corr20bw20cols-5229716

Die Anzahl der Bestätigungen hängt von keinem Problem ab, Pull-Requests oder Mitwirkende. Es besteht eine moderate positive Beziehung zwischen Issues und Pull-Requests.

Erkunden wir die 100 beliebtesten Repositories und mal sehen, ob es dasselbe ist,

693438-20corr20bw20pop20cols-4153920

Es ist fast das gleiche in 100 beliebtere Repositorys als im allgemeinen Datensatz.

Lassen Sie uns Benutzer mit mehr Repositorys finden,

959559-20corr20bw20top20users-3033052

Überraschenderweise, Benutzer mit mehr Repositorys sind in der Regel aktiver. Es gibt eine ziemlich starke positive Korrelation zwischen

  • Anfragen bestätigen und extrahieren
  • Kompromisse und Probleme
  • Pull-Requests und Probleme

Zu den Beiträgen,

  • Es besteht kein wirklicher Zusammenhang zwischen den Beitragsaktivitäten im Gesamtdatensatz.
  • Es besteht auch keine Korrelation zwischen den Beiträgen in der 100 beliebtesten Repositorys.
  • Wenn Benutzer dazu neigen, mehr Repositorys zu haben, dann sind die Möglichkeiten der Beiträge viel höher.

4. Themen-Tag-Analyse

Das Hinzufügen von Tags zu einem Repository ist eine Möglichkeit, diese nach Themen zu klassifizieren. Es hilft anderen Benutzern, dieses Repository zu finden und zu diesem beizutragen, und hilft Ihnen auch, Themen auf der Plattform nach Typ zu erkunden, Domain, Technologie, etc.

Die Spalte topic_tags besteht aus Listen. So finden Sie beliebte Tags, Konvertieren Sie die gesamte Spalte in eine Liste von Listen und zählen Sie das Vorkommen jedes Labels. Damit, Wir können einige der beliebtesten Themen-Tags visualisieren und sehen, welche Themen am häufigsten getaggt werden.

2937210-20pop20tags-7480345

Des 15 die beliebtesten Tags, 10 gehören zur Welt der Data Science.

# Länge der Tag-Liste in jeder Spalte
len_tags = [len(Schild) für Tag in topic_tags]

# eine neue Spalte erstellen -> total_tags
github_df['Total_Tags'] = len_tags

# gruppieren Sie nach Thema und berechnen Sie total_tags in jedem Thema
topic_wise_tags = github_df.groupby('Thema').Summe()['Total_Tags'].reset_index(name="Gesamtzahl der Tags")

# Bildgröße und dpi . einstellen
Feige, ax = plt.subplots(Feigengröße=(7,4), dpi=100)

# Hintergrundgitter entfernen
ax.grid(Falsch)
ax.set_facecolor('Weiß')
sns.despine()

# Plotten Sie die Daten
sns.barplot(data=topic_wise_tags,x='Tags insgesamt', y='Thema', ci = Keine, Palette="gist_rainbow")

# Legen Sie Beschriftungen und Titel für die X- und Y-Achse fest
ax.set_xlabel('Tags insgesamt', Schriftgröße=13, Farbe="#333F4B")
ax.set_ylabel('Thema', Schriftgröße=13, Farbe="#333F4B")
fig.Untertitel('Tags-Verteilung über Themen',Schriftgröße=18, Farbe="#333F4B")
4470411-20tag20distribution-8531858

Repositories mit Computer Vision-Themen, Data Science und Machine Learning werden tendenziell stärker beschriftet.

Lassen Sie uns mit einer Wortwolke von topic_tags schließen,

7397512-20git20word20cloud-8193343

Inferenz:

  • Zwischen den 10 bekanntesten Repositorien, gesehen und gegabelt, 4 Sohn-Frameworks.
  • Tensorflow ist das am meisten beobachtete gegabelte Repository.
  • Wenn ein Benutzer ein Repository ansieht, eher gabel es.
  • Microsoft und Google sind in der Regel Benutzer mit beliebteren Repositorys.
  • Oben drauf 10 Benutzer mit den beliebtesten Repositorys, 6 davon sind Unternehmen.
  • Es besteht kein wirklicher Zusammenhang zwischen Beitragsaktivitäten (Probleme, Pull-Requests, Bestätigungen).
  • Die am häufigsten verwendeten Tags sind Machine Learning, Tiefes Lernen, Python, Computer Vision, JavaScript.
  • Repositories mit Computer Vision-Themen, Data Science und maschinelles Lernen haben mehr Labels.

Wenn wir Daten von vor einem Jahrzehnt analysiert hätten, diese Trends wären ganz anders gewesen. Es ist, als ob Data Science in den letzten Jahren ein enormes Wachstum erlebt hätte!!

Danke fürs Zuschauen hier! ich würde mich gerne verbinden LinkedIn

Lass es mich im Kommentarbereich wissen, wenn du Bedenken hast, Kommentar oder Kritik. Einen schönen Tag noch!

Die in diesem Artikel gezeigten Medien sind nicht Eigentum von DataPeaker und werden nach Ermessen des Autors verwendet.

Abonniere unseren Newsletter

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