Analizando repositorios populares en GitHub

Contenidos

Este artículo fue publicado como parte del Blogatón de ciencia de datos

GitHub es una de las plataformas de gestión de código fuente y control de versiones más populares. También es uno de los sitios de redes sociales más grandes para programadores. Los desarrolladores de software lo utilizan para mostrar sus habilidades a los reclutadores y gerentes de contratación. Al analizar los repositorios en GitHub, podemos obtener información valiosa como el comportamiento del usuario, qué hace que un repositorio sea popular o qué tecnologías son tendencia entre los desarrolladores hoy en día, y mucho más.

Puede encontrar el código completo utilizado en el artículo aquí.

He usado los ‘Repositorios de GitHub 2020’ conjunto de datos de Kaggle, ya que es más reciente.

Implementación

Vamos git esto comenzó importando las bibliotecas necesarias y leyendo los datos de entrada,

335841-20org20dataset20info-1940303

El conjunto de datos contiene 19 columnas, de las cuales elegí 11 columnas basadas en las terminologías más populares de GitHub y las relevantes para el contexto de este análisis. Puede ver que hay errores tipográficos en los nombres de las columnas, los he renombrado para mayor claridad.

730962-20dataframe20head-7086476

Un breve resumen sobre las columnas de los datos,

  • Tema – Una etiqueta que describe el campo o dominio del repositorio.
  • Repo_Name – Nombre del repositorio (nombre corto del repositorio)
  • Nombre de usuario – Nombre del propietario del repositorio
  • Estrella – Número de estrellas que ha recibido un repositorio
  • Tenedor – Número de veces que se ha bifurcado un repositorio
  • Mirar – Número de usuarios que miran el repositorio
  • Cuestiones – Número de problemas abiertos
  • Pull_Requests – Total de solicitudes de extracción generadas
  • Topic_Tags – Lista de etiquetas de temas agregadas a ese repositorio por el usuario
  • Compromete – Número total de confirmaciones realizadas
  • Colaboradores – Número de personas que contribuyen al repositorio

Date cuenta cómo Estrella, Tenedor, y Mirar las columnas contienen ‘Kansas para denotar miles, así que vamos a convertirlos en múltiplos de 1000. Además, reemplazando el ‘,’(comas) del Cuestiones y Compromete columnas.

Ahora que las columnas son numéricas, podemos obtener información estadística básica de ellas.

# display basic statistical details about the columns
github_df.describe()
585363-20column20describe-8169861

1. Análisis de los principales repositorios según su popularidad

¿Qué hace que un repositorio de GitHub sea popular? Esta pregunta se puede responder con 3 métricas: estrella, reloj y bifurcación.

  • Estrella: cuando a un usuario le gusta su repositorio o quiere mostrar algo de agradecimiento, lo marca con una estrella.
  • Ver: cuando un usuario desea ser notificado de todas las actividades en un repositorio, lo ve.
  • Bifurcación: cuando un usuario desea una copia del repositorio o tiene la intención de hacer alguna contribución, la bifurca.
# create a dataframe with average values of the columns across all topics
pop_mean_df = github_df.groupby('Topic').mean().reset_index()
pop_mean_df
451844-20pop20mean20df-4399723

1.1 Análisis de estrellas

Visualizar la cantidad promedio de estrellas en cada tema,

579151-20average20stars-4753116
# top 10 most starred repos
github_df.nlargest(n=10, columns="Star")[['Repo_Name','Topic','Star']]
752695-20top201020stars-9423044
# Consejo rápido: '33[1m' prints a string in bold and '33[0m' prints it back normally.
print('Most starred repository is {}{}{} in the topic {}{}{} with {}{}{} stars'.
      format('33[1m',github_df.iloc[github_df['Star'].idxmax ()]['Repo_Name'], '33[0m',
             '33[1m',github_df.iloc[github_df['Star'].idxmax ()]['Topic'], '33[0m',
            '33[1m',github_df.iloc[github_df['Star'].idxmax ()]['Star'], '33[0m'))
399936-20most20starred-8927601

