Advertisement
VssA

db

Dec 19th, 2023
726
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 2.50 KB | None | 0 0
  1. import pandas as pd
  2. import sqlite3
  3.  
  4. database_name = input()
  5. csv_file = input()
  6. table_name = input()
  7. currency_table = input()
  8.  
  9. def preprocess_vacancies_data(database_name, csv_file_name, table_name, currency_table):
  10.     # Чтение данных о вакансиях из CSV-файла
  11.     df_vacancies = pd.read_csv(csv_file_name)
  12.  
  13.     # Подключение к базе данных SQLite
  14.     conn = sqlite3.connect(database_name)
  15.  
  16.     # Чтение данных о курсах валют из таблицы базы данных
  17.     query = f"SELECT * FROM {currency_table}"
  18.     df_currency = pd.read_sql_query(query, conn)
  19.  
  20.     df_vacancies['salary_from'] = df_vacancies.apply(lambda row: convert_currency(row['salary_from'], row['salary_currency'], df_currency,df_vacancies['published_at']), axis=1)
  21.  
  22.     df_vacancies['salary_to'] = df_vacancies.apply(lambda row: convert_currency(row['salary_to'], row['salary_currency'], df_currency,df_vacancies['published_at']), axis=1)
  23.  
  24.     df_vacancies['salary'] = df_vacancies.apply(lambda row: calculate_average_salary(row['salary_from'], row['salary_to']), axis=1)
  25.  
  26.     # Удаление ненужных столбцов
  27.     df_vacancies = df_vacancies[['name', 'salary', 'area_name', 'published_at']]
  28.  
  29.     # Запись данных в таблицу базы данных
  30.     df_vacancies.to_sql(table_name, conn, if_exists='replace', index=False)
  31.  
  32.     # Закрытие соединения с базой данных
  33.     conn.close()
  34.  
  35. def convert_currency(value, currency, df_currency,year):
  36.     if pd.isnull(value) or pd.isnull(currency):
  37.         return None
  38.  
  39.     # Получение коэффициента для преобразования валюты
  40.     coefficient = get_currency_coefficient(currency, df_currency,year)
  41.  
  42.     # Преобразование валюты в рубли
  43.     if coefficient is not None:
  44.         return round(value * coefficient)
  45.     else:
  46.         return None
  47.  
  48. def get_currency_coefficient(currency, df_currency,year):
  49.     if currency in df_currency.columns:
  50.         return df_currency[currency].iloc[0]
  51.     if currency == 'RUR':
  52.         return 1
  53.     else:
  54.         return None
  55.  
  56. def calculate_average_salary(salary_from, salary_to):
  57.     if pd.isnull(salary_from) and pd.isnull(salary_to):
  58.         return None
  59.     elif pd.isnull(salary_from):
  60.         return salary_to
  61.     elif pd.isnull(salary_to):
  62.         return salary_from
  63.     else:
  64.         return (salary_from + salary_to) // 2
  65.  
  66. # Пример использования функции
  67. preprocess_vacancies_data(database_name, csv_file, table_name, currency_table)
  68.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement