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
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
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
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
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
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
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