In the top 10 most starred repositories, 4 are frameworks (Vue, React, TensorFlow, BootStrap) and 6 of them are about JavaScript.

1.2 Analysis of Watch

Visualizing the average number of watchers across each topic,

758272-20average20watchers-1547358

Note: Code for the above graph is the same as the ‘Average Stars on each topic’ except for the column names. I have not added the same to avoid redundancy.

# top 10 most watched repos
github_df.nlargest(n=10, columns="Watch")[['Repo_Name','Topic','Watch']]
459667-20top201020watch-3768590
print('Most watched repository is {}{}{} in the topic {}{}'.
        format('33[1m',github_df.iloc[github_df['Watch'].idxmax()]['Repo_Name'],
        '33[0m','33[1m',github_df.iloc[github_df['Watch'].idxmax()]['Topic']))
775918-20most20watched-2358802

En los 10 repositorios más vistos, 4 son frameworks (TensorFlow, BootStrap, React, Vue), 6 son sobre JavaScript y 5 de ellos contienen contenido de aprendizaje para programadores.

1.3 Análisis de Fork

Visualizar la cantidad promedio de bifurcaciones en cada tema,

899503-20average20forks-4182018
# top 10 most forked repos
github_df.nlargest(n=10, columns="Fork")[['Repo_Name','Topic','Fork']]
774959-20top201020forks-7091283
print('Most forked repository is {}{}{} in the topic {}{}'.
      format('33[1m',github_df.iloc[github_df['Fork'].idxmax()]['Repo_Name'],'33[0m',
      '33[1m',github_df.iloc[github_df['Fork'].idxmax()]['Topic']))
5199810-20most20forked-3480329

En el top 10 de repositorios más bifurcados, 4 son frameworks (TensorFlow, bootstrap, spring-boot, react) y 5 de ellos contienen contenido de aprendizaje para programadores.

1.4 Relación entre estrella, horquilla y reloj

A menudo, los usuarios bifurcan un repositorio cuando quieren contribuir a él. Entonces, exploremos la relación entre horquilla de estrella y horquilla de reloj.

161284-20star20and20fork-4703214
# set figure size and dpi
fig, ax = plt.subplots(figsize=(8,4), dpi=100)

# set seaborn theme for background grids
sns.set_theme('paper')

# plot the data
sns.regplot(data=github_df, x='Watch', y='Fork', color="purple");

# set x and y-axis labels and title
ax.set_xlabel('Watch', fontsize=13, color="#333F4B")
ax.set_ylabel('Fork', fontsize=13, color="#333F4B")
fig.subtitle('Relationship between Watch and Fork',fontsize=18, color="#333F4B")
287555-20watch20and20fork-8309100

Los puntos de datos están mucho más cerca de la línea de regresión entre Watch y Fork en comparación con Star y Fork.

De esto podemos concluir, si un usuario está viendo un repositorio, es más probable que lo bifurque.

2. Análisis de usuarios con más repositorios

Echemos un vistazo a los usuarios que tienen repositorios más populares.

815966-20top20users-5672251

En el top 10 de usuarios con más repositorios,

  • Microsoft encabeza la lista con 17 repositorios.
  • Google sigue con 15 repositorios.
  • 6 de ellos son empresas o propiedad de una empresa (Microsoft, Google, Adafruit, Alibaba, PacktPublishing, flutter)
  • 3 son usuarios individuales (junyanz, rasbt, MicrocontrollersAndMore)

3. Comprensión de las actividades de contribución en los repositorios

GitHub es famoso por su gráfico de contribución.

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

Este gráfico es un registro de todas las contribuciones que ha realizado un usuario. Siempre que un usuario realiza una confirmación, abre un problema o propone una solicitud de extracción, se considera una contribución. Hay cuatro columnas relacionadas con las contribuciones en nuestro conjunto de datos, Problemas, Pull_Requests, Commits, Colaboradores. Veamos si existe alguna relación real entre ellos.

584247-20corr20bw20cols-5229716

El número de confirmaciones no depende de ningún problema, solicitudes de extracción o contribuyentes. Existe una relación positiva moderada entre los problemas y las solicitudes de extracción.

