功能一:
得到某個屬性的全部角色,將其封裝在class中
"""各元素角色信息:一對多"""
from pandas import DataFrame, Series
import pandas as pd
import numpy as npclass FindType:# 自動執行,將傳入參數賦值給私有屬性self.Attributedef __init__(self, attribute):self.Attribute = attributedef find_type(self):role_things = pd.read_excel("C:/Users/YHT/Desktop/項目/原神各屬性角色信息.xlsx", header=0, index_col=0)# 補全role_things = role_things.fillna(axis=0, method="ffill")# 按照"屬性"這一列的信息,將所有數據重新分組,得到一個字典things_list = role_things.groupby("屬性").groupsreturn role_things.loc[things_list[self.Attribute]]
功能二:
定向查找某個角色信息,傳入參數為該角色的名稱
"""查找對應角色:一對一"""
from pandas import DataFrame, Series
import pandas as pd
import numpy as npclass FindRole:def __init__(self, role_name):self.role_name = role_namedef findrole(self):role_things = pd.read_excel("C:/Users/YHT/Desktop/項目/原神各屬性角色信息.xlsx", header=0, index_col=0)# 將屬性所包含的nan,進行填充role_things = role_things.fillna(axis=0, method="ffill")print(role_things)print()all_name = role_things["角色"]print(all_name)num = 0for x in all_name:if x == self.role_name:return_role = role_things.loc[:, "角色":]print(return_role.iloc[num])Attribute = return_role.iloc[num]["屬性"]Name = return_role.iloc[num]["角色"]Hp = return_role.iloc[num]["生命值"]Def = return_role.iloc[num]["防御力"]Atk = return_role.iloc[num]["攻擊力"]Break = return_role.iloc[num]["突破加成"]print(Name, Attribute, Hp, Def, Atk, Break)num += 1
功能三:
設置對應參數,篩選角色
比如,要找出生命值高于10000,防御力高于270,攻擊力高于300的角色
"""設置限制參數,查找對應角色:多對多"""
from pandas import DataFrame, Series
import pandas as pd
import numpy as npclass Num:def __init__(self, Hp, Def, Atk):self.Hp = Hpself.Def = Defself.Atk = Atkdef num(self):role_things = pd.read_excel("C:/Users/YHT/Desktop/項目/原神各屬性角色信息.xlsx", header=0, index_col=0)role_things = role_things.fillna(axis=0, method="ffill")if self.Hp is None:if self.Def is None:if self.Atk is None:print(role_things)else:return_things = role_things.loc[role_things["攻擊力"] > self.Atk]print(return_things)else:if self.Atk is None:return_things = role_things.loc[role_things["防御力"] > self.Def]print(return_things)else:return_things = role_things.loc[(role_things["防御力"] > self.Def) & (role_things["攻擊力"] > self.Atk)]print(return_things)else:if self.Def is None:if self.Atk is None:return_things = role_things.loc[role_things["生命值"] > self.Hp]print(return_things)else:return_things = role_things.loc[(role_things["生命值"] > self.Hp) & (role_things["攻擊力"] > self.Atk)]print(return_things)else:if self.Atk is None:return_things = role_things.loc[(role_things["生命值"] > self.Hp) & (role_things["防御力"] > self.Def)]print(return_things)else:return_things = role_things.loc[(role_things["生命值"] > self.Hp) & (role_things["防御力"] > self.Def) & (role_things["攻擊力"] > self.Atk)]print(return_things)
功能四:
按照某一參數,將角色順序重新排列
例如,按照生命值大小,將所有角色重新排列
"""按照某一參數重新排序:一對多"""
from pandas import DataFrame, Series
import pandas as pd
import numpy as npclass Sort:def __init__(self, input_x):self.input_x = input_xdef sort(self):type_bool = Truerole_things = pd.read_excel("C:/Users/YHT/Desktop/項目/原神各屬性角色信息.xlsx", header=0, index_col=0)role_things = role_things.fillna(axis=0, method="ffill")return_things = role_things.sort_values(by=self.input_x, ascending=type_bool, axis=0)print(return_things)