|
@@ -2,7 +2,7 @@
|
|
# 将不同时间的swap 合并在一起 分析他们的变化 找出庄家地址/分析庄家变化
|
|
# 将不同时间的swap 合并在一起 分析他们的变化 找出庄家地址/分析庄家变化
|
|
import pandas as pd
|
|
import pandas as pd
|
|
import sys
|
|
import sys
|
|
-
|
|
|
|
|
|
+import os
|
|
import datetime
|
|
import datetime
|
|
import pytz
|
|
import pytz
|
|
from openpyxl.styles import *
|
|
from openpyxl.styles import *
|
|
@@ -10,7 +10,8 @@ from openpyxl.styles import *
|
|
arr_file = []
|
|
arr_file = []
|
|
merged_df = None
|
|
merged_df = None
|
|
|
|
|
|
-token_add = ""
|
|
|
|
|
|
+def makeurl( url,url_show):
|
|
|
|
+ return '=HYPERLINK("{}","{}")'.format(url, url_show)
|
|
|
|
|
|
def get_nowdate():
|
|
def get_nowdate():
|
|
|
|
|
|
@@ -36,9 +37,11 @@ def utc_2_shanghaidate(df , utc_time_col ):
|
|
print(df)
|
|
print(df)
|
|
|
|
|
|
|
|
|
|
|
|
+
|
|
def merge_swap_df_fun_01():
|
|
def merge_swap_df_fun_01():
|
|
|
|
+ global merged_swap_toal_info_file
|
|
# style = pd.DataFrame().style
|
|
# style = pd.DataFrame().style
|
|
- global arr_file , merged_df , domains_df,token_add
|
|
|
|
|
|
+ global arr_file , merged_df , token_add
|
|
for index, file in enumerate(arr_file):
|
|
for index, file in enumerate(arr_file):
|
|
date_range = file.replace(".csv","").split("_")
|
|
date_range = file.replace(".csv","").split("_")
|
|
date_range = date_range[-2]+"_"+date_range[-1]
|
|
date_range = date_range[-2]+"_"+date_range[-1]
|
|
@@ -53,8 +56,8 @@ def merge_swap_df_fun_01():
|
|
"eth_s":float,
|
|
"eth_s":float,
|
|
"b_count":float,
|
|
"b_count":float,
|
|
"s_count":float,
|
|
"s_count":float,
|
|
- "avg_b_pri":float,
|
|
|
|
- "avg_s_pri":float
|
|
|
|
|
|
+ "avg_b_mc":float,
|
|
|
|
+ "avg_s_mc":float
|
|
})
|
|
})
|
|
|
|
|
|
|
|
|
|
@@ -67,11 +70,21 @@ def merge_swap_df_fun_01():
|
|
merged_df = cur_df
|
|
merged_df = cur_df
|
|
continue
|
|
continue
|
|
merged_df = pd.merge(merged_df, cur_df, on='swap_trader_id', how='outer')
|
|
merged_df = pd.merge(merged_df, cur_df, on='swap_trader_id', how='outer')
|
|
-
|
|
|
|
-
|
|
|
|
- # merged_df.to_excel( f"merge_swap_{get_nowdate()}.xlsx",index=False)
|
|
|
|
|
|
+
|
|
|
|
+ merged_df["gmgn"] = merged_df.apply(lambda ser: makeurl(
|
|
|
|
+ f"https://gmgn.ai/sol/token/{token_add}?tab=activity&maker={ser['swap_trader_id']}" , "gmgn" ), axis=1)
|
|
|
|
+ merged_df["defined"] = merged_df.apply(lambda ser: makeurl(
|
|
|
|
+ f"https://www.defined.fi/sol/{token_add}?maker={ser['swap_trader_id']}" , "defined" ), axis=1)
|
|
|
|
+ merged_df["beizhu"] = None
|
|
|
|
+
|
|
|
|
+
|
|
|
|
+
|
|
|
|
+ merged_swap_toal_info_file = f"002_merge_swap_total_info_{get_nowdate()}.xlsx"
|
|
|
|
+ merged_df.to_excel(merged_swap_toal_info_file ,index=False)
|
|
|
|
+
|
|
|
|
+
|
|
|
|
+
|
|
# https://www.w3schools.com/colors/colors_hex.asp
|
|
# https://www.w3schools.com/colors/colors_hex.asp
|
|
-
|
|
|
|
yellow_fill = PatternFill(start_color='FFFF00', end_color='FFFF00', fill_type='solid') # 黄色填充
|
|
yellow_fill = PatternFill(start_color='FFFF00', end_color='FFFF00', fill_type='solid') # 黄色填充
|
|
|
|
|
|
|
|
|
|
@@ -87,38 +100,25 @@ Orange_fill = PatternFill(start_color='FFA500', end_color='FFA500', fill_type='s
|
|
|
|
|
|
|
|
|
|
|
|
|
|
-merged_hodlers_file = ""
|
|
|
|
|
|
+merged_swap_toal_info_file = ""
|
|
def merge_swap_df_fun_02():
|
|
def merge_swap_df_fun_02():
|
|
- global merged_hodlers_file
|
|
|
|
- merged_hodlers_excel = pd.ExcelFile(merged_hodlers_file)
|
|
|
|
- arr_sheet_names = list(merged_hodlers_excel.sheet_names)
|
|
|
|
- arr_sheet_names.pop(0)
|
|
|
|
|
|
+ global merged_swap_toal_info_file
|
|
|
|
+ # merged_hodlers_excel = pd.ExcelFile(merged_swap_toal_info_file)
|
|
|
|
+ # arr_sheet_names = list(merged_hodlers_excel.sheet_names)
|
|
|
|
+ # arr_sheet_names.pop(0)
|
|
|
|
|
|
|
|
|
|
arr_df = []
|
|
arr_df = []
|
|
arr_df.append(merged_df)
|
|
arr_df.append(merged_df)
|
|
|
|
|
|
- for sheet_name in arr_sheet_names:
|
|
|
|
- holder_df = merged_hodlers_excel.parse(sheet_name=sheet_name)
|
|
|
|
- cur_df = merged_df[ merged_df['swap_trader_id'].isin(holder_df['holder_owner'])].reset_index(drop=True)
|
|
|
|
-
|
|
|
|
- # https://geek-docs.com/pandas/pandas-questions/214_pandas_coloring_cells_in_excel_with_pandas.html
|
|
|
|
- # 上色
|
|
|
|
-# https://geek-docs.com/pandas/pandas-questions/214_pandas_coloring_cells_in_excel_with_pandas.html#google_vignette
|
|
|
|
- cur_df = cur_df.set_index('swap_trader_id').reindex(holder_df['holder_owner']).reset_index()
|
|
|
|
-
|
|
|
|
- arr_df.append(cur_df)
|
|
|
|
- time_str = get_nowdate()
|
|
|
|
|
|
|
|
-
|
|
|
|
- with pd.ExcelWriter(f'merge_swap_{time_str}.xlsx') as writer:
|
|
|
|
|
|
+ with pd.ExcelWriter(merged_swap_toal_info_file) as writer:
|
|
for idx ,cur_df in enumerate(arr_df):
|
|
for idx ,cur_df in enumerate(arr_df):
|
|
sheet_name = ''
|
|
sheet_name = ''
|
|
|
|
|
|
if idx==0:
|
|
if idx==0:
|
|
sheet_name = 'Sheet1'
|
|
sheet_name = 'Sheet1'
|
|
- else:
|
|
|
|
- sheet_name = arr_sheet_names[idx-1]
|
|
|
|
|
|
+
|
|
cur_df.to_excel(writer, sheet_name=sheet_name, index=False)
|
|
cur_df.to_excel(writer, sheet_name=sheet_name, index=False)
|
|
worksheet = writer.sheets[sheet_name]
|
|
worksheet = writer.sheets[sheet_name]
|
|
|
|
|
|
@@ -126,14 +126,14 @@ def merge_swap_df_fun_02():
|
|
# pandas 和 openpyxl 如何获取某一列的名字 ,然后对指定列填充颜色
|
|
# pandas 和 openpyxl 如何获取某一列的名字 ,然后对指定列填充颜色
|
|
# 应用填充颜色到指定单元格范围(例如:A2:A4)
|
|
# 应用填充颜色到指定单元格范围(例如:A2:A4)
|
|
# target_column = 'swap_trader_id'
|
|
# target_column = 'swap_trader_id'
|
|
- arr_col_buy_pri = [col for col in cur_df.columns if 'avg_b_pri' in col ]
|
|
|
|
- arr_col_sell_pri = [col for col in cur_df.columns if 'avg_s_pri' in col ]
|
|
|
|
|
|
+ arr_col_buy_mc = [col for col in cur_df.columns if 'avg_b_mc' in col ]
|
|
|
|
+ arr_col_sell_mc = [col for col in cur_df.columns if 'avg_s_mc' in col ]
|
|
arr_col_li_lun_hold = [col for col in cur_df.columns if 'li_lun_hold' in col ]
|
|
arr_col_li_lun_hold = [col for col in cur_df.columns if 'li_lun_hold' in col ]
|
|
arr_col_token_b = [col for col in cur_df.columns if 'token_b_M' in col ]
|
|
arr_col_token_b = [col for col in cur_df.columns if 'token_b_M' in col ]
|
|
arr_col_token_s = [col for col in cur_df.columns if 'token_s_M' in col ]
|
|
arr_col_token_s = [col for col in cur_df.columns if 'token_s_M' in col ]
|
|
|
|
|
|
|
|
|
|
- for target_column in arr_col_buy_pri:
|
|
|
|
|
|
+ for target_column in arr_col_buy_mc:
|
|
column_index = cur_df.columns.get_loc(target_column) + 1 # +1 转换为 Excel 列索引
|
|
column_index = cur_df.columns.get_loc(target_column) + 1 # +1 转换为 Excel 列索引
|
|
for row in range(2, len(cur_df) + 2): # 从第2行到最后一行
|
|
for row in range(2, len(cur_df) + 2): # 从第2行到最后一行
|
|
cell = worksheet.cell(row=row, column=column_index)
|
|
cell = worksheet.cell(row=row, column=column_index)
|
|
@@ -144,7 +144,7 @@ def merge_swap_df_fun_02():
|
|
cell = worksheet.cell(row=row, column=column_index)
|
|
cell = worksheet.cell(row=row, column=column_index)
|
|
cell.fill = ForestGreen_fill
|
|
cell.fill = ForestGreen_fill
|
|
|
|
|
|
- for target_column in arr_col_sell_pri:
|
|
|
|
|
|
+ for target_column in arr_col_sell_mc:
|
|
column_index = cur_df.columns.get_loc(target_column) + 1 # +1 转换为 Excel 列索引
|
|
column_index = cur_df.columns.get_loc(target_column) + 1 # +1 转换为 Excel 列索引
|
|
for row in range(2, len(cur_df) + 2): # 从第2行到最后一行
|
|
for row in range(2, len(cur_df) + 2): # 从第2行到最后一行
|
|
cell = worksheet.cell(row=row, column=column_index)
|
|
cell = worksheet.cell(row=row, column=column_index)
|
|
@@ -164,16 +164,14 @@ def merge_swap_df_fun_02():
|
|
|
|
|
|
|
|
|
|
|
|
|
|
-def makeurl( url,url_show):
|
|
|
|
- return '=HYPERLINK("{}","{}")'.format(url, url_show)
|
|
|
|
|
|
+
|
|
|
|
+
|
|
|
|
+token_add = "2ZoJVM15fbbDgo6s5cTTX2Sj8V4sJ47rimb7gQhGpump"
|
|
|
|
|
|
if __name__ == "__main__":
|
|
if __name__ == "__main__":
|
|
- if len(sys.argv)<3:
|
|
|
|
- print("args queshao ")
|
|
|
|
- sys.exit(1)
|
|
|
|
- # token_add = sys.argv[1]
|
|
|
|
- merged_hodlers_file = sys.argv[1]
|
|
|
|
- arr_file =sys.argv[2:]
|
|
|
|
|
|
+
|
|
|
|
+ arr_file = os.listdir()
|
|
|
|
+
|
|
arr_file = [file for file in arr_file if file.startswith( "dune_swap_total_info_xx") and file.endswith(".csv")]
|
|
arr_file = [file for file in arr_file if file.startswith( "dune_swap_total_info_xx") and file.endswith(".csv")]
|
|
arr_file.sort()
|
|
arr_file.sort()
|
|
print("read file: ",arr_file)
|
|
print("read file: ",arr_file)
|