ハローワークインターネットサービスから求人情報を取得する
http://eneprog.blogspot.com/2018/07/pythonpandas.html
今回はこのデータの中身を見てみます。
・インポートとデータ読み込み
import pandas as pd
from time import sleep
import matplotlib
import matplotlib.pyplot as plt
tables=pd.read_csv("ehime_job.csv",encoding="CP932")
tables.head()
| Unnamed: 0 | NO | 求人番号 | 職種 | 雇用形態/賃金(税込) | 就業時間/休日/週休二日 | 産業 | 沿線/就業場所 | 受理日 | |
|---|---|---|---|---|---|---|---|---|---|
| 0 | NEW!◎ | 1 | 13040- 82018581 | ルームアドバイザー職/新居浜駅前店 | 正社員/182,000円~182,000円 | 変形 1年単位1)10:00~19:00/他/その他 | 不動産業,物品賃貸業のうち不動産代理業・仲介業 | 愛媛県新居浜市 | 平成30年7月9日 |
| 1 | NEW!◎ | 2 | 13170- 30358781 | 施工管理/松山市(要普免) 【急募】 | 正社員/230,000円~400,000円 | 1)08:00~17:00/土日/毎週 | 不動産業,物品賃貸業のうち建物売買業,土地売買業 | 愛媛県松山市 | 平成30年7月9日 |
| 2 | NEW!◎ | 3 | 21010- 26058881 | メディカルスタッフ(たんぽぽ薬局今治喜田村店) | 正社員/167,800円~200,000円 | 変形 1ヶ月単位1)08:30~17:302)08:30~13:303)09:00~18:0... | 卸売業・小売業のうち医薬品・化粧品小売業 | 愛媛県今治市 | 平成30年7月9日 |
| 3 | NEW!◎ | 4 | 27020- 46421181 | フィールドサービス(松山市)**急募** | 正社員/150,000円~225,000円 | 変形 1年単位1)08:35~18:30/他/毎週 | 卸売業・小売業のうち各種商品卸売業 | 愛媛県松山市 | 平成30年7月9日 |
| 4 | NEW!◎ | 5 | 27020- 46422081 | 営業職(プレゼン型)松山市★東証一部上場★メーカー | 正社員/150,000円~225,000円 | 変形 1年単位1)08:35~18:30/土日祝他/毎週 | 卸売業・小売業のうち各種商品卸売業 | 愛媛県松山市 | 平成30年7月9日 |
愛媛県のフルタイム正社員の求人情報、7575件です。
「雇用形態/賃金(税込)」と「就業時間/休日/週休二日」は複数の情報が一つのカラムに入っているので分割し、データを整理します。
・「雇用形態/賃金(税込)」の整理
table2=(tables["雇用形態/賃金(税込)"]
.str.replace("円~","/")
.str.replace("円","")
.str.replace(",","")
.str.split("/",expand=True)
)
able2.columns=["雇用形態","賃金(最低)","賃金(最大)"]
table2=table2[["賃金(最低)","賃金(最大)"]].astype(int)
table2.head()
| 賃金(最低) | 賃金(最大) | |
|---|---|---|
| 0 | 182000 | 182000 |
| 1 | 230000 | 400000 |
| 2 | 167800 | 200000 |
| 3 | 150000 | 225000 |
| 4 | 150000 | 225000 |
「雇用形態/賃金(税込)」列には「正社員/182,000円~182,000円」というように"雇用形態","賃金(最低)","賃金(最大)"の3つの情報が入っています。区切り文字を"/"に統一し、不要な文字("円",コンマ)を削除して、splitで列を分割します。
その後、列名をつけ、「賃金(最低)」「賃金(最大)」を数値に変換しました。
・「就業時間/休日/週休二日」の分割
table3=tables["就業時間/休日/週休二日"].str.split("/",expand=True)
table3.columns=["就業時間","休日","週休二日"]
table3.head()
| 就業時間 | 休日 | 週休二日 | |
|---|---|---|---|
| 0 | 変形 1年単位1)10:00~19:00 | 他 | その他 |
| 1 | 1)08:00~17:00 | 土日 | 毎週 |
| 2 | 変形 1ヶ月単位1)08:30~17:302)08:30~13:303)09:00~18:00 | 日祝他 | 毎週 |
| 3 | 変形 1年単位1)08:35~18:30 | 他 | 毎週 |
| 4 | 変形 1年単位1)08:35~18:30 | 土日祝他 | 毎週 |
同様に「就業時間/休日/週休二日」も3つに分割します。
・データ結合
job_table=(pd.concat([tables,table2,table3],axis=1)
.drop(["雇用形態/賃金(税込)","就業時間/休日/週休二日"],axis=1)
)
job_table.head()
| Unnamed: 0 | NO | 求人番号 | 職種 | 産業 | 沿線/就業場所 | 受理日 | 雇用形態 | 賃金(最低) | 賃金(最大) | 就業時間 | 休日 | 週休二日 | |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 0 | NEW!◎ | 1 | 13040- 82018581 | ルームアドバイザー職/新居浜駅前店 | 不動産業,物品賃貸業のうち不動産代理業・仲介業 | 愛媛県新居浜市 | 平成30年7月9日 | 正社員 | 182000 | 182000 | 変形 1年単位1)10:00~19:00 | 他 | その他 |
| 1 | NEW!◎ | 2 | 13170- 30358781 | 施工管理/松山市(要普免) 【急募】 | 不動産業,物品賃貸業のうち建物売買業,土地売買業 | 愛媛県松山市 | 平成30年7月9日 | 正社員 | 230000 | 400000 | 1)08:00~17:00 | 土日 | 毎週 |
| 2 | NEW!◎ | 3 | 21010- 26058881 | メディカルスタッフ(たんぽぽ薬局今治喜田村店) | 卸売業・小売業のうち医薬品・化粧品小売業 | 愛媛県今治市 | 平成30年7月9日 | 正社員 | 167800 | 200000 | 変形 1ヶ月単位1)08:30~17:302)08:30~13:303)09:00~18:00 | 日祝他 | 毎週 |
| 3 | NEW!◎ | 4 | 27020- 46421181 | フィールドサービス(松山市)**急募** | 卸売業・小売業のうち各種商品卸売業 | 愛媛県松山市 | 平成30年7月9日 | 正社員 | 150000 | 225000 | 変形 1年単位1)08:35~18:30 | 他 | 毎週 |
| 4 | NEW!◎ | 5 | 27020- 46422081 | 営業職(プレゼン型)松山市★東証一部上場★メーカー | 卸売業・小売業のうち各種商品卸売業 | 愛媛県松山市 | 平成30年7月9日 | 正社員 | 150000 | 225000 | 変形 1年単位1)08:35~18:30 | 土日祝他 | 毎週 |
データ結合し、表の完成です。
ここから中身を見てみます。
・求人の多い地域
job_area=job_table.groupby("沿線/就業場所")[["沿線/就業場所"]].count().sort_values(by="沿線/就業場所", ascending=False)
job_area[:10]
| 沿線/就業場所 | |
|---|---|
| 沿線/就業場所 | |
| 愛媛県松山市 | 2853 |
| 愛媛県今治市 | 894 |
| 愛媛県新居浜市 | 734 |
| 愛媛県西条市 | 620 |
| 愛媛県四国中央市 | 612 |
| 愛媛県宇和島市 | 321 |
| 愛媛県大洲市 | 240 |
| 愛媛県八幡浜市 | 198 |
| 愛媛県伊予郡松前町 | 150 |
| 愛媛県東温市 | 150 |
groupbyで「沿線/就業場所」をグループ化し、データ数を数えました。
松山市の求人数がダントツで多いです。続いて今治市、西条市、新居浜市となっています。
・求人の多い業種
job_table.groupby("産業")[["産業"]].count().sort_values(by="産業", ascending=False)[:10]
| 産業 | |
|---|---|
| 産業 | |
| 医療,福祉のうち老人福祉・介護事業 | 1025 |
| 医療,福祉のうち病院 | 478 |
| 運輸業,郵便業のうち一般貨物自動車運送業 | 319 |
| 建設業のうち一般土木建築工事業 | 246 |
| 製造業のうち船舶製造・修理業,舶用機関製造業 | 229 |
| 医療,福祉のうち一般診療所 | 207 |
| 建設業のうち土木工事業(舗装工事業を除く) | 143 |
| 卸売業・小売業のうち自動車小売業 | 108 |
| 卸売業・小売業のうち医薬品・化粧品小売業 | 108 |
| 医療,福祉のうち歯科診療所 | 107 |
産業別では、医療、介護系が最も多く、運輸、建設・製造と続いています。
・賃金の統計量
table2[["賃金(最低)","賃金(最大)"]].describe()
| 賃金(最低) | 賃金(最大) | |
|---|---|---|
| count | 7575.000000 | 7575.000000 |
| mean | 167828.605545 | 224215.472871 |
| std | 35528.514659 | 72106.315667 |
| min | 45000.000000 | 50000.000000 |
| 25% | 147000.000000 | 173000.000000 |
| 50% | 162500.000000 | 210000.000000 |
| 75% | 184817.000000 | 260000.000000 |
| max | 416667.000000 | 791666.000000 |
.describe()で賃金情報の統計量を見てみます。
賃金(最低)の平均は167,828円、中央値162,500円で、賃金(最大)では平均224,215円、中央値210000と平均値と中央値の差は小さくなっています。
・賃金の分布
plt.rcParams['font.family'] = 'SimHei' plt.rcParams["font.size"] = 16 table2.plot(y=["賃金(最低)","賃金(最大)"],bins=20,alpha=0.5,range=(0,600000),kind="hist",figsize=(10,5))
matplotlibで日本語を表示させると文字化けするので、plt.rcParams['font.family']でフォントを指定しています。alpha=0.5は色の透過度の指定です。
赤色、賃金(最低)では16万円に大きな山となり分布範囲は小さくなっています。このくらいの求人が多いということですね。青色、賃金(最高)の方は最頻値が20万円程度で最低よりも分布が広く、やや右に裾の長いグラフになりました。
参考:
ハローワークインターネットサービス
https://www.hellowork.go.jp/index.html
プログラミング学習:pandasでweb上の表を取得する。
https://eneprog.blogspot.com/2018/04/pandaswebpython.html
ハローワークインターネットサービスから求人情報を取得する
http://eneprog.blogspot.com/2018/07/pythonpandas.html