git / code.ach.gov.ru / gavrin / jupyter_snippet
commit 7053684046a211d43aa6c50118997d9dfa58e3be
author Дмитрий Сергеевич Гаврин <gavrin_ds@ach.gov.ru>
date 2020-04-02 14:33:12 +0300
parents 8cf6323b
message
новый функционал для excel препроцессора, пока не работает rar и *.xls
files
| file | add | del |
|---|---|---|
| ExcelPreporcessor.ipynb => ExcelPreprocessor.ipynb | +261 | -595 |
patch
diff --git a/ExcelPreporcessor.ipynb b/ExcelPreprocessor.ipynb
rename from ExcelPreporcessor.ipynb
rename to ExcelPreprocessor.ipynb
index 9c56945158686c16b8a2cc8f7155010741618261..fa3fe7e564758f134ab02415dc2617b951626194 100644
--- a/ExcelPreporcessor.ipynb
+++ b/ExcelPreprocessor.ipynb
@@ -46,9 +46,10 @@ "Requirement already satisfied: pandas in c:\\dev\\.jupyter\\.venv\\lib\\site-packages (1.0.1)\n",
"Requirement already satisfied: openpyxl in c:\\dev\\.jupyter\\.venv\\lib\\site-packages (3.0.3)\n",
"Requirement already satisfied: xlrd in c:\\dev\\.jupyter\\.venv\\lib\\site-packages (1.2.0)\n",
"Requirement already satisfied: chardet in c:\\dev\\.jupyter\\.venv\\lib\\site-packages (3.0.4)\n",
- "Requirement already satisfied: numpy>=1.13.3 in c:\\dev\\.jupyter\\.venv\\lib\\site-packages (from pandas) (1.18.1)\n",
+ "Requirement already satisfied: rarfile in c:\\dev\\.jupyter\\.venv\\lib\\site-packages (3.1)\n",
"Requirement already satisfied: pytz>=2017.2 in c:\\dev\\.jupyter\\.venv\\lib\\site-packages (from pandas) (2019.3)\n",
"Requirement already satisfied: python-dateutil>=2.6.1 in c:\\dev\\.jupyter\\.venv\\lib\\site-packages (from pandas) (2.8.1)\n",
+ "Requirement already satisfied: numpy>=1.13.3 in c:\\dev\\.jupyter\\.venv\\lib\\site-packages (from pandas) (1.18.1)\n",
"Requirement already satisfied: jdcal in c:\\dev\\.jupyter\\.venv\\lib\\site-packages (from openpyxl) (1.4.1)\n",
"Requirement already satisfied: et_xmlfile in c:\\dev\\.jupyter\\.venv\\lib\\site-packages (from openpyxl) (1.0.1)\n",
"Requirement already satisfied: six>=1.5 in c:\\dev\\.jupyter\\.venv\\lib\\site-packages (from python-dateutil>=2.6.1->pandas) (1.14.0)\n"
@@ -56,12 +57,12 @@ ]
}
],
"source": [
- "!pip install pandas openpyxl xlrd chardet"
+ "!pip install pandas openpyxl xlrd chardet rarfile"
]
},
{
"cell_type": "code",
- "execution_count": 1,
+ "execution_count": 2,
"metadata": {},
"outputs": [],
"source": [
@@ -73,6 +74,7 @@ "from itertools import islice\n",
"from collections.abc import Iterable\n",
"from urllib.parse import urlparse\n",
"from urllib.request import urlopen\n",
+ "from pathlib import Path\n",
"\n",
"import pandas as pd\n",
"import openpyxl"
@@ -87,14 +89,14 @@ ]
},
{
"cell_type": "code",
- "execution_count": 13,
+ "execution_count": 3,
"metadata": {},
"outputs": [],
"source": [
"class ExcelPreprocessor:\n",
" def __init__(self, *wb, append_global_index=False, append_wb_index=False, \n",
" filename_parser=None, append_ws_title_column=False, first_row_number=1,\n",
- " iterate_over_worksheet=0, cells=None, headers=None):\n",
+ " iterate_over_worksheet=0, cells=None, headers=None, in_archive_re_mask=None):\n",
" '''\n",
" параметр iterate_over_worksheet отвечает за то, какой именно рабочий лист в каждой прочитанной\n",
" книге будет разобран по умолчанию это лист с индексом 0, т.е. 1 в списке.\n",
@@ -119,6 +121,7 @@ " self.first_row_number = first_row_number\n",
" self.iterate_over_worksheet = iterate_over_worksheet\n",
" self.cells = cells\n",
" self.headers = headers\n",
+ " self.in_archive_re_mask = in_archive_re_mask\n",
"\n",
" def __repr__(self):\n",
" return f'''{ExcelPreprocessor.__name__}{self.wb}:\n",
@@ -153,13 +156,27 @@ " from zipfile import ZipFile\n",
" import chardet\n",
" ZIP_FILENAME_UTF8_FLAG = 0x800\n",
" zf = ZipFile(rf , 'r')\n",
+ " print(filename)\n",
" for info in zf.filelist:\n",
- " filename = info.filename\n",
+ " zfilename = info.filename\n",
+ " if not zfilename.endswith('.xlsx'):\n",
+ " continue\n",
" if info.flag_bits & ZIP_FILENAME_UTF8_FLAG == 0:\n",
- " filename_bytes = filename.encode('437')\n",
+ " filename_bytes = zfilename.encode('437')\n",
" guessed_encoding = chardet.detect(filename_bytes)['encoding'] or 'cp1252'\n",
- " filename = filename_bytes.decode(guessed_encoding, 'replace')\n",
- " yield filename, zf.open(info.filename, 'r')\n",
+ " zfilename = filename_bytes.decode(guessed_encoding, 'replace')\n",
+ " if self.in_archive_re_mask:\n",
+ " if not re.match(self.in_archive_re_mask, zfilename):\n",
+ " continue\n",
+ " yield str(Path(filename) / Path(zfilename)), zf.open(info.filename, 'r')\n",
+ "\n",
+ " if filename.endswith('.rar'):\n",
+ " from rarfile import RarFile\n",
+ " rf = rarfile.RarFile(rar_fn, 'r')\n",
+ " for f in rf.infolist():\n",
+ " print(f.filename, f.file_size)\n",
+ " if f.filename == 'README':\n",
+ " print(rf.read(f))\n",
"\n",
" @property\n",
" def _columns(self):\n",
@@ -180,7 +197,7 @@ " return columns\n",
"\n",
" def _iter_over_rows(self):\n",
" 'итерация по общей последовательности строк в итоговом наборе'\n",
- " \n",
+ "\n",
" row_counter = 0\n",
"\n",
" for fn, excel_file in self._process_files:\n",
@@ -188,10 +205,10 @@ " wb = openpyxl.load_workbook(excel_file, read_only=True, data_only=False, keep_links=False)\n",
"\n",
" if isinstance(self.iterate_over_worksheet, int):\n",
" iter_sheet = [self.iterate_over_worksheet]\n",
- " elif isinstance(self.iterate_over_worksheet, Iterable):\n",
+ " elif isinstance(self.iterate_over_worksheet, list) or isinstance(self.iterate_over_worksheet, tuple):\n",
" iter_sheet = self.iterate_over_worksheet\n",
" else:\n",
- " iter_sheet = [i for i, ws in enumerate(ws.worksheets)]\n",
+ " iter_sheet = [i for i, ws in enumerate(wb.worksheets) if not ws.title.startswith('hidden')]\n",
"\n",
" for ws_index in iter_sheet:\n",
" ws = wb.worksheets[ws_index]\n",
@@ -217,15 +234,29 @@ " row_counter += 1\n",
"\n",
" def get_dataframe(self):\n",
" 'возвращает набор данных в виде pandas DataFrame'\n",
- " return pd.DataFrame({'hello': []})\n",
+ " data = ([val for col, val in zip(self._columns, row)] for row in self._iter_over_rows())\n",
+ " return pd.DataFrame(data, columns=self._columns)\n",
"\n",
- " def write_csv(self, csv_filename):\n",
- " 'записывает набор данных в файл csv'\n",
- " return None\n",
+ " def write_csv(self, csv_filename, write_header=True, dialect='excel', **fmtparams):\n",
+ " '''\n",
+ " записывает набор данных в файл csv, входные параметры такие же как у метода csv.writer\n",
+ " https://docs.python.org/3/library/csv.html\n",
+ " '''\n",
+ " import csv\n",
+ " with open(csv_filename, 'w', encoding='utf8') as wf:\n",
+ " writer = csv.writer(wf, dialect, **fmtparams)\n",
+ " writer.writerow(self._columns)\n",
+ " writer.writerows(self._iter_over_rows())\n",
"\n",
- " def write_excel(excel_filename):\n",
+ " def write_excel(self, excel_filename):\n",
" 'записывает набор данных в файл excel'\n",
- " return None\n",
+ " from openpyxl import Workbook\n",
+ " wb = Workbook(write_only=True)\n",
+ " ws = wb.create_sheet()\n",
+ " ws.append(self._columns)\n",
+ " for row in self._iter_over_rows():\n",
+ " ws.append(row)\n",
+ " wb.save(excel_filename)\n",
"\n",
" def get_iter_dict(self):\n",
" 'возвращает набор данных в виде итератора словарей'\n",
@@ -237,13 +268,18 @@ " def get_iter_nt(self):\n",
" 'возвращает набор данных в виде итерируемого набора NamedTyple'\n",
" from collections import namedtuple\n",
" cols = self._columns\n",
- " nt = namedtuple(\"Row\", [c.replace(' ', '_').replace('.', '_').replace('(', '_').replace(')', '_') for c in cols])\n",
+ " nt = namedtuple(\"Row\", [re.sub(r\"[\\. \\(\\)]\", \"_\", c).lower() for c in cols])\n",
" for row in self._iter_over_rows():\n",
" yield nt(*row)\n",
"\n",
" def get_sample(self, start, stop):\n",
" 'возвращает сэмпл итогового набора (можно проверить правильность обработки данных)'\n",
- " return [list(row) for row in islice(self._iter_over_rows(), start, stop)]"
+ " return [list(row) for row in islice(self._iter_over_rows(), start, stop)]\n",
+ " \n",
+ " def get_sample_dataframe(self, start, stop) -> pd.DataFrame:\n",
+ " 'возвращает сэмпл итогового набора в виде DataFrame'\n",
+ " data = ([val for col, val in zip(self._columns, row)] for row in islice(self._iter_over_rows(), start, stop))\n",
+ " return pd.DataFrame(data, columns=self._columns)"
]
},
{
@@ -435,7 +471,7 @@ ]
},
{
"cell_type": "code",
- "execution_count": 11,
+ "execution_count": 13,
"metadata": {},
"outputs": [
{
@@ -489,15 +525,15 @@ " <td>xlsx</td>\n",
" <td>P1</td>\n",
" <td>Уточненные данные по состоянию на 16.07.2018\\n</td>\n",
" <td>ЗАДОЛЖЕННОСТЬ - ВСЕГО (стр.1010+стр.1045+стр.1...</td>\n",
- " <td>1005.0</td>\n",
- " <td>1.235462e+09</td>\n",
- " <td>613079956.0</td>\n",
- " <td>137068882.0</td>\n",
- " <td>16509931.0</td>\n",
- " <td>378521695.0</td>\n",
- " <td>377407864.0</td>\n",
- " <td>7475610.0</td>\n",
- " <td>7001696.0</td>\n",
+ " <td>1005</td>\n",
+ " <td>1235462116</td>\n",
+ " <td>613079956</td>\n",
+ " <td>137068882</td>\n",
+ " <td>16509931</td>\n",
+ " <td>378521695</td>\n",
+ " <td>377407864</td>\n",
+ " <td>7475610</td>\n",
+ " <td>7001696</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1</th>\n",
@@ -509,15 +545,15 @@ " <td>xlsx</td>\n",
" <td>P1</td>\n",
" <td>Уточненные данные по состоянию на 16.07.2018\\n</td>\n",
" <td>ЗАДОЛЖЕННОСТЬ ПЕРЕД БЮДЖЕТОМ ПО НАЛОГАМ, СБОРА...</td>\n",
- " <td>1010.0</td>\n",
- " <td>9.667834e+08</td>\n",
- " <td>470685208.0</td>\n",
- " <td>102647180.0</td>\n",
- " <td>12435295.0</td>\n",
- " <td>293731518.0</td>\n",
- " <td>292643494.0</td>\n",
- " <td>6239798.0</td>\n",
- " <td>6015450.0</td>\n",
+ " <td>1010</td>\n",
+ " <td>966783423</td>\n",
+ " <td>470685208</td>\n",
+ " <td>102647180</td>\n",
+ " <td>12435295</td>\n",
+ " <td>293731518</td>\n",
+ " <td>292643494</td>\n",
+ " <td>6239798</td>\n",
+ " <td>6015450</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2</th>\n",
@@ -529,15 +565,15 @@ " <td>xlsx</td>\n",
" <td>P1</td>\n",
" <td>Уточненные данные по состоянию на 16.07.2018\\n</td>\n",
" <td>из нее\\nзадолженность, невозможная к взысканию...</td>\n",
- " <td>1011.0</td>\n",
- " <td>5.978958e+07</td>\n",
- " <td>45827009.0</td>\n",
- " <td>6993023.0</td>\n",
- " <td>772092.0</td>\n",
- " <td>33088224.0</td>\n",
- " <td>32865309.0</td>\n",
- " <td>70488.0</td>\n",
- " <td>41193.0</td>\n",
+ " <td>1011</td>\n",
+ " <td>59789575</td>\n",
+ " <td>45827009</td>\n",
+ " <td>6993023</td>\n",
+ " <td>772092</td>\n",
+ " <td>33088224</td>\n",
+ " <td>32865309</td>\n",
+ " <td>70488</td>\n",
+ " <td>41193</td>\n",
" </tr>\n",
" <tr>\n",
" <th>3</th>\n",
@@ -549,15 +585,15 @@ " <td>xlsx</td>\n",
" <td>P1</td>\n",
" <td>Уточненные данные по состоянию на 16.07.2018\\n</td>\n",
" <td>НЕДОИМКА</td>\n",
- " <td>1020.0</td>\n",
- " <td>7.388634e+08</td>\n",
- " <td>350780985.0</td>\n",
- " <td>76405303.0</td>\n",
- " <td>9214666.0</td>\n",
- " <td>221615329.0</td>\n",
- " <td>220703752.0</td>\n",
- " <td>5920609.0</td>\n",
- " <td>5756088.0</td>\n",
+ " <td>1020</td>\n",
+ " <td>738863445</td>\n",
+ " <td>350780985</td>\n",
+ " <td>76405303</td>\n",
+ " <td>9214666</td>\n",
+ " <td>221615329</td>\n",
+ " <td>220703752</td>\n",
+ " <td>5920609</td>\n",
+ " <td>5756088</td>\n",
" </tr>\n",
" <tr>\n",
" <th>4</th>\n",
@@ -569,15 +605,15 @@ " <td>xlsx</td>\n",
" <td>P1</td>\n",
" <td>Уточненные данные по состоянию на 16.07.2018\\n</td>\n",
" <td>\\nИз строки 1020\\nНЕДОИМКА ОРГАНИЗАЦИЙ И ИНДИВ...</td>\n",
- " <td>1030.0</td>\n",
- " <td>1.053372e+08</td>\n",
- " <td>68231581.0</td>\n",
- " <td>16344932.0</td>\n",
- " <td>1759494.0</td>\n",
- " <td>47161217.0</td>\n",
- " <td>47056987.0</td>\n",
- " <td>36418.0</td>\n",
- " <td>27229.0</td>\n",
+ " <td>1030</td>\n",
+ " <td>105337216</td>\n",
+ " <td>68231581</td>\n",
+ " <td>16344932</td>\n",
+ " <td>1759494</td>\n",
+ " <td>47161217</td>\n",
+ " <td>47056987</td>\n",
+ " <td>36418</td>\n",
+ " <td>27229</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
@@ -599,40 +635,40 @@ "3 Уточненные данные по состоянию на 16.07.2018\\n \n",
"4 Уточненные данные по состоянию на 16.07.2018\\n \n",
"\n",
" поле код строки \\\n",
- "0 ЗАДОЛЖЕННОСТЬ - ВСЕГО (стр.1010+стр.1045+стр.1... 1005.0 \n",
- "1 ЗАДОЛЖЕННОСТЬ ПЕРЕД БЮДЖЕТОМ ПО НАЛОГАМ, СБОРА... 1010.0 \n",
- "2 из нее\\nзадолженность, невозможная к взысканию... 1011.0 \n",
- "3 НЕДОИМКА 1020.0 \n",
- "4 \\nИз строки 1020\\nНЕДОИМКА ОРГАНИЗАЦИЙ И ИНДИВ... 1030.0 \n",
+ "0 ЗАДОЛЖЕННОСТЬ - ВСЕГО (стр.1010+стр.1045+стр.1... 1005 \n",
+ "1 ЗАДОЛЖЕННОСТЬ ПЕРЕД БЮДЖЕТОМ ПО НАЛОГАМ, СБОРА... 1010 \n",
+ "2 из нее\\nзадолженность, невозможная к взысканию... 1011 \n",
+ "3 НЕДОИМКА 1020 \n",
+ "4 \\nИз строки 1020\\nНЕДОИМКА ОРГАНИЗАЦИЙ И ИНДИВ... 1030 \n",
"\n",
- " кол. налогоплательщиков всего по налогу (сбору) по пени \\\n",
- "0 1.235462e+09 613079956.0 137068882.0 16509931.0 \n",
- "1 9.667834e+08 470685208.0 102647180.0 12435295.0 \n",
- "2 5.978958e+07 45827009.0 6993023.0 772092.0 \n",
- "3 7.388634e+08 350780985.0 76405303.0 9214666.0 \n",
- "4 1.053372e+08 68231581.0 16344932.0 1759494.0 \n",
+ " кол. налогоплательщиков всего по налогу (сбору) по пени \\\n",
+ "0 1235462116 613079956 137068882 16509931 \n",
+ "1 966783423 470685208 102647180 12435295 \n",
+ "2 59789575 45827009 6993023 772092 \n",
+ "3 738863445 350780985 76405303 9214666 \n",
+ "4 105337216 68231581 16344932 1759494 \n",
"\n",
- " по штрафам проценты по ЕСН по страховым взносам \n",
- "0 378521695.0 377407864.0 7475610.0 7001696.0 \n",
- "1 293731518.0 292643494.0 6239798.0 6015450.0 \n",
- "2 33088224.0 32865309.0 70488.0 41193.0 \n",
- "3 221615329.0 220703752.0 5920609.0 5756088.0 \n",
- "4 47161217.0 47056987.0 36418.0 27229.0 "
+ " по штрафам проценты по ЕСН по страховым взносам \n",
+ "0 378521695 377407864 7475610 7001696 \n",
+ "1 293731518 292643494 6239798 6015450 \n",
+ "2 33088224 32865309 70488 41193 \n",
+ "3 221615329 220703752 5920609 5756088 \n",
+ "4 47161217 47056987 36418 27229 "
]
},
- "execution_count": 11,
+ "execution_count": 13,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"# попробуем то же самое в виде DataFrame\n",
- "pd.DataFrame(processor.get_iter_dict())[:5]"
+ "processor.get_sample_dataframe(0, 5)"
]
},
{
"cell_type": "code",
- "execution_count": 12,
+ "execution_count": 14,
"metadata": {},
"outputs": [
{
@@ -909,534 +945,166 @@ " <td>628</td>\n",
" <td>72728</td>\n",
" <td>453592</td>\n",
" </tr>\n",
- " </tbody>\n",
- "</table>\n",
- "</div>"
- ],
- "text/plain": [
- " global_index ws_index year filename extension ws_title \\\n",
- "0 0 0 2009 4nm010618 xlsx Р. Справочно1_Списание \n",
- "1 1 1 2009 4nm010618 xlsx Р. Справочно1_Списание \n",
- "2 2 2 2009 4nm010618 xlsx Р. Справочно1_Списание \n",
- "3 3 3 2009 4nm010618 xlsx Р. Справочно1_Списание \n",
- "4 4 4 2009 4nm010618 xlsx Р. Справочно1_Списание \n",
- "5 5 5 2009 4nm010618 xlsx Р. Справочно1_Списание \n",
- "6 6 6 2009 4nm010618 xlsx Р. Справочно1_Списание \n",
- "7 7 7 2009 4nm010618 xlsx Р. Справочно1_Списание \n",
- "8 8 0 2008 4nm011118 xlsx Р. Справочно1_Списание \n",
- "9 9 1 2008 4nm011118 xlsx Р. Справочно1_Списание \n",
- "\n",
- " form_name description \\\n",
- "0 Форма № 4-НМ Справочно к Разделам I, II: 1_Списано зад... \n",
- "1 Форма № 4-НМ Справочно к Разделам I, II: 1_Списано зад... \n",
- "2 Форма № 4-НМ Справочно к Разделам I, II: 1_Списано зад... \n",
- "3 Форма № 4-НМ Справочно к Разделам I, II: 1_Списано зад... \n",
- "4 Форма № 4-НМ Справочно к Разделам I, II: 1_Списано зад... \n",
- "5 Форма № 4-НМ Справочно к Разделам I, II: 1_Списано зад... \n",
- "6 Форма № 4-НМ Справочно к Разделам I, II: 1_Списано зад... \n",
- "7 Форма № 4-НМ Справочно к Разделам I, II: 1_Списано зад... \n",
- "8 Форма № 4-НМ Справочно к Разделам I, II: 1_Списано зад... \n",
- "9 Форма № 4-НМ Справочно к Разделам I, II: 1_Списано зад... \n",
- "\n",
- " form_dt unit_name \\\n",
- "0 по состоянию на 01.06.2018 г. тыс. рублей \n",
- "1 по состоянию на 01.06.2018 г. тыс. рублей \n",
- "2 по состоянию на 01.06.2018 г. тыс. рублей \n",
- "3 по состоянию на 01.06.2018 г. тыс. рублей \n",
- "4 по состоянию на 01.06.2018 г. тыс. рублей \n",
- "5 по состоянию на 01.06.2018 г. тыс. рублей \n",
- "6 по состоянию на 01.06.2018 г. тыс. рублей \n",
- "7 по состоянию на 01.06.2018 г. тыс. рублей \n",
- "8 по состоянию на 01.11.2018 г. тыс. рублей \n",
- "9 по состоянию на 01.11.2018 г. тыс. рублей \n",
- "\n",
- " поле код строки \\\n",
- "0 Сумма списанной задолженности организаций, лик... 2400 \n",
- "1 Сумма списанной задолженности индивидуальных п... 2405 \n",
- "2 Сумма списанной задолженности умерших или объя... 2410 \n",
- "3 Сумма списанной задолженности в случаях принят... 2415 \n",
- "4 Сумма списанной задолженности по \"зависшим\" пл... 2420 \n",
- "5 Сумма списанной задолженности организаций, отв... 2425 \n",
- "6 Сумма списанной задолженности по решениям нало... 2430 \n",
- "7 Сумма задолженности, списанной на основании з... 2435 \n",
- "8 Сумма списанной задолженности организаций, лик... 2400 \n",
- "9 Сумма списанной задолженности индивидуальных п... 2405 \n",
- "\n",
- " кол. налогоплательщиков всего по налогу (сбору) по пени \\\n",
- "0 23632 30705385 18388429 4699527 \n",
- "1 9109 3013574 1661920 881213 \n",
- "2 39920 677495 115346 44047 \n",
- "3 58635 2161183 773472 556271 \n",
- "4 93 43115 31946 752 \n",
- "5 25104 4038755 2487632 1003525 \n",
- "6 16841363 60557919 41458668 19050086 \n",
- "7 1799585 133435115 36498879 19197715 \n",
- "8 40157 71402906 40477282 12510111 \n",
- "9 19496 4481612 2347431 1261980 \n",
- "\n",
- " по штрафам проценты по ЕСН по страховым взносам \n",
- "0 1439452 184237 596724 5397016 \n",
- "1 242978 628 51928 174907 \n",
- "2 11984 0 5203 500915 \n",
- "3 70216 5769 154600 600855 \n",
- "4 76 0 5527 4814 \n",
- "5 215253 х 29516 302829 \n",
- "6 325 1 0 48839 \n",
- "7 5102099 12731 2055653 70568038 \n",
- "8 3381043 838205 1228143 12968122 \n",
- "9 345253 628 72728 453592 "
- ]
- },
- "execution_count": 12,
- "metadata": {},
- "output_type": "execute_result"
- }
- ],
- "source": [
- "# пример как полностью настроить класс сразу при создании\n",
- "proc = ExcelPreprocessor('data\\\\2009\\\\4nm010618.xlsx', 'data\\\\2008\\\\4nm011118.xlsx',\n",
- " filename_parser=lambda filename: re.match(r'data\\\\(?P<year>\\w+)\\\\(?P<filename>\\w+)\\.(?P<extension>\\w+)', filename).groupdict(),\n",
- " append_global_index=True, append_wb_index=True,\n",
- " cells = {'form_name': 'J1', 'description': 'A2', 'form_dt': 'A3', 'unit_name': 'J4'},\n",
- " headers = ['поле', 'код строки', 'кол. налогоплательщиков', 'всего', 'по налогу (сбору)', 'по пени', 'по штрафам', 'проценты', 'по ЕСН', 'по страховым взносам'],\n",
- " first_row_number=7, append_ws_title_column=True, iterate_over_worksheet=2\n",
- ")\n",
- "pd.DataFrame(proc.get_iter_dict())[:10]"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 25,
- "metadata": {},
- "outputs": [
- {
- "name": "stdout",
- "output_type": "stream",
- "text": [
- "135.86149168014526\n"
- ]
- }
- ],
- "source": [
- "fn = r'C:\\dev\\.jupyter\\water\\water_report.zip'\n",
- "proc = ExcelPreprocessor(fn,\n",
- " filename_parser=lambda filename: {'filename': filename.split('.')[0]},\n",
- " append_global_index=True, append_wb_index=True,\n",
- " cells = {'obj': 'A1', 'form_dt': 'A2', 'report_dt': 'A3', 'np': 'B7'},\n",
- " headers = ['col_%s' % i for i in range(1, 39)],\n",
- " first_row_number=7, append_ws_title_column=True, iterate_over_worksheet=0\n",
- ")\n",
- "import time\n",
- "ct = time.time()\n",
- "d = pd.DataFrame(proc.get_iter_dict())\n",
- "print(time.time() - ct)"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 16,
- "metadata": {},
- "outputs": [
- {
- "data": {
- "text/html": [
- "<div>\n",
- "<style scoped>\n",
- " .dataframe tbody tr th:only-of-type {\n",
- " vertical-align: middle;\n",
- " }\n",
- "\n",
- " .dataframe tbody tr th {\n",
- " vertical-align: top;\n",
- " }\n",
- "\n",
- " .dataframe thead th {\n",
- " text-align: right;\n",
- " }\n",
- "</style>\n",
- "<table border=\"1\" class=\"dataframe\">\n",
- " <thead>\n",
- " <tr style=\"text-align: right;\">\n",
- " <th></th>\n",
- " <th>global_index</th>\n",
- " <th>ws_index</th>\n",
- " <th>filename</th>\n",
- " <th>ws_title</th>\n",
- " <th>form_name</th>\n",
- " <th>description</th>\n",
- " <th>form_dt</th>\n",
- " <th>unit_name</th>\n",
- " <th>поле</th>\n",
- " <th>код строки</th>\n",
- " <th>кол. налогоплательщиков</th>\n",
- " <th>всего</th>\n",
- " <th>по налогу (сбору)</th>\n",
- " <th>по пени</th>\n",
- " <th>по штрафам</th>\n",
- " <th>проценты</th>\n",
- " <th>по ЕСН</th>\n",
- " <th>по страховым взносам</th>\n",
- " </tr>\n",
- " </thead>\n",
- " <tbody>\n",
- " <tr>\n",
- " <th>0</th>\n",
- " <td>0</td>\n",
- " <td>0</td>\n",
- " <td>4nm010318.xlsx</td>\n",
- " <td>Р. Справочно1_Списание</td>\n",
- " <td>Форма № 4-НМ</td>\n",
- " <td>Справочно к Разделам I, II: 1_Списано зад...</td>\n",
- " <td>по состоянию на 01.03.2018 г.</td>\n",
- " <td>тыс. рублей</td>\n",
- " <td>Сумма списанной задолженности организаций, лик...</td>\n",
- " <td>2400</td>\n",
- " <td>6302</td>\n",
- " <td>8850836</td>\n",
- " <td>4813849</td>\n",
- " <td>1428282</td>\n",
- " <td>385722</td>\n",
- " <td>122790</td>\n",
- " <td>249262</td>\n",
- " <td>1850931</td>\n",
- " </tr>\n",
- " <tr>\n",
- " <th>1</th>\n",
- " <td>1</td>\n",
- " <td>1</td>\n",
- " <td>4nm010318.xlsx</td>\n",
- " <td>Р. Справочно1_Списание</td>\n",
- " <td>Форма № 4-НМ</td>\n",
- " <td>Справочно к Разделам I, II: 1_Списано зад...</td>\n",
- " <td>по состоянию на 01.03.2018 г.</td>\n",
- " <td>тыс. рублей</td>\n",
- " <td>Сумма списанной задолженности индивидуальных п...</td>\n",
- " <td>2405</td>\n",
- " <td>3901</td>\n",
- " <td>891751</td>\n",
- " <td>515082</td>\n",
- " <td>267015</td>\n",
- " <td>59948</td>\n",
- " <td>0</td>\n",
- " <td>18923</td>\n",
- " <td>30783</td>\n",
- " </tr>\n",
- " <tr>\n",
- " <th>2</th>\n",
- " <td>2</td>\n",
- " <td>2</td>\n",
- " <td>4nm010318.xlsx</td>\n",
- " <td>Р. Справочно1_Списание</td>\n",
- " <td>Форма № 4-НМ</td>\n",
- " <td>Справочно к Разделам I, II: 1_Списано зад...</td>\n",
- " <td>по состоянию на 01.03.2018 г.</td>\n",
- " <td>тыс. рублей</td>\n",
- " <td>Сумма списанной задолженности умерших или объя...</td>\n",
- " <td>2410</td>\n",
- " <td>12387</td>\n",
- " <td>285449</td>\n",
- " <td>45580</td>\n",
- " <td>23315</td>\n",
- " <td>9378</td>\n",
- " <td>0</td>\n",
- " <td>2264</td>\n",
- " <td>204912</td>\n",
- " </tr>\n",
- " <tr>\n",
- " <th>3</th>\n",
- " <td>3</td>\n",
- " <td>3</td>\n",
- " <td>4nm010318.xlsx</td>\n",
- " <td>Р. Справочно1_Списание</td>\n",
- " <td>Форма № 4-НМ</td>\n",
- " <td>Справочно к Разделам I, II: 1_Списано зад...</td>\n",
- " <td>по состоянию на 01.03.2018 г.</td>\n",
- " <td>тыс. рублей</td>\n",
- " <td>Сумма списанной задолженности в случаях принят...</td>\n",
- " <td>2415</td>\n",
- " <td>19761</td>\n",
- " <td>883355</td>\n",
- " <td>327372</td>\n",
- " <td>193665</td>\n",
- " <td>35799</td>\n",
- " <td>5646</td>\n",
- " <td>79245</td>\n",
- " <td>241628</td>\n",
- " </tr>\n",
- " <tr>\n",
- " <th>4</th>\n",
- " <td>4</td>\n",
- " <td>4</td>\n",
- " <td>4nm010318.xlsx</td>\n",
- " <td>Р. Справочно1_Списание</td>\n",
- " <td>Форма № 4-НМ</td>\n",
- " <td>Справочно к Разделам I, II: 1_Списано зад...</td>\n",
- " <td>по состоянию на 01.03.2018 г.</td>\n",
- " <td>тыс. рублей</td>\n",
- " <td>Сумма списанной задолженности по \"зависшим\" пл...</td>\n",
- " <td>2420</td>\n",
- " <td>46</td>\n",
- " <td>17476</td>\n",
- " <td>16940</td>\n",
- " <td>9</td>\n",
- " <td>0</td>\n",
- " <td>0</td>\n",
- " <td>527</td>\n",
- " <td>0</td>\n",
- " </tr>\n",
- " <tr>\n",
- " <th>5</th>\n",
- " <td>5</td>\n",
- " <td>5</td>\n",
- " <td>4nm010318.xlsx</td>\n",
- " <td>Р. Справочно1_Списание</td>\n",
- " <td>Форма № 4-НМ</td>\n",
- " <td>Справочно к Разделам I, II: 1_Списано зад...</td>\n",
- " <td>по состоянию на 01.03.2018 г.</td>\n",
- " <td>тыс. рублей</td>\n",
- " <td>Сумма списанной задолженности организаций, отв...</td>\n",
- " <td>2425</td>\n",
- " <td>11847</td>\n",
- " <td>1198159</td>\n",
- " <td>675557</td>\n",
- " <td>308155</td>\n",
- " <td>82420</td>\n",
- " <td>х</td>\n",
- " <td>14139</td>\n",
- " <td>117888</td>\n",
- " </tr>\n",
- " <tr>\n",
- " <th>6</th>\n",
- " <td>6</td>\n",
- " <td>6</td>\n",
- " <td>4nm010318.xlsx</td>\n",
- " <td>Р. Справочно1_Списание</td>\n",
- " <td>Форма № 4-НМ</td>\n",
- " <td>Справочно к Разделам I, II: 1_Списано зад...</td>\n",
- " <td>по состоянию на 01.03.2018 г.</td>\n",
- " <td>тыс. рублей</td>\n",
- " <td>Сумма списанной задолженности по решениям нало...</td>\n",
- " <td>2430</td>\n",
- " <td>61</td>\n",
- " <td>37</td>\n",
- " <td>1</td>\n",
- " <td>31</td>\n",
- " <td>5</td>\n",
- " <td>0</td>\n",
- " <td>0</td>\n",
- " <td>0</td>\n",
- " </tr>\n",
- " <tr>\n",
- " <th>7</th>\n",
- " <td>7</td>\n",
- " <td>7</td>\n",
- " <td>4nm010318.xlsx</td>\n",
- " <td>Р. Справочно1_Списание</td>\n",
- " <td>Форма № 4-НМ</td>\n",
- " <td>Справочно к Разделам I, II: 1_Списано зад...</td>\n",
- " <td>по состоянию на 01.03.2018 г.</td>\n",
- " <td>тыс. рублей</td>\n",
- " <td>Сумма задолженности, списанной на основании з...</td>\n",
- " <td>2435</td>\n",
- " <td>1148327</td>\n",
- " <td>40739221</td>\n",
- " <td>21970735</td>\n",
- " <td>12925353</td>\n",
- " <td>3832251</td>\n",
- " <td>4354</td>\n",
- " <td>107461</td>\n",
- " <td>1899067</td>\n",
- " </tr>\n",
- " <tr>\n",
- " <th>8</th>\n",
- " <td>8</td>\n",
- " <td>0</td>\n",
- " <td>4nm010218.xlsx</td>\n",
- " <td>Р. Справочно1_Списание</td>\n",
- " <td>Форма № 4-НМ</td>\n",
- " <td>Справочно к Разделам I, II: 1_Списано зад...</td>\n",
- " <td>по состоянию на 01.02.2018 г.</td>\n",
- " <td>тыс. рублей</td>\n",
- " <td>Сумма списанной задолженности организаций, лик...</td>\n",
- " <td>2400</td>\n",
- " <td>2768</td>\n",
- " <td>4066983</td>\n",
- " <td>2314354</td>\n",
- " <td>735408</td>\n",
- " <td>187148</td>\n",
- " <td>39881</td>\n",
- " <td>86601</td>\n",
- " <td>703591</td>\n",
- " </tr>\n",
- " <tr>\n",
- " <th>9</th>\n",
- " <td>9</td>\n",
- " <td>1</td>\n",
- " <td>4nm010218.xlsx</td>\n",
- " <td>Р. Справочно1_Списание</td>\n",
- " <td>Форма № 4-НМ</td>\n",
- " <td>Справочно к Разделам I, II: 1_Списано зад...</td>\n",
- " <td>по состоянию на 01.02.2018 г.</td>\n",
- " <td>тыс. рублей</td>\n",
- " <td>Сумма списанной задолженности индивидуальных п...</td>\n",
- " <td>2405</td>\n",
- " <td>3067</td>\n",
- " <td>39999</td>\n",
- " <td>21675</td>\n",
- " <td>12298</td>\n",
- " <td>3944</td>\n",
- " <td>0</td>\n",
- " <td>681</td>\n",
- " <td>1401</td>\n",
- " </tr>\n",
" <tr>\n",
" <th>10</th>\n",
" <td>10</td>\n",
" <td>2</td>\n",
- " <td>4nm010218.xlsx</td>\n",
+ " <td>2008</td>\n",
+ " <td>4nm011118</td>\n",
+ " <td>xlsx</td>\n",
" <td>Р. Справочно1_Списание</td>\n",
" <td>Форма № 4-НМ</td>\n",
" <td>Справочно к Разделам I, II: 1_Списано зад...</td>\n",
- " <td>по состоянию на 01.02.2018 г.</td>\n",
+ " <td>по состоянию на 01.11.2018 г.</td>\n",
" <td>тыс. рублей</td>\n",
" <td>Сумма списанной задолженности умерших или объя...</td>\n",
" <td>2410</td>\n",
- " <td>5411</td>\n",
- " <td>145804</td>\n",
- " <td>25389</td>\n",
- " <td>15249</td>\n",
- " <td>6433</td>\n",
+ " <td>107516</td>\n",
+ " <td>1397855</td>\n",
+ " <td>318751</td>\n",
+ " <td>93790</td>\n",
+ " <td>17866</td>\n",
" <td>0</td>\n",
- " <td>1198</td>\n",
- " <td>97535</td>\n",
+ " <td>8821</td>\n",
+ " <td>958627</td>\n",
" </tr>\n",
" <tr>\n",
" <th>11</th>\n",
" <td>11</td>\n",
" <td>3</td>\n",
- " <td>4nm010218.xlsx</td>\n",
+ " <td>2008</td>\n",
+ " <td>4nm011118</td>\n",
+ " <td>xlsx</td>\n",
" <td>Р. Справочно1_Списание</td>\n",
" <td>Форма № 4-НМ</td>\n",
" <td>Справочно к Разделам I, II: 1_Списано зад...</td>\n",
- " <td>по состоянию на 01.02.2018 г.</td>\n",
+ " <td>по состоянию на 01.11.2018 г.</td>\n",
" <td>тыс. рублей</td>\n",
" <td>Сумма списанной задолженности в случаях принят...</td>\n",
" <td>2415</td>\n",
- " <td>14035</td>\n",
- " <td>330592</td>\n",
- " <td>101728</td>\n",
- " <td>66280</td>\n",
- " <td>8424</td>\n",
- " <td>8</td>\n",
- " <td>13190</td>\n",
- " <td>140962</td>\n",
+ " <td>152898</td>\n",
+ " <td>5175662</td>\n",
+ " <td>1879757</td>\n",
+ " <td>1448942</td>\n",
+ " <td>185201</td>\n",
+ " <td>6911</td>\n",
+ " <td>255959</td>\n",
+ " <td>1398892</td>\n",
" </tr>\n",
" <tr>\n",
" <th>12</th>\n",
" <td>12</td>\n",
" <td>4</td>\n",
- " <td>4nm010218.xlsx</td>\n",
+ " <td>2008</td>\n",
+ " <td>4nm011118</td>\n",
+ " <td>xlsx</td>\n",
" <td>Р. Справочно1_Списание</td>\n",
" <td>Форма № 4-НМ</td>\n",
" <td>Справочно к Разделам I, II: 1_Списано зад...</td>\n",
- " <td>по состоянию на 01.02.2018 г.</td>\n",
+ " <td>по состоянию на 01.11.2018 г.</td>\n",
" <td>тыс. рублей</td>\n",
" <td>Сумма списанной задолженности по \"зависшим\" пл...</td>\n",
" <td>2420</td>\n",
- " <td>27</td>\n",
- " <td>7852</td>\n",
- " <td>7744</td>\n",
- " <td>0</td>\n",
- " <td>0</td>\n",
- " <td>0</td>\n",
- " <td>108</td>\n",
+ " <td>165</td>\n",
+ " <td>79701</td>\n",
+ " <td>64933</td>\n",
+ " <td>1515</td>\n",
+ " <td>70</td>\n",
" <td>0</td>\n",
+ " <td>5565</td>\n",
+ " <td>7618</td>\n",
" </tr>\n",
" <tr>\n",
" <th>13</th>\n",
" <td>13</td>\n",
" <td>5</td>\n",
- " <td>4nm010218.xlsx</td>\n",
+ " <td>2008</td>\n",
+ " <td>4nm011118</td>\n",
+ " <td>xlsx</td>\n",
" <td>Р. Справочно1_Списание</td>\n",
" <td>Форма № 4-НМ</td>\n",
" <td>Справочно к Разделам I, II: 1_Списано зад...</td>\n",
- " <td>по состоянию на 01.02.2018 г.</td>\n",
+ " <td>по состоянию на 01.11.2018 г.</td>\n",
" <td>тыс. рублей</td>\n",
" <td>Сумма списанной задолженности организаций, отв...</td>\n",
" <td>2425</td>\n",
- " <td>4917</td>\n",
- " <td>714015</td>\n",
- " <td>394956</td>\n",
- " <td>184775</td>\n",
- " <td>43302</td>\n",
+ " <td>40759</td>\n",
+ " <td>7379705</td>\n",
+ " <td>4476555</td>\n",
+ " <td>1843784</td>\n",
+ " <td>437216</td>\n",
" <td>х</td>\n",
- " <td>7748</td>\n",
- " <td>83234</td>\n",
+ " <td>73047</td>\n",
+ " <td>549103</td>\n",
" </tr>\n",
" <tr>\n",
" <th>14</th>\n",
" <td>14</td>\n",
" <td>6</td>\n",
- " <td>4nm010218.xlsx</td>\n",
+ " <td>2008</td>\n",
+ " <td>4nm011118</td>\n",
+ " <td>xlsx</td>\n",
" <td>Р. Справочно1_Списание</td>\n",
" <td>Форма № 4-НМ</td>\n",
" <td>Справочно к Разделам I, II: 1_Списано зад...</td>\n",
- " <td>по состоянию на 01.02.2018 г.</td>\n",
+ " <td>по состоянию на 01.11.2018 г.</td>\n",
" <td>тыс. рублей</td>\n",
" <td>Сумма списанной задолженности по решениям нало...</td>\n",
" <td>2430</td>\n",
- " <td>14</td>\n",
- " <td>2</td>\n",
+ " <td>16980357</td>\n",
+ " <td>61711637</td>\n",
+ " <td>42232603</td>\n",
+ " <td>19477495</td>\n",
+ " <td>676</td>\n",
+ " <td>725</td>\n",
" <td>0</td>\n",
- " <td>2</td>\n",
- " <td>0</td>\n",
- " <td>0</td>\n",
- " <td>0</td>\n",
- " <td>0</td>\n",
+ " <td>138</td>\n",
" </tr>\n",
" <tr>\n",
" <th>15</th>\n",
" <td>15</td>\n",
" <td>7</td>\n",
- " <td>4nm010218.xlsx</td>\n",
+ " <td>2008</td>\n",
+ " <td>4nm011118</td>\n",
+ " <td>xlsx</td>\n",
" <td>Р. Справочно1_Списание</td>\n",
" <td>Форма № 4-НМ</td>\n",
" <td>Справочно к Разделам I, II: 1_Списано зад...</td>\n",
- " <td>по состоянию на 01.02.2018 г.</td>\n",
+ " <td>по состоянию на 01.11.2018 г.</td>\n",
" <td>тыс. рублей</td>\n",
" <td>Сумма задолженности, списанной на основании з...</td>\n",
" <td>2435</td>\n",
- " <td>41695</td>\n",
- " <td>5152573</td>\n",
- " <td>2928511</td>\n",
- " <td>1090182</td>\n",
- " <td>258133</td>\n",
- " <td>3456</td>\n",
- " <td>36947</td>\n",
- " <td>835344</td>\n",
+ " <td>3737334</td>\n",
+ " <td>340440384</td>\n",
+ " <td>62488024</td>\n",
+ " <td>31036806</td>\n",
+ " <td>7336091</td>\n",
+ " <td>34915</td>\n",
+ " <td>2494914</td>\n",
+ " <td>237049634</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"</div>"
],
"text/plain": [
- " global_index ws_index filename ws_title \\\n",
- "0 0 0 4nm010318.xlsx Р. Справочно1_Списание \n",
- "1 1 1 4nm010318.xlsx Р. Справочно1_Списание \n",
- "2 2 2 4nm010318.xlsx Р. Справочно1_Списание \n",
- "3 3 3 4nm010318.xlsx Р. Справочно1_Списание \n",
- "4 4 4 4nm010318.xlsx Р. Справочно1_Списание \n",
- "5 5 5 4nm010318.xlsx Р. Справочно1_Списание \n",
- "6 6 6 4nm010318.xlsx Р. Справочно1_Списание \n",
- "7 7 7 4nm010318.xlsx Р. Справочно1_Списание \n",
- "8 8 0 4nm010218.xlsx Р. Справочно1_Списание \n",
- "9 9 1 4nm010218.xlsx Р. Справочно1_Списание \n",
- "10 10 2 4nm010218.xlsx Р. Справочно1_Списание \n",
- "11 11 3 4nm010218.xlsx Р. Справочно1_Списание \n",
- "12 12 4 4nm010218.xlsx Р. Справочно1_Списание \n",
- "13 13 5 4nm010218.xlsx Р. Справочно1_Списание \n",
- "14 14 6 4nm010218.xlsx Р. Справочно1_Списание \n",
- "15 15 7 4nm010218.xlsx Р. Справочно1_Списание \n",
+ " global_index ws_index year filename extension ws_title \\\n",
+ "0 0 0 2009 4nm010618 xlsx Р. Справочно1_Списание \n",
+ "1 1 1 2009 4nm010618 xlsx Р. Справочно1_Списание \n",
+ "2 2 2 2009 4nm010618 xlsx Р. Справочно1_Списание \n",
+ "3 3 3 2009 4nm010618 xlsx Р. Справочно1_Списание \n",
+ "4 4 4 2009 4nm010618 xlsx Р. Справочно1_Списание \n",
+ "5 5 5 2009 4nm010618 xlsx Р. Справочно1_Списание \n",
+ "6 6 6 2009 4nm010618 xlsx Р. Справочно1_Списание \n",
+ "7 7 7 2009 4nm010618 xlsx Р. Справочно1_Списание \n",
+ "8 8 0 2008 4nm011118 xlsx Р. Справочно1_Списание \n",
+ "9 9 1 2008 4nm011118 xlsx Р. Справочно1_Списание \n",
+ "10 10 2 2008 4nm011118 xlsx Р. Справочно1_Списание \n",
+ "11 11 3 2008 4nm011118 xlsx Р. Справочно1_Списание \n",
+ "12 12 4 2008 4nm011118 xlsx Р. Справочно1_Списание \n",
+ "13 13 5 2008 4nm011118 xlsx Р. Справочно1_Списание \n",
+ "14 14 6 2008 4nm011118 xlsx Р. Справочно1_Списание \n",
+ "15 15 7 2008 4nm011118 xlsx Р. Справочно1_Списание \n",
"\n",
" form_name description \\\n",
"0 Форма № 4-НМ Справочно к Разделам I, II: 1_Списано зад... \n",
@@ -1457,22 +1125,22 @@ "14 Форма № 4-НМ Справочно к Разделам I, II: 1_Списано зад... \n",
"15 Форма № 4-НМ Справочно к Разделам I, II: 1_Списано зад... \n",
"\n",
" form_dt unit_name \\\n",
- "0 по состоянию на 01.03.2018 г. тыс. рублей \n",
- "1 по состоянию на 01.03.2018 г. тыс. рублей \n",
- "2 по состоянию на 01.03.2018 г. тыс. рублей \n",
- "3 по состоянию на 01.03.2018 г. тыс. рублей \n",
- "4 по состоянию на 01.03.2018 г. тыс. рублей \n",
- "5 по состоянию на 01.03.2018 г. тыс. рублей \n",
- "6 по состоянию на 01.03.2018 г. тыс. рублей \n",
- "7 по состоянию на 01.03.2018 г. тыс. рублей \n",
- "8 по состоянию на 01.02.2018 г. тыс. рублей \n",
- "9 по состоянию на 01.02.2018 г. тыс. рублей \n",
- "10 по состоянию на 01.02.2018 г. тыс. рублей \n",
- "11 по состоянию на 01.02.2018 г. тыс. рублей \n",
- "12 по состоянию на 01.02.2018 г. тыс. рублей \n",
- "13 по состоянию на 01.02.2018 г. тыс. рублей \n",
- "14 по состоянию на 01.02.2018 г. тыс. рублей \n",
- "15 по состоянию на 01.02.2018 г. тыс. рублей \n",
+ "0 по состоянию на 01.06.2018 г. тыс. рублей \n",
+ "1 по состоянию на 01.06.2018 г. тыс. рублей \n",
+ "2 по состоянию на 01.06.2018 г. тыс. рублей \n",
+ "3 по состоянию на 01.06.2018 г. тыс. рублей \n",
+ "4 по состоянию на 01.06.2018 г. тыс. рублей \n",
+ "5 по состоянию на 01.06.2018 г. тыс. рублей \n",
+ "6 по состоянию на 01.06.2018 г. тыс. рублей \n",
+ "7 по состоянию на 01.06.2018 г. тыс. рублей \n",
+ "8 по состоянию на 01.11.2018 г. тыс. рублей \n",
+ "9 по состоянию на 01.11.2018 г. тыс. рублей \n",
+ "10 по состоянию на 01.11.2018 г. тыс. рублей \n",
+ "11 по состоянию на 01.11.2018 г. тыс. рублей \n",
+ "12 по состоянию на 01.11.2018 г. тыс. рублей \n",
+ "13 по состоянию на 01.11.2018 г. тыс. рублей \n",
+ "14 по состоянию на 01.11.2018 г. тыс. рублей \n",
+ "15 по состоянию на 01.11.2018 г. тыс. рублей \n",
"\n",
" поле код строки \\\n",
"0 Сумма списанной задолженности организаций, лик... 2400 \n",
@@ -1492,60 +1160,58 @@ "13 Сумма списанной задолженности организаций, отв... 2425 \n",
"14 Сумма списанной задолженности по решениям нало... 2430 \n",
"15 Сумма задолженности, списанной на основании з... 2435 \n",
"\n",
- " кол. налогоплательщиков всего по налогу (сбору) по пени \\\n",
- "0 6302 8850836 4813849 1428282 \n",
- "1 3901 891751 515082 267015 \n",
- "2 12387 285449 45580 23315 \n",
- "3 19761 883355 327372 193665 \n",
- "4 46 17476 16940 9 \n",
- "5 11847 1198159 675557 308155 \n",
- "6 61 37 1 31 \n",
- "7 1148327 40739221 21970735 12925353 \n",
- "8 2768 4066983 2314354 735408 \n",
- "9 3067 39999 21675 12298 \n",
- "10 5411 145804 25389 15249 \n",
- "11 14035 330592 101728 66280 \n",
- "12 27 7852 7744 0 \n",
- "13 4917 714015 394956 184775 \n",
- "14 14 2 0 2 \n",
- "15 41695 5152573 2928511 1090182 \n",
+ " кол. налогоплательщиков всего по налогу (сбору) по пени \\\n",
+ "0 23632 30705385 18388429 4699527 \n",
+ "1 9109 3013574 1661920 881213 \n",
+ "2 39920 677495 115346 44047 \n",
+ "3 58635 2161183 773472 556271 \n",
+ "4 93 43115 31946 752 \n",
+ "5 25104 4038755 2487632 1003525 \n",
+ "6 16841363 60557919 41458668 19050086 \n",
+ "7 1799585 133435115 36498879 19197715 \n",
+ "8 40157 71402906 40477282 12510111 \n",
+ "9 19496 4481612 2347431 1261980 \n",
+ "10 107516 1397855 318751 93790 \n",
+ "11 152898 5175662 1879757 1448942 \n",
+ "12 165 79701 64933 1515 \n",
+ "13 40759 7379705 4476555 1843784 \n",
+ "14 16980357 61711637 42232603 19477495 \n",
+ "15 3737334 340440384 62488024 31036806 \n",
"\n",
- " по штрафам проценты по ЕСН по страховым взносам \n",
- "0 385722 122790 249262 1850931 \n",
- "1 59948 0 18923 30783 \n",
- "2 9378 0 2264 204912 \n",
- "3 35799 5646 79245 241628 \n",
- "4 0 0 527 0 \n",
- "5 82420 х 14139 117888 \n",
- "6 5 0 0 0 \n",
- "7 3832251 4354 107461 1899067 \n",
- "8 187148 39881 86601 703591 \n",
- "9 3944 0 681 1401 \n",
- "10 6433 0 1198 97535 \n",
- "11 8424 8 13190 140962 \n",
- "12 0 0 108 0 \n",
- "13 43302 х 7748 83234 \n",
- "14 0 0 0 0 \n",
- "15 258133 3456 36947 835344 "
+ " по штрафам проценты по ЕСН по страховым взносам \n",
+ "0 1439452 184237 596724 5397016 \n",
+ "1 242978 628 51928 174907 \n",
+ "2 11984 0 5203 500915 \n",
+ "3 70216 5769 154600 600855 \n",
+ "4 76 0 5527 4814 \n",
+ "5 215253 х 29516 302829 \n",
+ "6 325 1 0 48839 \n",
+ "7 5102099 12731 2055653 70568038 \n",
+ "8 3381043 838205 1228143 12968122 \n",
+ "9 345253 628 72728 453592 \n",
+ "10 17866 0 8821 958627 \n",
+ "11 185201 6911 255959 1398892 \n",
+ "12 70 0 5565 7618 \n",
+ "13 437216 х 73047 549103 \n",
+ "14 676 725 0 138 \n",
+ "15 7336091 34915 2494914 237049634 "
]
},
- "execution_count": 16,
+ "execution_count": 14,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"# пример как полностью настроить класс сразу при создании\n",
- "proc = ExcelPreprocessor(\n",
- " 'https://www.nalog.ru/html/sites/www.new.nalog.ru/docs/otchet/4nm010318.xlsx',\n",
- " 'https://www.nalog.ru/html/sites/www.new.nalog.ru/docs/otchet/4NM/4nm010218.xlsx',\n",
- " filename_parser=lambda filename: {'filename': filename.split('/')[-1]},\n",
+ "proc = ExcelPreprocessor('data\\\\2009\\\\4nm010618.xlsx', 'data\\\\2008\\\\4nm011118.xlsx',\n",
+ " filename_parser=lambda filename: re.match(r'data\\\\(?P<year>\\w+)\\\\(?P<filename>\\w+)\\.(?P<extension>\\w+)', filename).groupdict(),\n",
" append_global_index=True, append_wb_index=True,\n",
" cells = {'form_name': 'J1', 'description': 'A2', 'form_dt': 'A3', 'unit_name': 'J4'},\n",
" headers = ['поле', 'код строки', 'кол. налогоплательщиков', 'всего', 'по налогу (сбору)', 'по пени', 'по штрафам', 'проценты', 'по ЕСН', 'по страховым взносам'],\n",
" first_row_number=7, append_ws_title_column=True, iterate_over_worksheet=2\n",
")\n",
- "pd.DataFrame(proc.get_iter_dict())"
+ "proc.get_dataframe()"
]
}
],