Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import pandas as pd
- import calendar
- from datetime import datetime
- path_to_file = input('Укажите путь к файлу без кавычек (перетащите его в терминал): ')
- df = pd.read_excel(path_to_file, encoding='utf-8')
- df1 = df.groupby(by=['№ Скважины', 'Год', 'Месяц', 'Горизонт'], as_index=False)['Добыча воды, м3', 'время эксплуатации', 'Добыча нефти, тонн'].sum()
- def result_c_col(row):
- n_col = row['Добыча нефти, тонн']
- m_col = row['время эксплуатации']
- q_col = m_col/24
- oil_density = value_oil_density
- try:
- c_col = n_col / q_col / oil_density
- return round(c_col, 2)
- except ZeroDivisionError:
- return 0
- def result_d_col(row):
- m_col = row['время эксплуатации']
- q_col = m_col/24
- o_col = row['Добыча воды, м3']
- try:
- d_col = o_col / q_col
- return round(d_col, 2)
- except ZeroDivisionError:
- return 0
- def result_e_col(row):
- m_col = row['время эксплуатации']
- q_col = m_col/24
- y = row['Год']
- m = row['Месяц']
- try:
- e_col = q_col / calendar.monthrange(int(y), int(m))[1]
- return round(e_col, 2)
- except ZeroDivisionError:
- return 0
- def result_b_col(row):
- if row['Месяц'] < 10:
- row['дата'] = f"01.0{row['Месяц']}.{row['Год']}"
- elif row['Месяц'] >= 10:
- row['дата'] = f"01.{row['Месяц']}.{row['Год']}"
- return row['дата']
- date_question = input('Укажите дату: 01.мм.гггг/гггг (Нажмите ENTER, чтобы выбрать диапазон): ')
- end_date = input('По какую дату: 01.мм.гггг/гггг (Нажмите ENTER, чтобы пропустить): ')
- horizon = input('Введите горизонт: (Нажмите ENTER, чтобы пропустить)')
- horizon_suffix = input('Окончание горизонта: ')
- value_oil_density = float(input('Введите плотность нефти в формате 0.895: '))
- save = input('Куда сохранить \hist.csv: ')
- #df['дата'] = df['дата'].dt.strftime('%d.%m.%Y')
- df1['дата'] = df1.apply(result_b_col, axis = 1)
- df1['дата'] = pd.to_datetime(df1['дата'], format='%d.%m.%Y')
- df1['дебит нефти, м3/сут'] = df1.apply(result_c_col, axis = 1)
- df1['дебит воды, м3/сут'] = df1.apply(result_d_col, axis = 1)
- df1['коэффициент эксплуатации'] = df1.apply(result_e_col, axis = 1)
- df1['дата'] = df1['дата'].dt.strftime('%d.%m.%Y')
- mask = (df1['дата'] >= date_question) & (df1['дата'] <= end_date)
- if (horizon != '') & (date_question == '') & (end_date == ''):
- filter_ = df1[(df1['Горизонт'] == int(horizon))].sort_values(by=['№ Скважины', 'дата'])
- #filter_['дата'] = df['дата'].dt.strftime('%d.%m.%Y')
- filter_['№ Скважины'] = filter_['№ Скважины'].astype(str) + "{}".format(horizon_suffix)
- filter_.to_csv(save, columns = ['№ Скважины', 'дата', 'дебит нефти, м3/сут', 'дебит воды, м3/сут', 'коэффициент эксплуатации'], index=False, sep='\t')
- elif (date_question != '') & (end_date != '') & (horizon == ''):
- filter_ = df1.loc[mask].sort_values(by=['№ Скважины', 'дата']).sort_values(by=['№ Скважины', 'дата'])
- filter_['дата'] = df1['дата'].dt.strftime('%d.%m.%Y')
- filter_.to_csv(save, columns = ['№ Скважины', 'дата', 'дебит нефти, м3/сут', 'дебит воды, м3/сут', 'коэффициент эксплуатации'], index=False, sep='\t')
- elif (date_question != '') & (end_date == '') & (horizon != ''):
- filter_ = df1[(df1['Горизонт'] == int(horizon)) & (df['дата'] == date_question)].sort_values(by=['№ Скважины', 'дата']).sort_values(by=['№ Скважины', 'дата'])
- filter_['дата'] = df1['дата'].dt.strftime('%d.%m.%Y')
- filter_['№ Скважины'] = filter_['№ Скважины'].astype(str) + "{}".format(horizon_suffix)
- filter_.to_csv(save, columns = ['№ Скважины', 'дата', 'дебит нефти, м3/сут', 'дебит воды, м3/сут', 'коэффициент эксплуатации'], index=False, sep='\t')
- elif (date_question != '') & (end_date != '') & (horizon != ''):
- filter_ = df1.loc[mask & (df['Горизонт'] == int(horizon))].sort_values(by=['№ Скважины', 'дата'])#.to_csv(save, columns = ['№ Скважины', 'дата', 'дебит нефти, м3/сут', 'дебит воды, м3/сут', 'коэффициент эксплуатации'], index=False, sep='\t')
- #filter_['дата'] = df['дата'].dt.strftime('%d.%m.%Y')
- filter_['№ Скважины'] = filter_['№ Скважины'].astype(str) + "{}".format(horizon_suffix)
- filter_.to_csv(save, columns = ['№ Скважины', 'дата', 'дебит нефти, м3/сут', 'дебит воды, м3/сут', 'коэффициент эксплуатации'], index=False, sep='\t')
- elif (date_question == '') & (horizon == ''):
- a = df1.sort_values(by=['№ Скважины', 'дата'])
- a['дата'] = df1['дата'].dt.strftime('%d.%m.%Y')
- a.to_csv(save, columns = ['№ Скважины', 'дата', 'дебит нефти, м3/сут', 'дебит воды, м3/сут', 'коэффициент эксплуатации'], index=False, sep='\t')
- else:
- print("Неверно введен ответ")
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement