コード例 #1
0
 def _convert(self, _list, created_at: date):
     """"
     ヘッダが
     "都道府県名","総数(人口)
     【H28.1.1時点】","交付枚数
     【H29.5.15時点】","人口に対する
     交付枚数率"
     となっているので、日付を抜き出して列に追加する
     """
     population_ymd = None
     card_ymd = None
     population_date = StringUtil.extract_date_from_header(_list[0][1])
     if (population_date is not None):
         population_ymd = population_date.strftime('%Y/%m/%d')
     card_date = StringUtil.extract_date_from_header(_list[0][2])
     if (card_date is not None):
         card_ymd = card_date.strftime('%Y/%m/%d')
     else:
         card_ymd = created_at.strftime('%Y/%m/%d')
     header = [
         "都道府県名", "総数(人口)", "交付枚数", "人口に対する交付枚数率", "人口算出基準日", "交付枚数算出基準日"
     ]
     data = list(map(lambda x: x + [population_ymd, card_ymd], _list[1:]))
     self._list = [header] + data
     return self._list
コード例 #2
0
 def _convert(self, _list, created_at: date):
     """"
     ヘッダが
     都道府県名","市区町村名","総数(人口)
     【H28.1.1時点】","交付枚数
     【H29.5.15時点】","交付率"
     となっているので、日付を抜き出して列に追加する
     """
     population_ymd = None
     card_ymd = None
     population_date = StringUtil.extract_date_from_header(_list[0][2])
     if (population_date is not None):
         population_ymd = population_date.strftime('%Y/%m/%d')
     card_date = StringUtil.extract_date_from_header(_list[0][3])
     if (card_date is not None):
         card_ymd = card_date.strftime('%Y/%m/%d')
     else:
         card_ymd = created_at.strftime('%Y/%m/%d')
     header = [
         "都道府県名", "市区町村名", "総数(人口)", "交付枚数", "人口に対する交付枚数率", "人口算出基準日",
         "交付件数基準日"
     ]
     if (_list[1][0] == '全国'):  # remove 全国
         data = list(
             map(lambda x: x + [population_ymd, card_ymd], _list[2:]))
     else:
         data = list(
             map(lambda x: x + [population_ymd, card_ymd], _list[1:]))
     self._list = self._citycode.add_citycode(data, header)
     return self._list
コード例 #3
0
 def _convert(self, _list: list, created_at: date) -> list:
     """
     CSVのヘッダが
     ["年齢","人口(H28.1.1時点)","","","交付件数(H29.5.15時点)","","","交付率","","","全体に対する交付件数割合","",""]
     ["","男","女","計","男","女","計","男","女","計","男","女","計"]
     という2段組になってしまっているので、ヘッダを一行にして、(*時点)の部分を抜き出して最終列に加える処理を行う
     ただし、R3年6月から、交付枚数から基準日が消えているので、デフォルト日付を使う
     """
     _list = StringUtil.fix_numberfield_error(_list, 1, 13, [0, 1])
     card_ymd = None
     population_ymd = StringUtil.extract_date_from_header(
         self._list[0][1]).strftime('%Y/%m/%d')
     card_date = StringUtil.extract_date_from_header(_list[0][4])
     if (card_date is not None):
         card_ymd = card_date.strftime('%Y/%m/%d')
     else:
         card_ymd = created_at.strftime('%Y/%m/%d')
     header = [
         "年齢", "人口(男)", "人口(女)", "人口(計)", "交付件数(男)", "交付件数(女)", "交付件数(計)",
         "交付率(男)", "交付率(女)", "交付率(計)", "全体に対する交付件数割合(男)", "全体に対する交付件数割合(女)",
         "全体に対する交付件数割合(計)", "人口算出基準日", "交付枚数算出基準日"
     ]
     self._list = [header] + list(
         map(lambda x: x + [population_ymd, card_ymd], _list[2:]))
     return self._list
