Mis siguientes días de #100daysofcode van estar enfocados en un proyecto de presentación para Acámica en mi clase de datascience. Me emociona mucho el proyecto porque para quienes ya saben yo trabajo en marketing y quisiera explotar todo el mundo de la data en él.

El proyecto es sencillo: Escoger un dataset (de interés) analizarlo, hacerse preguntas e intentar responderlas. Al final haremos una presentación (A la Natalia tímida no le gusta esto) frente a la clase explicando el proceso y análisis. 

En mi caso tengo dos data set, el primero es el que voy a trabajar estos primeros días (Facebook data) y el segundo es Sales Conversion Optimization in Google analytics, el cual voy a trabajar la siguiente semana y decidiré cuál presentar. 

Así que empecemos: 

Facebook data: 

Este análisis exploratorio de datos proporciona información del conjunto de datos de Facebook que consiste en identificar usuarios que pueden enfocarse más para aumentar el negocio. Estas valiosas ideas deberían ayudar a Facebook a tomar una decisión inteligente para identificar a sus usuarios útiles y proporcionarles las recomendaciones correctas.

import numpy as np 
import pandas as pd
import matplotlib.pyplot as plt
%matplotlib inline
import seaborn as sns

Ahora importamos y visualizamos el dataset

data = pd.read_csv("pseudo_facebook.csv")
data.head()

Ahora lo que a mi personalmente me gusta hacer es definir cada columna (así sabemos que data estamos manejando y su importancia)

  • Userid: Es la identificación del usuario 
  • Age: Edad
  • dob_day: Día de nacimiento
  • dob_year: Año de nacimiento
  • dob_month: Mes de nacimiento
  • gender: Género (male_female)
  • tenure: ¿Cómo se quedarán nuestros clientes con nosotros? Esta pregunta es jugar un papel determinante en la operación de negocios.
  • friend_count: Conteo de amigos
  • friendships initiated
  • Likes
  • Likes recibidos 
  • Likes recibidos desde diferentes dispositivos 

Ahora vamos a explorar un poco la data

data.describe()

¿Qué podemos deducir de esto? 

  • Edad: Mínima-13
  • Máxima-113
  • Promedio de edad-37 
  • Los me gusta son más bajos que los Me gusta recibidos 

Ahora vamos a comprobar si faltan valores

data.isnull().any()

Nos faltan valores en las columnas de género y tenencia. En el próximo análisis, clasificaremos las filas de la tabla en términos de género y / o tenencia que se convertirían en un índice de conglomerado. Por lo tanto, cualquier fila que contenga valores nulos en cualquiera de estas columnas, debemos descartarlas 

data=data.dropna()
data.isnull().any()

Ahora empecemos a trabajar con el género 

data['gender'].value_counts()
.
male 58574
female 40252
Name: gender, dtype: int64

Ahora quiero visualizar esto

gender_no=data.groupby("gender")["tenure"].count()
fig,ax=plt.subplots(figsize=(13,7))
gender_no.plot.pie(ax=ax,autopct='%0.2f%%')

Ahora vamos a usar binning de pandas para la columna age y dividirla en grupos

data["age"].unique()
bins1 = [10,20,30,40,50,60,70,100]
cats = pd.cut(data.age, bins1)
cats.head(10)
data['age_bins'] = cats
data.head()

Contamos los valores en grupos de edad

data.age_bins.value_counts()
.
(20, 30] 28634
(10, 20] 24747
(30, 40] 12487
(50, 60] 9288
(40, 50] 8962
(60, 70] 6830
(70, 100] 4238
Name: age_bins, dtype: int64

Empezamos a respondernos preguntas 

¿ Las mujeres tienen más amigos que los hombres? 

sns.barplot(x=data['age_bins'],y=data['friend_count'],hue=data.gender)

Vamos a ver 

No de personas que tengan amigos: 

np.count_nonzero(data.friend_count)
96864

Todas las personas que tienen cero amigos

fc=data.friend_count==0
fc.value_counts()
False 96864
True 1962
Name: friend_count, dtype: int64

Esto infiere que los hombres tienen más cero amigos que las mujeres

sns.barplot(y=data.friend_count==0,x=data.gender)

Ahora vamos a trabajar un poco con la distribución de las edades 

sns.set()
fig,ax=plt.subplots(figsize=(10,8))
test=data.groupby("age")['tenure'].count()
test=test/sum(test)*100
color=["royalblue","cornflowerblue","steelblue","lightblue","teal"]
ax.bar(test.index,test.values,color=color,alpha=0.5)
for i in ax.patches:
ax.text(i.get_x()+0.25,i.get_height()+0.2,str(round(i.get_height(),2))+'%')
ax.set_xlabel("Age")
ax.set_ylabel("percentage")
ax.set_title("Age Distribution of Facebook Users",fontsize=15)

Ahora me gustaria ver la distribución en edades y sexo

fig,ax=plt.subplots(figsize=(13,7))
color=['r','b']
test=data.pivot_table('tenure',index='age',columns='gender',aggfunc='count')
#conversion into percenatage
for col in test.columns:
test[col]=test[col]/sum(test[col])*100
test.plot(kind='bar',color=color,ax=ax,alpha=0.7)
ax.set_xticklabels(test.index,rotation=360)
ax.set_xlabel("Age group",fontsize=14)
ax.set_ylabel("Percentage",fontsize=14)
ax.set_title('Age and Gender Distribution of Facebook Users',fontsize=14)

Podemos ver que la mayoría de los usuarios tienen una edad desproporcionada de entre 20 y 34 años, lo que representa el 36% del total de usuarios seguidos por adolescentes que representan el 25%. El siguiente gráfico muestra que los datos están ordenados por género y edad grupo. Al igual que con el resultado anterior, los grandes usuarios de la plataforma siguen siendo los que tienen entre 20 y 30 años, y los hombres alcanzan casi el 40%. Una cosa interesante que llama nuestra atención es que más de la mitad de la tasa de uso en el grupo de 20 a 30 años es la tasa del siguiente grupo. Esta caída pronunciada le da a Facebook una valiosa lección; salga con un marketing agresivo dirigido a los mayores de 35 años.

Puedes encontrar el dataset aquí: https://github.com/Nataceved/facebook-dataset

3 comments on “Día 7 #100daysofcode #datascience Facebook data analysis

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *