Advertisement
Guest User

Untitled

a guest
Dec 16th, 2020
15
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 5.70 KB | None | 0 0
  1. import pandas as pd
  2. import calendar
  3. from datetime import datetime
  4. path_to_file = input('Укажите путь к файлу без кавычек (перетащите его в терминал): ')
  5. df = pd.read_excel(path_to_file, encoding='utf-8')
  6. df1 = df.groupby(by=['№ Скважины', 'Год', 'Месяц', 'Горизонт'], as_index=False)['Добыча воды, м3', 'время эксплуатации', 'Добыча нефти, тонн'].sum()
  7. def result_c_col(row):
  8. n_col = row['Добыча нефти, тонн']
  9. m_col = row['время эксплуатации']
  10. q_col = m_col/24
  11. oil_density = value_oil_density
  12.  
  13. try:
  14. c_col = n_col / q_col / oil_density
  15. return round(c_col, 2)
  16.  
  17. except ZeroDivisionError:
  18. return 0
  19.  
  20. def result_d_col(row):
  21. m_col = row['время эксплуатации']
  22. q_col = m_col/24
  23. o_col = row['Добыча воды, м3']
  24. try:
  25. d_col = o_col / q_col
  26. return round(d_col, 2)
  27. except ZeroDivisionError:
  28. return 0
  29.  
  30. def result_e_col(row):
  31. m_col = row['время эксплуатации']
  32. q_col = m_col/24
  33. y = row['Год']
  34. m = row['Месяц']
  35. try:
  36. e_col = q_col / calendar.monthrange(int(y), int(m))[1]
  37. return round(e_col, 2)
  38. except ZeroDivisionError:
  39. return 0
  40.  
  41. def result_b_col(row):
  42. if row['Месяц'] < 10:
  43. row['дата'] = f"01.0{row['Месяц']}.{row['Год']}"
  44. elif row['Месяц'] >= 10:
  45. row['дата'] = f"01.{row['Месяц']}.{row['Год']}"
  46. return row['дата']
  47. date_question = input('Укажите дату: 01.мм.гггг/гггг (Нажмите ENTER, чтобы выбрать диапазон): ')
  48. end_date = input('По какую дату: 01.мм.гггг/гггг (Нажмите ENTER, чтобы пропустить): ')
  49. horizon = input('Введите горизонт: (Нажмите ENTER, чтобы пропустить)')
  50. horizon_suffix = input('Окончание горизонта: ')
  51. value_oil_density = float(input('Введите плотность нефти в формате 0.895: '))
  52. save = input('Куда сохранить \hist.csv: ')
  53.  
  54. #df['дата'] = df['дата'].dt.strftime('%d.%m.%Y')
  55.  
  56. df1['дата'] = df1.apply(result_b_col, axis = 1)
  57. df1['дата'] = pd.to_datetime(df1['дата'], format='%d.%m.%Y')
  58. df1['дебит нефти, м3/сут'] = df1.apply(result_c_col, axis = 1)
  59. df1['дебит воды, м3/сут'] = df1.apply(result_d_col, axis = 1)
  60. df1['коэффициент эксплуатации'] = df1.apply(result_e_col, axis = 1)
  61. df1['дата'] = df1['дата'].dt.strftime('%d.%m.%Y')
  62. mask = (df1['дата'] >= date_question) & (df1['дата'] <= end_date)
  63. if (horizon != '') & (date_question == '') & (end_date == ''):
  64. filter_ = df1[(df1['Горизонт'] == int(horizon))].sort_values(by=['№ Скважины', 'дата'])
  65. #filter_['дата'] = df['дата'].dt.strftime('%d.%m.%Y')
  66. filter_['№ Скважины'] = filter_['№ Скважины'].astype(str) + "{}".format(horizon_suffix)
  67. filter_.to_csv(save, columns = ['№ Скважины', 'дата', 'дебит нефти, м3/сут', 'дебит воды, м3/сут', 'коэффициент эксплуатации'], index=False, sep='\t')
  68. elif (date_question != '') & (end_date != '') & (horizon == ''):
  69. filter_ = df1.loc[mask].sort_values(by=['№ Скважины', 'дата']).sort_values(by=['№ Скважины', 'дата'])
  70. filter_['дата'] = df1['дата'].dt.strftime('%d.%m.%Y')
  71. filter_.to_csv(save, columns = ['№ Скважины', 'дата', 'дебит нефти, м3/сут', 'дебит воды, м3/сут', 'коэффициент эксплуатации'], index=False, sep='\t')
  72. elif (date_question != '') & (end_date == '') & (horizon != ''):
  73. filter_ = df1[(df1['Горизонт'] == int(horizon)) & (df['дата'] == date_question)].sort_values(by=['№ Скважины', 'дата']).sort_values(by=['№ Скважины', 'дата'])
  74. filter_['дата'] = df1['дата'].dt.strftime('%d.%m.%Y')
  75. filter_['№ Скважины'] = filter_['№ Скважины'].astype(str) + "{}".format(horizon_suffix)
  76. filter_.to_csv(save, columns = ['№ Скважины', 'дата', 'дебит нефти, м3/сут', 'дебит воды, м3/сут', 'коэффициент эксплуатации'], index=False, sep='\t')
  77. elif (date_question != '') & (end_date != '') & (horizon != ''):
  78. filter_ = df1.loc[mask & (df['Горизонт'] == int(horizon))].sort_values(by=['№ Скважины', 'дата'])#.to_csv(save, columns = ['№ Скважины', 'дата', 'дебит нефти, м3/сут', 'дебит воды, м3/сут', 'коэффициент эксплуатации'], index=False, sep='\t')
  79. #filter_['дата'] = df['дата'].dt.strftime('%d.%m.%Y')
  80. filter_['№ Скважины'] = filter_['№ Скважины'].astype(str) + "{}".format(horizon_suffix)
  81. filter_.to_csv(save, columns = ['№ Скважины', 'дата', 'дебит нефти, м3/сут', 'дебит воды, м3/сут', 'коэффициент эксплуатации'], index=False, sep='\t')
  82. elif (date_question == '') & (horizon == ''):
  83. a = df1.sort_values(by=['№ Скважины', 'дата'])
  84. a['дата'] = df1['дата'].dt.strftime('%d.%m.%Y')
  85. a.to_csv(save, columns = ['№ Скважины', 'дата', 'дебит нефти, м3/сут', 'дебит воды, м3/сут', 'коэффициент эксплуатации'], index=False, sep='\t')
  86. else:
  87. print("Неверно введен ответ")
  88.  
  89.  
  90.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement