J'ai gratté un site de changement d'emploi avec Python et ai brièvement étudié les «compétences nécessaires». Puisque je vise à devenir ingénieur, je me demandais quels types d'exigences sont réellement mis en place sur le chantier de changement d'emploi.
Idées et implémentations <a href="https://qiita.com/kakiuchis/items/2c9b327cadf1e8dbdf6e" rel="nofollow noopener[ target="_blank"> J'ai appris à devenir directeur Web pour des personnes inexpérimentées. J'ai pris l'article de , que j'ai considéré d'une manière basée sur les données, comme référence.
Veuillez signaler les erreurs et les petites erreurs!
Pour ceux qui veulent juste voir les résultats
--Commun
Compétences en développement d'équipe et en communication --Git / GitHub
l'extrémité avant --html / css / javascript est requis ―― Ce serait bien si vous pouviez faire vue ou React, alors Angular --Connaissance des compétences de conception UI / UX
Langages côté serveur tels que PHP, Ruby et Java --Compétences pour la gestion de Photoshop / Illustrator
webpack
etc……
--Du côté serveur
Cela ne me dérange pas de me salir du milieu.
Est-ce le résultat attendu?
Puis au contenu.
--Environnement
MacOS Mojave 10.14.6
Python3.8.1
Environnement --Installez Homebrew (inclus depuis le début)
Installation sous Microsoft SQL (incluse depuis le début) --Installez pyenv avec homebrew --Installez python avec pyenv --Créez un environnement python sous le répertoire avec venv --Installer des bibliothèques telles que bs4, MeCab, jupyter notebook, pandas
--Référence
<a href="https://qiita.com/sakaeda11/items/3832472b5eb923e0128f" rel="nofollow noopenereutic target="_blank"> Création d'un environnement Python sur Mac
<a href="https://qiita.com/fiftystorm36/items/b2fd47cf32c7694adc2e" rel="nofollow noopener[ target="_blank"> venv: Gestion de l'environnement virtuel Python
<a href="https://qiita.com/kakiuchis/items/2c9b327cadf1e8dbdf6e" rel="nofollow noopenereutic target="_blank"> Depuis que j'ai étudié le scraping, j'ai appris à devenir un directeur WEB par data-driven Je l'ai considéré
Grattage → La mise en œuvre de l'analyse morphologique est généralement comme indiqué dans l '<a href="https://qiita.com/kakiuchis/items/2c9b327cadf1e8dbdf6e" rel="nofollow noopener[ target="_blank"> article de référence , donc il est omis. Le déroulement est le suivant: Obtenez l'URL de l'emploi pour chaque emploi → Ouvrez l'URL et obtenez la partie de compétence requise → Calculez la fréquence pour chaque nom par analyse morphologique. <a href="https://qiita.com/itkr/items/513318a9b5b92bd56185" rel="nofollow noopenereutic target="_blank"> Grattage avec Python et belle soupe et <a href = "https: / /www.crummy.com/software/BeautifulSoup/bs4/doc/ "rel =" nofollow noopener "target =" _ blank "> Document officiel a également été mentionné.
Surtout le grattage ・ Mettez en veille avant d'ouvrir la page ・ Vérifiez l'interdiction en consultant le fichier robots.txt Soyons prudents.
Le nombre d'emplois acquis est Partie avant: 208 cas Côté serveur: 181 cas Jeux: 175 était
Cliquez ici pour le code utilisé pour l'analyse.
analysis_job_search.py
import MeCab
import pandas as pd
import numpy as np
import mysql.connector as mydb
import pandas.io.sql as psql
import collections
pd.set_option('display.max_rows', 500)
#Méthode pour extraire la nomenclature du texte
def devide_by_mecab(text):
tagger = MeCab.Tagger("-Ochasen")
node = tagger.parseToNode(text)
word_list = []
while node:
pos = node.feature.split(",")[0]
if pos in ["nom"]:
word = node.surface
word_list.append(word)
node = node.next
return " ".join(word_list)
#Connectez-vous aux paramètres personnels MySQL ici
connection = mydb.connect(
host = '',
port = '',
user = '',
password = '',
database = ''
)
#Obtenir des données de DB
df_frontend = psql.read_sql("SELECT * FROM table WHERE search_word = 'l'extrémité avant'",connection)
df_serverside = psql.read_sql("SELECT * FROM table WHERE search_word = 'Du côté serveur'",connection)
df_game = psql.read_sql("SELECT * FROM table WHERE search_word = 'Programmeur de jeux'",connection)
#need_Une méthode qui décompose les compétences en nomenclature et renvoie
def get_all_words(df):
all_words = []
for index, row in df.iterrows():
words = devide_by_mecab(row['need_skills']).split()
all_words.extend(words)
return all_words
count_of_words_frontend = collections.Counter(get_all_words(df_frontend))
count_of_words_serverside = collections.Counter(get_all_words(df_serverside))
count_of_words_game = collections.Counter(get_all_words(df_game))
#Voir toute la nomenclature par ordre de fréquence
count_of_words_frontend.most_common()
count_of_words_serverside.most_common()
count_of_words_game.most_common()
#Disposition des mots liés à la compétence(count >= 6)
frontend_top_words = ['JavaScript', 'CSS', 'HTML', 'js', 'Vue', 'React', 'conception', 'équipe', 'Git', 'UI', 'PHP', 'UX', 'Angular', 'Ruby', 'Javascript', 'jQuery', 'Photoshop', 'la communication', 'API', 'TypeScript', 'SPA', 'Java', 'Sass', 'designer', 'Illustrator', 'JS', 'tester', 'serveur', 'webpack', 'GitHub', 'AWS', 'AngularJS', 'WordPress', 'Webpack', 'Rails', 'iOS', 'CMS', 'Python', 'Redux', 'MySQL', 'Gulp', 'Android', 'gulp', 'C', 'SCSS', 'git', 'DB', 'Linux', 'Babel', 'Docker', 'CI']
serverside_top_words = ['Ruby', 'PHP', 'AWS', 'Python', 'C', 'Java', 'serveur', 'Rails', 'équipe', 'Infrastructure', 'js', 'Git', 'serveur', 'Android', 'JavaScript', 'Go', 'Linux', 'Perl', 'HTML', 'MySQL', 'RDBMS', 'CSS', 'Kura', 'Tu fais', 'API', 'de face', 'la gestion', 'GitHub', 'iOS', 'DB', 'GCP', 'React', 'Vue', 'réseau', 'Node', 'HTTP', 'Swift', 'CI', 'Objective', 'Docker', 'Sécurité', 'Javascript', 'Azure', 'originaire de', 'PostgreSQL', 'architecture', 'SQL', 'tester', '#', 'intelligent', 'téléphone', 'UI', 'MVC', 'la communication', 'git', 'Scala', 'Kotlin' , 'CD', 'Base de données', 'TypeScript', 'Apache', 'LAMP', 'designer', 'récipient', 'RDB', 'Laravel']
game_top_words = ['C', '3', 'D', 'Unity', 'Java', 'PHP', 'conception', '++', 'serveur', '++、', 'réseau', 'JavaScript', 'Android', 'la gestion', '#、', 'Objective', 'Photoshop', 'Maya', 'équipe', 'designer', 'Linux', 'MySQL', 'Ruby', 'Python', 'Infrastructure', '#', 'Graphique', 'serveur', 'Excel', 'graphique', 'la communication', 'Unreal', 'DCG', 'AWS', 'Perl', 'Illustrator', 'Engine', 'planificateur', 'Word', 'originaire de', 'mouvement', 'réalisateur', 'HTML', 'UI', 'Flash', 'effet', 'VB', 'du son', 'DS', 'OpenGL', 'iOS', 'DirectX']
#Une méthode pour créer un DataFrame de mots et d'occurrences
def get_top_word_df(top_words,count_of_words):
df = pd.DataFrame({})
for i,word in enumerate(top_words):
word_data = pd.Series([word,count_of_words[word]], index=['word','count'], name=i)
df = df.append(word_data)
return df
df_frontend_top_words = get_top_word_df(frontend_top_words,count_of_words_frontend)
df_serverside_top_words = get_top_word_df(serverside_top_words,count_of_words_serverside)
df_game_top_words = get_top_word_df(game_top_words,count_of_words_game)
for df in [df_frontend_top_words,df_serverside_top_words,df_game_top_words]:
df['rank'] = df['count'].rank(ascending = False, method = 'min').astype(int)
df['count'] = df['count'].astype(int)
df_frontend_top_words[['rank','word','count']]
df_serverside_top_words[['rank','word','count']]
df_game_top_words[['rank','word','count']]
Premièrement, tous les mots sont sortis par ordre de fréquence, et les mots qui ne semblent pas être liés à la compétence sont supprimés manuellement et réémis. Je l'ai ajouté parce que le programmeur du jeu était personnellement intéressé.
Le résultat est le suivant.
rank | word | count |
---|---|---|
1 | JavaScript | 147 |
2 | CSS | 145 |
3 | HTML | 131 |
4 | js | 72 |
5 | Vue | 63 |
5 | React | 63 |
7 | conception | 60 |
8 | équipe | 40 |
9 | Git | 34 |
9 | UI | 34 |
11 | PHP | 31 |
12 | UX | 30 |
13 | Angular | 29 |
14 | Ruby | 23 |
15 | Javascript | 21 |
16 | jQuery | 20 |
16 | Photoshop | 20 |
18 | la communication | 18 |
18 | API | 18 |
18 | TypeScript | 18 |
18 | SPA | 18 |
22 | Java | 16 |
22 | Sass | 16 |
24 | designer | 15 |
24 | Illustrator | 15 |
24 | JS | 15 |
24 | tester | 15 |
28 | serveur | 14 |
29 | webpack | 13 |
29 | GitHub | 13 |
29 | AWS | 13 |
29 | AngularJS | 13 |
33 | WordPress | 12 |
33 | Webpack | 12 |
33 | Rails | 12 |
36 | iOS | 11 |
36 | CMS | 11 |
36 | Python | 11 |
36 | Redux | 11 |
40 | MySQL | 10 |
40 | Gulp | 10 |
42 | Android | 9 |
42 | gulp | 9 |
42 | C | 9 |
45 | SCSS | 8 |
45 | git | 8 |
47 | DB | 7 |
47 | Linux | 7 |
49 | Babel | 6 |
49 | Docker | 6 |
49 | CI | 6 |
rank | word | count |
---|---|---|
1 | Ruby | 81 |
2 | PHP | 67 |
3 | AWS | 50 |
4 | Python | 43 |
5 | C | 42 |
6 | Java | 41 |
7 | serveur | 37 |
8 | Rails | 34 |
9 | équipe | 33 |
10 | Infrastructure | 31 |
11 | js | 29 |
12 | Git | 27 |
12 | serveur | 27 |
14 | Android | 26 |
14 | JavaScript | 26 |
14 | Go | 26 |
17 | Linux | 24 |
17 | Perl | 24 |
19 | HTML | 21 |
19 | MySQL | 21 |
19 | RDBMS | 21 |
22 | CSS | 19 |
23 | Kura | 18 |
23 | Tu fais | 18 |
23 | API | 18 |
26 | de face | 17 |
26 | la gestion | 17 |
26 | GitHub | 17 |
29 | iOS | 16 |
30 | DB | 15 |
30 | GCP | 15 |
30 | React | 15 |
33 | Vue | 14 |
34 | réseau | 12 |
34 | Node | 12 |
36 | HTTP | 11 |
36 | Swift | 11 |
36 | CI | 11 |
36 | Objective | 11 |
40 | Docker | 10 |
40 | Sécurité | 10 |
40 | Javascript | 10 |
40 | Azure | 10 |
44 | originaire de | 9 |
44 | PostgreSQL | 9 |
44 | architecture | 9 |
44 | SQL | 9 |
44 | tester | 9 |
49 | # | 8 |
49 | intelligent | 8 |
49 | téléphone | 8 |
49 | UI | 8 |
49 | MVC | 8 |
49 | la communication | 8 |
49 | git | 8 |
49 | Scala | 8 |
57 | Kotlin | 7 |
57 | CD | 7 |
57 | Base de données | 7 |
57 | TypeScript | 7 |
57 | Apache | 7 |
57 | LAMP | 7 |
63 | designer | 6 |
63 | récipient | 6 |
63 | RDB | 6 |
63 | Laravel | 6 |
rank | word | count |
---|---|---|
1 | C | 156 |
2 | 3 | 62 |
3 | D | 49 |
4 | Unity | 45 |
5 | Java | 32 |
6 | PHP | 31 |
7 | conception | 29 |
8 | ++ | 26 |
9 | serveur | 22 |
10 | ++、 | 19 |
10 | réseau | 19 |
12 | JavaScript | 17 |
13 | Android | 15 |
14 | la gestion | 14 |
15 | #、 | 13 |
16 | Objective | 12 |
16 | Photoshop | 12 |
16 | Maya | 12 |
19 | équipe | 11 |
19 | designer | 11 |
19 | Linux | 11 |
19 | MySQL | 11 |
19 | Ruby | 11 |
19 | Python | 11 |
25 | Infrastructure | 10 |
25 | # | 10 |
25 | Graphique | 10 |
28 | serveur | 9 |
28 | Excel | 9 |
30 | graphique | 8 |
30 | la communication | 8 |
30 | Unreal | 8 |
30 | DCG | 8 |
30 | AWS | 8 |
30 | Perl | 8 |
36 | Illustrator | 7 |
36 | Engine | 7 |
36 | planificateur | 7 |
36 | Word | 7 |
36 | originaire de | 7 |
36 | mouvement | 7 |
42 | réalisateur | 6 |
42 | HTML | 6 |
42 | UI | 6 |
42 | Flash | 6 |
42 | effet | 6 |
42 | VB | 6 |
42 | du son | 6 |
42 | DS | 6 |
42 | OpenGL | 6 |
42 | iOS | 6 |
42 | DirectX | 6 |
J'ai l'impression que les résultats sont presque ceux attendus.
À l'origine, les mêmes mots tels que «JavaScript», «Javascript» et «js» devaient être nommés correctement, mais cela semblait difficile car il y avait beaucoup de mots, donc j'étais frustré.
Ingénieur front-end: html, css, javascript sont exceptionnels et cela semble indispensable. De plus, la deuxième étape consiste à pouvoir utiliser des frameworks tels que Vue et React tout en renforçant la conception et l'interface utilisateur / UX, et il serait bon d'approfondir la compréhension côté serveur par la suite.
Ingénieur côté serveur: Le nuage est divisé en «Kura» et «Udo»! …… Conversation silencieuse. Il semble que Ruby, PHP, Python et Java sont les principaux langages (je ne sais pas lequel est C). De plus, le cloud est également une matière obligatoire. Je souhaite également comprendre la base de données, le réseau et le front-end. Il semble y avoir beaucoup d'études.
Programmeur de jeu: Après tout, la direction est un peu différente et c'est intéressant. C ++, C # et Unity, 3D sont les domaines principaux, et il semble qu'il soit nécessaire de se familiariser avec le graphisme lors de la programmation.
J'ai peu de connaissances, donc je ne peux dire que quelque chose de vraiment brutal ... J'aimerais étudier sur la base de ce résultat!
―― Puisque le mot est un peu strict, le nombre d'acquisitions est faible (environ 200)
-Comme il s'agit d'une enquête sur un seul site, il y a un biais
J'ai juste regardé brièvement la fréquence, mais je suis heureux qu'elle ait également servi de guide pour les domaines que je devrais étudier.
Il peut être plus intéressant de comparer sur plusieurs sites ou d'essayer sur un site transversal. Si vous êtes intéressé, veuillez le vérifier de vos propres yeux!
Recommended Posts