Analizzare i repository più diffusi su GitHub

Contenuti

Questo articolo è stato pubblicato nell'ambito del Blogathon sulla scienza dei dati

GitHub è una delle piattaforme di gestione del codice sorgente e di controllo della versione più popolari. È anche uno dei più grandi siti di social media per programmatori. Gli sviluppatori di software lo utilizzano per mostrare le proprie competenze a reclutatori e responsabili delle assunzioni. Quando si analizzano i repository su GitHub, possiamo ottenere informazioni preziose come il comportamento degli utenti, cosa rende popolare un repository o quali tecnologie sono di tendenza tra gli sviluppatori oggi, e altro ancora.

Puoi trovare il codice completo utilizzato nell'articolo qui.

ho usato il "Repository GitHub 2020"’ Set di dati Kaggle, visto che è più recente.

Implementazione

Andiamo idiota questo è iniziato importando le librerie necessarie e leggendo i dati di input,

335841-20org20dataset20info-1940303

Il set di dati contiene 19 colonne, di cui ho scelto 11 colonne basate sulle terminologie GitHub più popolari e quelle pertinenti al contesto di questa discussione. Puoi vedere che ci sono errori di battitura nei nomi delle colonne, Li ho rinominati per chiarezza.

730962-20dataframe20head-7086476

Un breve riassunto sulle colonne dei dati,

  • Tema – Un tag che descrive il campo o il dominio del repository.
  • Nome_repo – Nome del repository (nome breve del repository)
  • Nome utente – Nome del proprietario del repository
  • Stella – Numero di stelle ricevute da un repository
  • Forchetta – Numero di volte in cui un repository è stato biforcato
  • Aspetto – Numero di utenti che guardano il repository
  • Domande – Numero di problemi aperti
  • Pull_Requests – Richieste pull totali generate
  • Topic_Tags – Elenco dei tag argomento aggiunti a quel repository dall'utente
  • Compromessi – Numero totale di conferme effettuate
  • Collaboratori – Numero di persone che contribuiscono al repository

Scopri come Stella, Forchetta, e Aspetto le colonne contengono 'Kansas per indicare migliaia, quindi convertiamoli in multipli di 1000. Cosa c'è di più, sostituendo il ',’(virgole) del Domande e Compromessi colonne.

Ora che le colonne sono numeriche, possiamo ottenere da loro informazioni statistiche di base.

# visualizzare i dettagli statistici di base sulle colonne
github_df.describe()
585363-20colonna20descrivi-8169861

1. Analisi dei principali repository in base alla loro popolarità

Cosa rende popolare un repository GitHub? A questa domanda si può rispondere con 3 metrica: stella, orologio e forchetta.

  • Stella: quando a un utente piace il tuo repository o vuole mostrare un po' di apprezzamento, lo segna con una stella.
  • Orologio: quando un utente vuole essere informato di tutte le attività in un repository, lo vede.
  • Forchetta: quando un utente vuole una copia del repository o intende dare un contributo, la forchetta.
# creare un dataframe con i valori medi delle colonne su tutti gli argomenti
pop_mean_df = github_df.groupby('Argomento').Significare().reset_index()
pop_mean_df
451844-20pop20mean20df-4399723

1.1 Analisi delle stelle

Visualizza il numero medio di stelle in ogni argomento,

579151-20media20stars-4753116
# superiore 10 repository più stellati
github_df.nlargest(n=10, colonne="Stella")[['Nome_repo','Argomento','Stella']]
752695-20top201020stars-9423044
# Consiglio rapido: '33[1m' stampa una stringa in grassetto e '33'[0lo ristampa normalmente.
Stampa('Il repository più speciale è {}{}{} nell'argomento {}{}{} insieme a {}{}{} stelle'.
      formato('33[1m',github_df.iloc[github_df['Stella'].idxmax ()]['Nome_repo'], '33[0m',
             '33[1m',github_df.iloc[github_df['Stella'].idxmax ()]['Argomento'], '33[0m',
            '33[1m',github_df.iloc[github_df['Stella'].idxmax ()]['Stella'], '33[0m'))
399936-20most20starred-8927601

In cima 10 i repository più stellati, 4 sono strutture (Visto, Reagire, TensorFlow, BootStrap) e 6 di questi riguardano JavaScript.

1.2 Analisi dell'orologio

