今日も微速転進

ここではないどこかへ

厚生労働省ブラック企業リスト4月版(2018年)


スポンサーリンク

遅くなりましたが、4月版。今年の5月で厚生労働省が企業名を掲載し始めてから丸一年ということになります。

このブログで追いかけているのは8月からですが。

a244.hateblo.jp

データの入手元

www.mhlw.go.jp

ファイルは労働基準関係法令違反に係る公表事案というリンクから。ただし、毎月同じファイル名で更新される点に注意。

機械可読データ(タブ区切りテキスト形式)

厚生労働省ブラック企業リスト(2018年04月20日版)

PDFからTSVへの変換スクリプト

Convert PDF to TSV ( for Japan's MHLW illegal company list ) rev. 2

使い方。

$ python3 convert-pdf2tsv.py 170510-01.pdf > output.tsv

簡単な分析

今月の特筆すべき点は、香川労働局の公表分がゼロ件という点。ただし、他府県の労働局から公表されている事業所に香川県の事業所は含まれている。

香川労働局がサボっているのか、年度末だからか、理由は不明。香川件にブラック企業がないということではない。

前月との比較

先月の件数が450件で今月は470件。差分は20件。

大きく増えたのはトータル件数でみると兵庫労働局で+6。大阪労働局と島根労働局が+4続く。大きく減少しているのは福岡労働局で-7件。

新しく掲載された件数)で見るとトップは大阪で+13件。掲載終了した件数でみると福岡労働局で12件。

基本的に公表(掲載)されてから1年で削除ということなので、掲載終了については妥当。

労働局名 当月公表件数 前月公表件数 新規掲載 掲載終了 差分
北海道労働局 25 30 2 7 -5
青森労働局 8 9 1 2 -1
岩手労働局 11 8 3 0 +3
宮城労働局 5 4 2 1 +1
秋田労働局 4 3 3 2 +1
山形労働局 4 2 2 0 +2
福島労働局 10 10 2 2 +/-0
茨城労働局 5 3 2 0 +2
栃木労働局 8 8 1 1 +/-0
群馬労働局 4 1 4 1 +3
埼玉労働局 11 12 2 3 -1
千葉労働局 10 9 4 3 +1
東京労働局 21 24 0 3 -3
神奈川労働局 9 12 2 5 -3
新潟労働局 15 14 2 1 +1
富山労働局 5 6 0 1 -1
石川労働局 6 5 1 0 +1
福井労働局 5 1 4 0 +4
山梨労働局 11 8 3 0 +3
長野労働局 15 13 3 1 +2
岐阜労働局 14 12 3 1 +2
静岡労働局 10 11 4 5 -1
愛知労働局 31 31 9 9 +/-0
三重労働局 10 7 3 0 +3
滋賀労働局 7 4 3 0 +3
京都労働局 8 10 1 3 -2
大阪労働局 33 29 13 9 +4
兵庫労働局 18 12 11 5 +6
奈良労働局 5 4 1 0 +1
和歌山労働局 9 6 4 1 +3
鳥取労働局 2 2 0 0 +/-0
島根労働局 8 4 5 1 +4
岡山労働局 7 8 0 1 -1
広島労働局 16 14 6 4 +2
山口労働局 4 3 2 1 +1
徳島労働局 5 6 0 1 -1
香川労働局 0 1 0 1 -1
愛媛労働局 13 13 1 1 +/-0
高知労働局 8 8 1 1 +/-0
福岡労働局 14 21 5 12 -7
佐賀労働局 6 7 0 1 -1
長崎労働局 5 11 1 7 -6
熊本労働局 13 11 3 1 +2
大分労働局 11 8 3 0 +3
宮崎労働局 2 6 0 4 -4
鹿児島労働局 8 8 1 1 +/-0
沖縄労働局 11 11 3 3 +/-0

集計用スクリプト

Pythonのデータ構造として集合(Set)を使って集合演算しているだけですが集計スクリプト

集計結果を標準出力に表示するもの(Markdown用のテーブル形式)。いつもどおりのやっつけ仕事。

なお、動作には一行ごとに労働局名を記載したリストが必要です。

#! /usr/bin/env python3
# encoding: utf-8

import csv
import pathlib
import sys

def analyze_current_and_prev(last_filename, prev_filename):


    last_file_path = pathlib.Path(last_filename)
    prev_file_path = pathlib.Path(prev_filename)

    current_data = []
    prev_data = []

    with last_file_path.open(mode='rt') as cfp:
        reader = csv.reader(cfp, delimiter="\t")
        for row in reader:

            current_data.append(row)

    with prev_file_path.open(mode='rt') as pfp:
        reader = csv.reader(pfp, delimiter="\t")
        for row in reader:
            prev_data.append(row)


    diff_count = len(current_data) - len(prev_data)

    print("current: {0}, prev: {1}, diff: {2}".format(len(current_data),len(prev_data),diff_count),file=sys.stderr)

    return {'last': current_data, 'previous': prev_data}

if __name__ == "__main__" :

    all_data = analyze_current_and_prev('data/result/no_quote_2018_0420.tsv', 'data/result/no_quote_2018_0315.tsv')

    last_month = all_data['last']

    month_before_last = all_data['previous']

    by_laborer_bureau_last = {}
    by_laborer_bureau_b4_last = {} # month before(b4) last

    # 労働局名のリストを読み込む

    laborer_bureau_list = []
    with  pathlib.Path('utils/roudoukyoku.txt').open(mode='rt') as fp :
        temp = fp.readlines()
        laborer_bureau_list = [ b.rstrip() for b in temp]



    for name in  laborer_bureau_list:

        by_laborer_bureau_last[name] = list(filter(lambda x: x[0] == name, last_month))

    for name in laborer_bureau_list:
        by_laborer_bureau_b4_last[name] = list(filter(lambda x: x[0] == name, month_before_last))



    # 労働局単位で集計して出力
    print("| 労働局名| 当月公表件数 | 前月公表件数 |  新規掲載 | 掲載終了 | 差分 |")
    print("| :------ | :--------: | :--------:| :---: |:---: |:---: |")
    for name in laborer_bureau_list:

        total_by_pref_last = len(by_laborer_bureau_last[name])
        total_by_pref_b4_last = len(by_laborer_bureau_b4_last[name])

        total_diff = total_by_pref_last - total_by_pref_b4_last

        preffix_mark = ''
        if total_diff > 0 :
            preffix_mark = '+'
        elif total_diff < 0:
            preffix_mark = ''
        else:
            preffix_mark = '+/-'

        diff_st = preffix_mark + str(total_diff)


        last_data_set = set()
        before_data_set = set()
        for entry in by_laborer_bureau_last[name]:
            last_data_set.add(entry[2])

        for entry in by_laborer_bureau_b4_last[name]:
            before_data_set.add(entry[2])

        incremental = last_data_set - before_data_set
        difference = before_data_set - last_data_set

        #print("新規追加", incremental)
        #print("非掲載", difference)

        print("| {0} | {1} | {2} |  {3} | {4} | {5} | ".format(
            name,total_by_pref_last,total_by_pref_b4_last,len(incremental), len(difference), diff_st )
            )

大したことはしていませんが、載せておきます。

まとめ

先月よりは分析が進歩したよねってことでこの辺で。

掲載されているのは氷山の一角で、日本社会全体がブラック化している感じはありますけどね。

もうちょっとしっかり分析するなら過去分も含めてDBにいれてSQLでやるか、Pythonで頑張るならpandas

昨年の5月から7月分もTSV形式化して1年分分析するのもありかな、という感じです。

Pythonプロフェッショナルプログラミング 第2版

Pythonプロフェッショナルプログラミング 第2版

労基署がやってきた! (宝島社新書)

労基署がやってきた! (宝島社新書)

広告