Informe de análisis para profesionales de la ciencia de datos de Kaggle

Los profesionales de la ciencia de datos investigan el análisis del lenguaje Python

Descripción de datos

El 26 de agosto de 2017, Kaggle, la comunidad de ciencia de datos más grande del mundo, publicó un conjunto de datos para la encuesta de toda la industria sobre el estado actual de la industria de ciencia de datos / aprendizaje automático. Los datos del cuestionario se recopilaron del 7 al 25 de agosto de 2017. Los entrevistados incluyeron a más de 16.716 profesionales de más de 50 países De acuerdo con el conjunto de datos del cuestionario de Kaggle, buscamos información nutritiva.

Selección de variable

Hay un total de 228 variables. Elegimos algunas de las preguntas que nos interesan analizar. La tabla de descripción de las variables es la siguiente:
Inserte la descripción de la imagen aquí

Preprocesamiento de datos

Calcule los datos de Taiwán en la región en los datos de China y genere una tabla de descripción de variables

data = pd.read_csv('multipleChoiceResponses.csv', encoding="unicode_escape") 
data.shape
data.info() 
col_name  =list( data.columns ) 
data['Country']=['China' if i=='People \'s Republic of China' or 
                 i=='Republic of China'  else i for i in data['Country'] ]
# 选中感兴趣的变量
df = data[[
            'Age', 'Country', 'CurrentJobTitleSelect','MLToolNextYearSelect',
            'MLMethodNextYearSelect', 'EmploymentStatus', 'FormalEducation',
            'CoursePlatformSelect', 'FirstTrainingSelect', 'Tenure','JobSatisfaction',
            'LanguageRecommendationSelect', 'JobSkillImportancePython',
            'JobSkillImportanceR', 'JobSkillImportanceSQL', 'JobSkillImportanceBigData'
            ]]
v_illustration = pd.DataFrame({
    
    '变量名':df.columns, 
      '类型':[type(df.iat[1,i]) for i,col in enumerate(df.columns)],
      '缺失量':[sum(df.iloc[:,i].isnull()) for i,col in enumerate(df.columns)]})
v_illustration.to_csv('v_illustration.csv',encoding='utf-8-sig')

Análisis univariado

Visualización de distribución variable por tipo

El proceso de dibujar barras horizontales se escribe como una función para facilitar la reutilización.

def type_to_bar(type_obj):
    '''输入pd.Series(),输出水平的条形图'''
    count = type_obj.value_counts()  
    if len(count)>10 :
        count = count[:10]  # 只要前十个
    count = count[::-1] # 第一放在上面
    position  = range(len(count)) 
    color = color_list[:len(count)]
    plt.barh(y=position, width=count, color = color[::-1] )
   # plt.title(type_obj.name)
    plt.yticks(ticks=position, labels=count.index)
    z = zip(count.values,position)
    for i,j in z:
        print(i,j)
        plt.text(i,j,s=str(int(i)),ha='right',va='center',color='white')      
Ver la distribución de encuestados por país
fig = plt.figure(dpi=140)
type_obj= df['Country']
type_to_bar(type_obj)      

Inserte la descripción de la imagen aquí

Distribución de la posición de los encuestados
# 受访者职位分布
fig = plt.figure(dpi=140)
type_obj= df['CurrentJobTitleSelect']
type_to_bar(type_obj) 

Inserte la descripción de la imagen aquí

Herramientas de aprendizaje automático que los encuestados aprenderán el próximo año
# 受访者下一年准备学习的机器学习工具
fig = plt.figure(dpi=140)
type_obj= df['MLToolNextYearSelect']
type_to_bar(type_obj)

Inserte la descripción de la imagen aquí

Variables restantes

Las variables de subtipo restantes tienen el mismo método y se pueden dibujar juntas, por lo que no las mostraré aquí.

for i in df.columns: 
    fig = plt.figure(dpi=140)
    type_obj= df[i]
    type_to_bar(type_obj)
Pantalla de distribución de variables numéricas

Distribución de edad de los encuestados

# 单变量年龄分布
# 画出一条垂线标明均值 
fig = plt.figure(figsize=(10,6),dpi=200) 
sns.kdeplot(df['Age'], shade=True, alpha=.7,)
plt.suptitle('年龄分布') 
x=df['Age'].mean()
plt.axvline(x,color='red') 
plt.text(x,0.04,'年龄均值32',size =15)
plt.show()

Inserte la descripción de la imagen aquí

Análisis bivariado

Influencia de las variables de subtipo en las variables numéricas

Tome la diferencia de edad en diferentes países como ejemplo, use un gráfico de barras horizontales para mostrar la edad promedio de diferentes países

# 双变量关系分析, 国家对年龄的影响.   分类型——数值型
# 水平条形图 
def num_to_bar(num, label):
    '''输入pd.dataframe(),一列为数字型,一列为标签,
    输出各类别均值直方图'''
    cla  = label.value_counts().index
    count = []
    for lab in cla:
        count.append(num[label==lab].mean())
    count = pd.Series(count, index = cla)
    count.sort_values(ascending=False,inplace=True)
    if len(count)>10 :
        count = count[:10]  # 只要前十个
    count = count[::-1] # 第一放在上面
    position  = range(len(count)) 
    color = color_list[:len(count)]
    plt.barh(y=position, width=count, color = color[::-1] )
    plt.title(num.name)
    plt.yticks(ticks=position, labels=count.index)
    z = zip(count.values,position)
    for i,j in z:
       # print(i,j)
        plt.text(i,j,s=str(int(i)),
                 ha='right',va='center',color='white')
               
# 各国家受访者年龄对比
fig = plt.figure(dpi=140)
num  = df['Age']; label=df['Country']
num_to_bar(num, label)  

Inserte la descripción de la imagen aquí
Comparación de la satisfacción de los profesionales de los datos laborales en varios países

# 各国家受访者满意度对比
def trans_jbsatisfy(x):
    if x=='10 - Highly Satisfied':
        y=10 
    elif x=='1 - Highly Dissatisfied':
        y=1
    elif x=='I prefer not to share':
        y= np.NaN
    elif isinstance(x, float): 
        y=x
    elif isinstance(int(x), int):
        y=int(x)
    else : print(x)
    return y
df['JobSatisfaction']=df['JobSatisfaction'].apply(trans_jbsatisfy)
fig = plt.figure(dpi=140)
num  = df['JobSatisfaction']; label=df['Country']
num_to_bar(num, label)   
plt.title("工作满意度最高的是瑞士")

Inserte la descripción de la imagen aquí

Influencia de las variables de subtipo sobre las variables de subtipo

Tome la influencia de los países en los lenguajes de programación preferidos como ejemplo

fig = plt.figure(figsize=(10,6),dpi=140)
plt.subplot(1,2,1)
type_to_bar(df.loc[df['Country']=='China','LanguageRecommendationSelect'])
plt.title('China')
plt.subplot(1,2,2)
type_obj=df.loc[df['Country']=='United States','LanguageRecommendationSelect']
type_to_bar(type_obj)
plt.title('America')

Inserte la descripción de la imagen aquí

Supongo que te gusta

Origin blog.csdn.net/weixin_43705953/article/details/111241330
Recomendado
Clasificación