Visualizzazione del numero medio di osservatori su ciascun argomento,

758272-20media20osservatori-1547358

Nota: Il codice per il grafico sopra è lo stesso delle "Stelle medie su ciascun argomento" ad eccezione dei nomi delle colonne. Non ho aggiunto lo stesso per evitare ridondanza.

# superiore 10 i repository più visti
github_df.nlargest(n=10, colonne="Orologio")[['Nome_repo','Argomento','Orologio']]
459667-20top201020 orologio-3768590
Stampa('Il repository più visto è {}{}{} nell'argomento {}{}'.
        formato('33[1m',github_df.iloc[github_df['Orologio'].idxmax()]['Nome_repo'],
        '33[0m','33[1m',github_df.iloc[github_df['Orologio'].idxmax()]['Argomento']))
775918-20most20visto-2358802

Nel 10 repository più visti, 4 strutture figlio (TensorFlow, BootStrap, Reagire, Visto), 6 riguardano JavaScript e 5 di essi contengono contenuti didattici per programmatori.

1.3 Analisi della forcella

Visualizza il numero medio di fork in ogni argomento,

899503-20media20forche-4182018
# superiore 10 la maggior parte dei repository biforcuti
github_df.nlargest(n=10, colonne="Forchetta")[['Nome_repo','Argomento','Forchetta']]
774959-20top201020forcelle-7091283
Stampa('La maggior parte dei repository forked è {}{}{} nell'argomento {}{}'.
      formato('33[1m',github_df.iloc[github_df['Forchetta'].idxmax()]['Nome_repo'],'33[0m',
      '33[1m',github_df.iloc[github_df['Forchetta'].idxmax()]['Argomento']))
5199810-20most20forked-3480329

In cima 10 più repository biforcuti, 4 strutture figlio (TensorFlow, bootstrap, stivale a molla, reagire) e 5 di essi contengono contenuti didattici per programmatori.

1.4 relazione stellare, tornante e guarda

Spesso, gli utenti effettuano un fork di un repository quando vogliono contribuire ad esso. Quindi, Esploriamo la relazione tra la forcella della stella e la forcella dell'orologio.

161284-20star20and20fork-4703214
# imposta la dimensione della figura e dpi
Fig, ax = plt.sottotrame(figsize=(8,4), dpi=100)

# imposta il tema marino per le griglie di sfondo
sns.set_theme('carta')

# tracciare i dati
sns.regplot(data=github_df, x='Guarda', y='Forchetta', colore="viola");

# imposta le etichette e il titolo degli assi x e y
ax.set_xlabel('Orologio', dimensione del carattere=13, colore="#333F4B")
ax.set_ylabel('Forchetta', dimensione del carattere=13, colore="#333F4B")
fig.sottotitolo("Relazione tra orologio e forcella",dimensione del carattere = 18, colore="#333F4B")
287555-20watch20and20fork-8309100

I punti dati sono molto più vicini alla linea di regressione tra Watch e Fork rispetto a Star e Fork.

Da questo possiamo concludere, se un utente sta visualizzando un repository, è più probabile che lo forzi.

2. Analisi degli utenti con più repository

Diamo un'occhiata agli utenti che hanno i repository più popolari.

815966-20top20users-5672251

In cima 10 utenti con più repository,

  • Microsoft è in cima alla lista con 17 repository.
  • Google continua con 15 repository.
  • 6 di loro sono società o di proprietà di una società (Microsoft, Google, Adafruit, Alibaba, PacktPublishing, svolazzare)
  • 3 sono utenti individuali (junyanz, rasbt, Microcontrollori e altro)

3. Comprensione delle attività di contributo nei repository

GitHub è famoso per il suo grafico dei contributi.

75193screenshot202021-06-2620at2000-20-1220padhma20-20overview-3112791

Questo grafico è un record di tutti i contributi che un utente ha fatto. Ogni volta che un utente fa una conferma, aprire un problema o proporre una richiesta pull, è considerato un contributo. Ci sono quattro colonne relative ai contributi nel nostro set di dati, I problemi, Pull_Requests, si impegna, Collaboratori. Vediamo se c'è una vera relazione tra loro.

584247-20corr20bw20cols-5229716

Il numero di conferme non dipende da nessun problema, pull richieste o contributori. Esiste una relazione moderatamente positiva tra problemi e richieste pull.

