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:
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)
Distribución de la posición de los encuestados
# 受访者职位分布
fig = plt.figure(dpi=140)
type_obj= df['CurrentJobTitleSelect']
type_to_bar(type_obj)
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)
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()
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)
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("工作满意度最高的是瑞士")
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')