Untitled
unknown
plain_text
a year ago
9.3 kB
4
Indexable
from datetime import datetime import pandas as pd import pathlib pd.set_option('display.max_rows', 500) pd.set_option('display.max_columns', 500) pd.set_option('display.width', 1000) cur_path = pathlib.Path().resolve() # текущий путь до папки files_path = f'{cur_path}/info-stat-11-2023/01 промышленность' files_path '/home/jovyan/titorenko.aa/jupyter/converting/info-stat-11-2023/01 промышленность' import glob data_files = sorted(glob.glob(f'{files_path}/01*.xls')) data_files ['/home/jovyan/titorenko.aa/jupyter/converting/info-stat-11-2023/01 промышленность/01-01 индекс промышленного производства.xls', '/home/jovyan/titorenko.aa/jupyter/converting/info-stat-11-2023/01 промышленность/01-02 добыча полезных ископаемых.xls', '/home/jovyan/titorenko.aa/jupyter/converting/info-stat-11-2023/01 промышленность/01-03 обрабатывающие производства.xls', '/home/jovyan/titorenko.aa/jupyter/converting/info-stat-11-2023/01 промышленность/01-04 обеспечение электр.энергией, газом и паром кондиционирование воздуха.xls', '/home/jovyan/titorenko.aa/jupyter/converting/info-stat-11-2023/01 промышленность/01-05 водоснабжение водоотведение организация сбора и утилизация отходов.xls', '/home/jovyan/titorenko.aa/jupyter/converting/info-stat-11-2023/01 промышленность/01-06 отгрузка товаров.xls', '/home/jovyan/titorenko.aa/jupyter/converting/info-stat-11-2023/01 промышленность/01-07 отгрузка-Рыболовство, рыбоводство.xls', '/home/jovyan/titorenko.aa/jupyter/converting/info-stat-11-2023/01 промышленность/01-08 рыба морская живая.xls', '/home/jovyan/titorenko.aa/jupyter/converting/info-stat-11-2023/01 промышленность/01-09 рыба морская свежая или охлажденная.xls', '/home/jovyan/titorenko.aa/jupyter/converting/info-stat-11-2023/01 промышленность/01-10 рыба переработанная и консервированная.xls', '/home/jovyan/titorenko.aa/jupyter/converting/info-stat-11-2023/01 промышленность/01-11 производство электроэнергии.xls'] # Словарь для преобразования названия месяца в номер месяца month_dict = { 'январь': '01', 'февраль': '02', 'март': '03', 'апрель': '04', 'май': '05', 'июнь': '06', 'июль': '07', 'август': '08', 'сентябрь': '09', 'октябрь': '10', 'ноябрь': '11', 'декабрь': '12' } # Функция для преобразования названия месяца и года в формат даты def month_to_date(month_name, year): # Преобразование названия месяца в номер месяца и создание строки даты month_num = month_dict.get(month_name.lower(), '01') # Значение по умолчанию - январь return f'01.{month_num}.{year}' def process_file(file_path): data = pd.read_excel(file_path, header=3, engine='xlrd') # Создаем новые заголовки столбцов на основе названий месяцев и года new_headers = [] current_year = 2016 # Начальный год for col in data.columns: # Убираем числовой суффикс из названия месяца (если есть), чтобы применить словарь месяцев month_name = ''.join(filter(str.isalpha, col)) if month_name.lower() in month_dict: # Преобразуем месяц и год в формат даты new_headers.append(month_to_date(month_name, str(current_year))) # Увеличиваем год, если месяц - декабрь if month_name.lower() == 'декабрь': current_year += 1 else: # Для несоответствующих столбцов оставляем как есть new_headers.append(col) # Обновляем заголовки в DataFrame data.columns = new_headers # Устанавливаем первый столбец в качестве индекса и меняем название data.set_index(data.columns[0], inplace=True) data.index.names = ['Регион'] # Сбросим индекс и добавим столбец "Регион" на первое место data.reset_index(inplace=True) # Перемещаем столбец "Регион" на первое место data = data.set_index(['Регион']).reset_index() # Убираем возможные дубликаты в названиях столбцов, которые могли появиться из-за суффиксов типа "2" data = data.loc[:,~data.columns.duplicated()] data = pd.melt(data, id_vars=['Регион'], var_name='Дата', value_name='Значение') # заменим пропуски значением 0, чтобы можно было загрузить в sql data = data.fillna(0) output_file_path = file_path.replace('.xls','.csv') data.to_csv(output_file_path, index=False) for file in data_files: process_file(file) data_files_csv = sorted(glob.glob(f'{files_path}/01*.csv')) data_files_csv ['/home/jovyan/titorenko.aa/jupyter/converting/info-stat-11-2023/01 промышленность/01-01 индекс промышленного производства.csv', '/home/jovyan/titorenko.aa/jupyter/converting/info-stat-11-2023/01 промышленность/01-02 добыча полезных ископаемых.csv', '/home/jovyan/titorenko.aa/jupyter/converting/info-stat-11-2023/01 промышленность/01-03 обрабатывающие производства.csv', '/home/jovyan/titorenko.aa/jupyter/converting/info-stat-11-2023/01 промышленность/01-04 обеспечение электр.энергией, газом и паром кондиционирование воздуха.csv', '/home/jovyan/titorenko.aa/jupyter/converting/info-stat-11-2023/01 промышленность/01-05 водоснабжение водоотведение организация сбора и утилизация отходов.csv', '/home/jovyan/titorenko.aa/jupyter/converting/info-stat-11-2023/01 промышленность/01-06 отгрузка товаров.csv', '/home/jovyan/titorenko.aa/jupyter/converting/info-stat-11-2023/01 промышленность/01-07 отгрузка-Рыболовство, рыбоводство.csv', '/home/jovyan/titorenko.aa/jupyter/converting/info-stat-11-2023/01 промышленность/01-08 рыба морская живая.csv', '/home/jovyan/titorenko.aa/jupyter/converting/info-stat-11-2023/01 промышленность/01-09 рыба морская свежая или охлажденная.csv', '/home/jovyan/titorenko.aa/jupyter/converting/info-stat-11-2023/01 промышленность/01-10 рыба переработанная и консервированная.csv', '/home/jovyan/titorenko.aa/jupyter/converting/info-stat-11-2023/01 промышленность/01-11 производство электроэнергии.csv'] data = pd.read_csv('/home/jovyan/titorenko.aa/jupyter/converting/info-stat-11-2023/01 промышленность/01-01 индекс промышленного производства.csv') data Регион Дата Значение 0 Российская Федерация 01.01.2016 99.1 1 Центральный федеральный округ 01.01.2016 94.1 2 Белгородская область 01.01.2016 99.4 3 Брянская область 01.01.2016 108.8 4 Владимирская область 01.01.2016 96.0 ... ... ... ... 9305 Сахалинская область 01.11.2023 104.5 9306 Еврейская автономная область 01.11.2023 103.3 9307 Чукотский автономный округ 01.11.2023 138.7 9308 1 Агрегированный индекс производства по видам ... 01.11.2023 0.0 9309 2 Информация по Республике Бурятия и Забайкаль... 01.11.2023 0.0 9310 rows × 3 columns Регион,Дата,ЗначениеРоссийская Федерация1,01.01.2016,105202.576Центральный федеральный округ,01.01.2016,21184.466Белгородская область,01.01.2016,85.506Брянская область2,01.01.2016,…Владимирская область,01.01.2016,354.893Воронежская область2,01.01.2016,…Ивановская область2,01.01.2016,…
Editor is loading...
Leave a Comment