Exploremos los 100 repositorios más populares y veamos si es lo mismo,

693438-20corr20bw20pop20cols-4153920

Es casi lo mismo en los 100 repositorios más populares que en el conjunto de datos general.

Busquemos usuarios con más repositorios,

959559-20corr20bw20top20users-3033052

Sorprendentemente, los usuarios con más repositorios tienden a ser más activos. Existe una correlación positiva bastante fuerte entre

  • Confirma y extrae solicitudes
  • Compromisos y problemas
  • Problemas y solicitudes de extracción

En lo que respecta a las contribuciones,

  • No existe una relación real entre las actividades de contribución en el conjunto de datos general.
  • Tampoco existe una correlación entre las contribuciones en los 100 repositorios más populares.
  • Si los usuarios tienden a tener más repositorios, entonces las posibilidades de contribuciones son bastante mayores.

4. Análisis de etiquetas de tema

Agregar etiquetas a un repositorio es una forma de clasificarlas por temas. Ayuda a otros usuarios a encontrar y contribuir a ese repositorio y también lo ayuda a explorar temas en la plataforma por tipo, dominio, tecnología, etc.

La columna topic_tags consta de listas. Para encontrar etiquetas populares, convierta toda la columna en una lista de listas y cuente la aparición de cada etiqueta. Con eso, podemos visualizar algunas de las etiquetas de temas más populares y ver qué temas tienden a etiquetarse más.

2937210-20pop20tags-7480345

De las 15 etiquetas más populares, 10 pertenecen al mundo de la ciencia de datos.

# length of tags list in each column
len_tags = [len(tag) for tag in topic_tags]

# create a new column -> total_tags
github_df['Total_Tags'] = len_tags

# group based on topic and calculate total_tags in each topic
topic_wise_tags = github_df.groupby('Topic').sum()['Total_Tags'].reset_index(name="Total Tags")

# set figure size and dpi
fig, ax = plt.subplots(figsize=(7,4), dpi=100)

# remove background grids
ax.grid(False)
ax.set_facecolor('white')
sns.despine()

# plot the data
sns.barplot(data=topic_wise_tags,x='Total Tags', y='Topic', ci=None, palette="gist_rainbow")

# set x and y-axis labels and title
ax.set_xlabel('Total Tags', fontsize=13, color="#333F4B")
ax.set_ylabel('Topic', fontsize=13, color="#333F4B")
fig.subtitle('Tags distribution across topics',fontsize=18, color="#333F4B")
4470411-20tag20distribution-8531858

Los repositorios con temas de Visión por computadora, Ciencia de datos y Aprendizaje automático tienden a estar más etiquetados.

Terminemos con una nube de palabras de topic_tags,

7397512-20git20word20cloud-8193343

Inferencia:

  • Entre los 10 repositorios más destacados, vistos y bifurcados, 4 son frameworks.
  • Tensorflow es el repositorio bifurcado y más visto.
  • Si un usuario está mirando un repositorio, es más probable que lo bifurque.
  • Microsoft y Google tienden a ser usuarios con repositorios más populares.
  • En el top 10 de usuarios con repositorios más populares, 6 de ellos son empresas.
  • No existe una relación real entre las actividades de contribución (problemas, solicitudes de extracción, confirmaciones).
  • Las etiquetas más utilizadas son Machine Learning, Deep Learning, Python, Computer Vision, JavaScript.
  • Los repositorios con temas de Visión por computadora, Ciencia de datos y Aprendizaje automático tienen más etiquetas.

Si hubiéramos analizado datos de hace una década, estas tendencias habrían sido completamente diferentes. ¡Es como si la ciencia de datos hubiera tenido un crecimiento monstruoso en los últimos años!

¡Gracias por ver todo el camino hasta aquí! Me encantaría conectarme LinkedIn

Avíseme en la sección de comentarios si tiene alguna inquietud, comentario o crítica. ¡Que tenga un buen día!

Los medios que se muestran en este artículo no son propiedad de DataPeaker y se utilizan a discreción del autor.

Suscribite a nuestro Newsletter

No te enviaremos correo SPAM. Lo odiamos tanto como tú.