76 lines
2.7 KiB
Python
76 lines
2.7 KiB
Python
import sys
|
|
import os
|
|
curPath = os.path.abspath(os.path.dirname(__file__))
|
|
rootPath = os.path.split(curPath)[0]
|
|
sys.path.append(rootPath)
|
|
|
|
import warnings
|
|
import pandas as pd
|
|
from datetime import datetime
|
|
from sqlalchemy import create_engine
|
|
from utils import get_month_date
|
|
from config import host, port, user, passwd, database
|
|
warnings.filterwarnings("ignore")
|
|
|
|
|
|
def generate_statistics_data_by_test():
|
|
"""
|
|
按月生成历史数据
|
|
:return:
|
|
"""
|
|
engine = create_engine(f'postgresql+psycopg2://{user}:{passwd}@{host}:{port}/{database}', pool_recycle=3600)
|
|
conn = engine.connect()
|
|
|
|
months = [1]
|
|
for month in months:
|
|
for date in get_month_date(2023, month):
|
|
generate_statistics_data_single(conn, date)
|
|
|
|
|
|
def generate_statistics_data():
|
|
"""
|
|
生成当天数据
|
|
:return:
|
|
"""
|
|
engine = create_engine(f'postgresql+psycopg2://{user}:{passwd}@{host}:{port}/{database}', pool_recycle=3600)
|
|
conn = engine.connect()
|
|
|
|
generate_statistics_data_single(conn, datetime.now().strftime('%Y-%m-%d'))
|
|
|
|
|
|
def generate_statistics_data_single(conn, date):
|
|
sql = f"""select * from ai_repository_history where date_str = '{date}'"""
|
|
all_df = pd.read_sql(sql, conn)
|
|
|
|
# 发展趋势
|
|
tmp_df = all_df[['num_watches', 'num_stars', 'num_forks', 'clone_cnt', 'num_issues', 'num_pulls', 'num_commit']]
|
|
all_df['sum'] = tmp_df.sum(axis=1)
|
|
all_df['all_avg'] = all_df['sum'].mean()
|
|
all_df = all_df.round(2)
|
|
db_df = all_df[['repo_id', 'date_str', 'num_watches', 'num_stars', 'num_forks', 'clone_cnt', 'num_issues', 'num_pulls', 'num_commit', 'sum', 'all_avg']]
|
|
db_df.insert(2, 'type', 'repo_trend')
|
|
db_df.insert(3, 'add_time', datetime.now())
|
|
db_df = db_df.rename(columns={'sum': 'sum_value', 'all_avg': 'all_repo_avg_value'})
|
|
db_df.to_sql('ai_repo_trend_statistics', conn, index=False, if_exists='append')
|
|
|
|
# 开源潜力
|
|
tmp_df = all_df[['num_watches', 'num_stars', 'num_forks', 'clone_cnt']]
|
|
all_df['sum'] = tmp_df.sum(axis=1)
|
|
all_df['all_avg'] = all_df['sum'].mean()
|
|
all_df = all_df.round(2)
|
|
db_df = all_df[['repo_id', 'date_str', 'num_watches', 'num_stars', 'num_forks', 'clone_cnt', 'sum', 'all_avg']]
|
|
db_df.insert(2, 'type', 'repo_potential')
|
|
db_df.insert(3, 'add_time', datetime.now())
|
|
db_df.insert(4, 'num_issues', 0)
|
|
db_df.insert(5, 'num_pulls', 0)
|
|
db_df.insert(6, 'num_commit', 0)
|
|
db_df = db_df.rename(columns={'sum': 'sum_value', 'all_avg': 'all_repo_avg_value'})
|
|
db_df.to_sql('ai_repo_trend_statistics', conn, index=False, if_exists='append')
|
|
|
|
|
|
if __name__ == '__main__':
|
|
# 生成测试数据
|
|
generate_statistics_data_by_test()
|
|
|
|
# 生成正式数据
|
|
# generate_statistics_data() |