(2)原神角色数据分析-2

功能一:

得到某个属性的全部角色,将其封装在class中

"""各元素角色信息:一对多"""
from pandas import DataFrame, Series
import pandas as pd
import numpy as np


class FindType:
    # 自动执行,将传入参数赋值给私有属性self.Attribute
    def __init__(self, attribute):
        self.Attribute = attribute

    def 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("属性").groups
        return role_things.loc[things_list[self.Attribute]]

功能二:

定向查找某个角色信息,传入参数为该角色的名称

"""查找对应角色:一对一"""
from pandas import DataFrame, Series
import pandas as pd
import numpy as np


class FindRole:
    def __init__(self, role_name):
        self.role_name = role_name

    def 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 = 0
        for 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 np


class Num:
    def __init__(self, Hp, Def, Atk):
        self.Hp = Hp
        self.Def = Def
        self.Atk = Atk

    def 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 np


class Sort:
    def __init__(self, input_x):
        self.input_x = input_x

    def sort(self):
        type_bool = True
        role_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)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

弦之森

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值