Esploriamo il 100 repository più popolari e vediamo se è lo stesso,

693438-20corr20bw20pop20cols-4153920

È quasi lo stesso in 100 repository più popolari rispetto al set di dati generale.

Troviamo utenti con più repository,

959559-20corr20bw20top20users-3033052

Sorprendentemente, gli utenti con più repository tendono ad essere più attivi. Esiste una correlazione positiva abbastanza forte tra

  • Conferma ed estrai le richieste
  • Compromessi e problemi
  • Pull richieste e problemi

Per quanto riguarda i contributi,

  • Non esiste una reale relazione tra le attività di contribuzione nel set di dati complessivo.
  • Non vi è inoltre alcuna correlazione tra i contributi nel 100 repository più popolari.
  • Se gli utenti tendono ad avere più repository, allora le possibilità di contribuzione sono molto più alte.

4. Analisi dei tag degli argomenti

L'aggiunta di tag a un repository è un modo per classificarli per argomento. Aiuta gli altri utenti a trovare e contribuire a quel repository e ti aiuta anche a esplorare gli argomenti sulla piattaforma per tipo, dominio, tecnologia, eccetera.

La colonna topic_tags è composta da elenchi. Per trovare tag popolari, convertire l'intera colonna in un elenco di elenchi e contare l'occorrenza di ciascuna etichetta. Con quello, possiamo visualizzare alcuni dei tag argomento più popolari e vedere quali argomenti tendono a essere taggati di più.

2937210-20pop20tags-7480345

del 15 tag più popolari, 10 appartengono al mondo della scienza dei dati.

# lunghezza dell'elenco dei tag in ogni colonna
len_tags = [len(etichetta) per tag in topic_tags]

# crea una nuova colonna -> tag_totale
github_df['Totale_Tag'] = tag_len

# raggruppa in base all'argomento e calcola total_tags in ogni argomento
topic_wise_tags = github_df.groupby('Argomento').somma()['Totale_Tag'].reset_index(nome="Tag totali")

# imposta la dimensione della figura e dpi
Fig, ax = plt.sottotrame(figsize=(7,4), dpi=100)

# rimuovi le griglie di sfondo
ax.grid(falso)
ax.set_facecolor('bianco')
sns.despine()

# tracciare i dati
sns.barplot(data=topic_wise_tags,x='Totale tag', y='Argomento', ci=None, tavolozza="gist_arcobaleno")

# imposta le etichette e il titolo degli assi x e y
ax.set_xlabel("Totale tag", dimensione del carattere=13, colore="#333F4B")
ax.set_ylabel('Argomento', dimensione del carattere=13, colore="#333F4B")
fig.sottotitolo("Distribuzione dei tag tra gli argomenti",dimensione del carattere = 18, colore="#333F4B")
4470411-20tag20distribution-8531858

Repository con temi di Visione artificiale, Data Science e Machine Learning tendono ad essere più etichettate.

Concludiamo con una nuvola di parole di topic_tags,

7397512-20git20word20cloud-8193343

Inferenza:

  • Tra i 10 repository più importanti, visto e biforcuto, 4 strutture figlio.
  • Tensorflow è il repository più guardato e forkato.
  • Se un utente sta guardando un repository, è più probabile che lo forzi.
  • Microsoft e Google tendono ad essere utenti con repository più popolari.
  • In cima 10 utenti con i repository più popolari, 6 di loro sono aziende.
  • Non esiste una reale relazione tra le attività di contribuzione (i problemi, pull richieste, conferme).
  • I tag più utilizzati sono Machine Learning, Apprendimento profondo, Pitone, Visione computerizzata, JavaScript.
  • Repository con temi di Visione artificiale, La scienza dei dati e l'apprendimento automatico hanno più etichette.

Se avessimo analizzato i dati di dieci anni fa, queste tendenze sarebbero state completamente diverse. È come se la scienza dei dati avesse visto una crescita mostruosa negli ultimi anni!!

Grazie per aver guardato fino qui! mi piacerebbe connettermi LinkedIn

Fatemi sapere nella sezione commenti se avete dubbi, commento o critica. Buona giornata!

Il supporto mostrato in questo articolo non è di proprietà di DataPeaker e viene utilizzato a discrezione dell'autore.

Iscriviti alla nostra Newsletter

Non ti invieremo posta SPAM. Lo odiamo quanto te.