コード例 #4
0
 def _convert(self, _list: list) -> list:
     """
     demographics.csvの一部の日付のファイルにおいて、
     人口(計) がNULL、右隣の 交付件数(男) に値が2つ入ってしまっているケースがある
     https://github.com/codeforjapan/mynumbercard_statistics/issues/86
     """
     _list = StringUtil.fix_numberfield_error(_list, 1, 13, [0, 1])
     """
     CSVのヘッダが
     ["年齢","人口(H28.1.1時点)","","","交付件数(H29.5.15時点)","","","交付率","","","全体に対する交付件数割合","",""]
     ["","男","女","計","男","女","計","男","女","計","男","女","計"]
     という2段組になってしまっているので、ヘッダを一行にして、(*時点)の部分を抜き出して最終列に加える処理を行う
     """
     population_ymd = StringUtil.extract_date_from_header(
         self._list[0][1]).strftime('%Y/%m/%d')
     card_ymd = StringUtil.extract_date_from_header(
         self._list[0][4]).strftime('%Y/%m/%d')
     header = [
         "年齢", "人口(男)", "人口(女)", "人口(計)", "交付件数(男)", "交付件数(女)", "交付件数(計)",
         "交付率(男)", "交付率(女)", "交付率(計)", "全体に対する交付件数割合(男)", "全体に対する交付件数割合(女)",
         "全体に対する交付件数割合(計)", "人口算出基準日", "交付枚数算出基準日"
     ]
     self._list = [header] + list(
         map(lambda x: x + [population_ymd, card_ymd], _list[2:]))
     return self._list
コード例 #5
0
    def _convert(self, _list: list) -> list:
        """
    なぜか データの1行目の人口(女)と人口(計)がくっついて閉まっているので分割する
    '65,269,421 127,443,563  11,249,560' というふうになっている
    """
        fixdata = _list[2][3]

        if (type(fixdata) is str):
            _list[2][2] = int(fixdata.split(' ')[0].replace(',', ''))
            _list[2][3] = int(fixdata.split(' ')[1].replace(',', ''))
        """
    CSVのヘッダが
    ["年齢","人口(H28.1.1時点)","","","交付件数(H29.5.15時点)","","","交付率","","","全体に対する交付件数割合","",""]
    ["","男","女","計","男","女","計","男","女","計","男","女","計"]
    という2段組になってしまっているので、ヘッダを一行にして、(*時点)の部分を抜き出して最終列に加える処理を行う
    """
        population_ymd = StringUtil.extract_date_from_header(
            self._list[0][1]).strftime('%Y/%m/%d')
        card_ymd = StringUtil.extract_date_from_header(
            self._list[0][4]).strftime('%Y/%m/%d')
        header = [
            "年齢", "人口(男)", "人口(女)", "人口(計", "交付件数(男)", "交付件数(女)", "交付件数(計)",
            "交付率(男)", "交付率(女)", "交付率(計)", "全体に対する交付件数割合(男)", "全体に対する交付件数割合(女)",
            "全体に対する交付件数割合(計)", "人口算出基準日", "交付件数基準日"
        ]
        self._list = [header] + list(
            map(lambda x: x + [population_ymd, card_ymd], _list[2:]))
        return self._list
コード例 #6
0
 def _convert(self, _list: list) -> list:
     """
     "区分","","人口
     (H29.1.1時点)","交付枚数
     (H29.8.31時点)","人口に対する交付枚数率"
     というヘッダになっているので基準日を抜き出して列として追加する
     """
     population_ymd = None
     card_ymd = None
     population_date = StringUtil.extract_date_from_header(_list[0][2])
     if (population_date is not None):
         population_ymd = population_date.strftime('%Y/%m/%d')
     card_date = StringUtil.extract_date_from_header(_list[0][3])
     if (card_date is not None):
         card_ymd = card_date.strftime('%Y/%m/%d')
     header = ["区分", "人口", "交付枚数", "人口に対する交付枚数率", "人口算出基準日", "交付枚数算出基準日"]
     data = list(map(lambda x: x + [population_ymd, card_ymd], _list[1:]))
     self._list = [header] + self.merge_rows(data, 0, 1)
     return self._list
コード例 #7
0
 def _convert(self, _list: list) -> list:
     """
     CSVのヘッダが
     ["年齢","人口(H28.1.1時点)","","","交付件数(H29.5.15時点)","","","交付率","","","全体に対する交付件数割合","",""]
     ["","男","女","計","男","女","計","男","女","計","男","女","計"]
     という2段組になってしまっているので、ヘッダを一行にして、(*時点)の部分を抜き出して最終列に加える処理を行う
     """
     population_ymd = StringUtil.extract_date_from_header(
         self._list[0][1]).strftime('%Y/%m/%d')
     card_ymd = StringUtil.extract_date_from_header(
         self._list[0][4]).strftime('%Y/%m/%d')
     header = [
         "年齢", "人口(男)", "人口(女)", "人口(計)", "交付件数(男)", "交付件数(女)", "交付件数(計)",
         "交付率(男)", "交付率(女)", "交付率(計)", "全体に対する交付件数割合(男)", "全体に対する交付件数割合(女)",
         "全体に対する交付件数割合(計)", "人口算出基準日", "交付枚数算出基準日"
     ]
     self._list = [header] + list(
         map(lambda x: x + [population_ymd, card_ymd], _list[2:]))
     return self._list