diff --git a/main.py b/main.py index 5326468..b125baa 100644 --- a/main.py +++ b/main.py @@ -17,7 +17,7 @@ from src.acquire_fund_snapshot import get_fund_list from src.acquire_fund_base import acquire_fund_base from src.fund_info.supplement import FundSupplement from src.acquire_fund_quarter import acquire_fund_quarter -from src.fund_statistic import get_special_fund_code_holder_stock_detail, all_stocks_rank,t100_stocks_rank,all_stock_holder_detail +from src.fund_statistic import get_special_fund_code_holder_stock_detail, all_stocks_rank,t100_stocks_rank,all_stock_holder_detail,calculate_quarter_fund_count from src.fund_strategy import output_high_score_funds def main(): @@ -30,7 +30,8 @@ def main(): 6.“基金持仓股排名”\n \ 7.“基金重仓股Top100”\n \ 8.“股票持仓基金明细”\n \ - 9.“高分基金”\n \ + 9.“股票持仓基金汇总”\n \ + 10.“高分基金”\n \ 输入:") if input_value == '1' or input_value == '快照': page_index = 1 @@ -51,7 +52,9 @@ def main(): t100_stocks_rank() elif input_value == '8' or input_value == "股票持仓基金明细": all_stock_holder_detail() - elif input_value == '9' or input_value == "高分基金": + elif input_value == '9' or input_value == "股票持仓基金汇总": + calculate_quarter_fund_count() + elif input_value == '10' or input_value == "高分基金": output_high_score_funds() else: print('输入有误') diff --git a/src/fund_statistic.py b/src/fund_statistic.py index e56cf21..7adcfd9 100644 --- a/src/fund_statistic.py +++ b/src/fund_statistic.py @@ -17,11 +17,7 @@ import pandas as pd import numpy as np from fund_info.statistic import FundStatistic from utils.index import get_last_quarter_str, get_stock_market, find_from_list_of_dict, update_xlsx_file - -import os -from openpyxl import load_workbook - - +from utils.file_op import read_dir_all_file def get_fund_code_pool(): # fund_code_pool = ['000001', '160133', '360014', '420002', @@ -320,22 +316,27 @@ def get_special_fund_code_holder_stock_detail(each_statistic=None, quarter_index def calculate_quarter_fund_count(): - stock_name_code = '600519-贵州茅台' - path = './outcome/数据整理/stocks/A股/上证主板/' + stock_name_code + '.xlsx' - xls = pd.ExcelFile(path, engine='openpyxl') - quarter_list = [] - sum_column_name = '总计' - for sheet_name in reversed(xls.sheet_names): - if sheet_name == '总计': - continue - item_quarter_data = [sheet_name] - df_cur_sheet = xls.parse(sheet_name) - item_quarter_data.append(len(df_cur_sheet)) - item_quarter_data.append(round(df_cur_sheet['持有市值(亿元)'].sum(),2)) - quarter_list.append(item_quarter_data) - columns = ["日期", "持有数量", '持有市值'] - df_quarter_list = pd.DataFrame(quarter_list, columns=columns) - update_xlsx_file(path, df_quarter_list, sum_column_name) + stock_markets = ['A股/上证主板', 'A股/创业板', 'A股/科创板', 'A股/深证主板', '港股', '其他'] + for market in stock_markets: + dir_path = './outcome/数据整理/stocks/' + market + '/' + files = read_dir_all_file(dir_path) + print(market, "files", len(files)) + for file_path in files: + path = dir_path + file_path + xls = pd.ExcelFile(path, engine='openpyxl') + quarter_list = [] + sum_column_name = '总计' + for sheet_name in reversed(xls.sheet_names): + if sheet_name == '总计': + continue + item_quarter_data = [sheet_name] + df_cur_sheet = xls.parse(sheet_name) + item_quarter_data.append(len(df_cur_sheet)) + item_quarter_data.append(round(df_cur_sheet['持有市值(亿元)'].sum(),2)) + quarter_list.append(item_quarter_data) + columns = ["日期", "持有数量", '持有市值'] + df_quarter_list = pd.DataFrame(quarter_list, columns=columns) + update_xlsx_file(path, df_quarter_list, sum_column_name) if __name__ == '__main__': each_statistic = FundStatistic() # quarter_index = "2021-Q2" diff --git a/src/utils/file_op.py b/src/utils/file_op.py index 5f9109c..9bea446 100644 --- a/src/utils/file_op.py +++ b/src/utils/file_op.py @@ -8,7 +8,6 @@ Author: luxuemin2108@gmail.com Copyright (c) 2021 Camel Lu ''' import time -import datetime import os @@ -24,3 +23,6 @@ def write_fund_json_data(data, filename, file_dir=None): with open(file_dir + filename, 'w', encoding='utf-8') as f: json.dump(data, f, ensure_ascii=False, indent=2) f.close() + +def read_dir_all_file(path): + return os.listdir(path)