王者荣耀数据处理

     实验题

王者荣耀数据处理

     实验目的和要求

1  目的: 掌握基础语法

2 、要求:  掌握pandas以及numpy的基本用法

     实验内容

  1. 代码

import pandas as pd

import numpy as np

# # 案例分析:  王者荣耀英雄特点分析

# 本案例中我们将利用王者荣耀英雄数据集进行分析,训练Pandas库的使用

# #### 使用 `pd.read_csv` 导入数据

df = pd.read_csv('data/type_hero.csv')

# 1.一共有多少个英雄

print(df.shape[0])

# 2.每个英雄有多少个属性

print(df.shape[1]-2)

# 3.血最多的英雄

maxblood=df.agg({"最大生命":np.max})

print(maxblood)

n=df[df['最大生命'].values==maxblood.values]

n1=n[['英雄名称']]

print(n1)

# 4. 找出孙悟空初始攻击力的排名

# df1=df.sort_values(by=["物理攻击"],ascending=False)

df['排名']=df['物理攻击'].rank(ascending=0,method='dense')

p=df[df['英雄名称'].values=='孙悟空']

k1=p[['排名','英雄名称','物理攻击']]

print(k1)

# <div class="alert alert-info alert-dismissible">根据上述数据集完成下列问题<span class="label label-warning">时间10分钟</span>

# </div>

#

# 1. 每种英雄的平均属性(取两位小数)

avgs = df[['最大生命','最大法力','物理攻击','法术攻击','物理防御','物理减伤率','法术防御','法术减伤率','物理护甲穿透','法术护甲穿透','攻速加成','暴击几率','暴击效果','物理吸血','法术吸血','冷却缩减','攻击范围','韧性','生命回复','法力回复']].mean(numeric_only=True)

print(np.around(avgs, 2))

# 2. 近程英雄和远程英雄数量

print(df['攻击范围'].value_counts())

# 3. 每一种英雄生命回复排名

df['rank']=df['生命回复'].rank(ascending=0,method='dense')

m1=df[['rank','英雄名称','生命回复']]

print(m1)

# In[ ]:

  1. 运行结果截图:

1

2

<think>好的,我现在需要解决用户的问题,即如何通过批处理(.bat)脚本来删除或清理HEX文件中多余的FF填充数据。首先,我要回忆一下之前用户提供的引用内容,看看有没有相关的信息。 用户提到使用Vector的HexView工具,并且引用[3]和[4]都涉及到使用HexView的命令行接口来处理HEX文件。特别是引用[4]中提到了剪切数据的功能,使用/CR参数来移除特定地址范围的数据。但用户现在的问题是要删除连续的FF填充数据,而不是某个固定地址范围的数据。所以可能需要更灵活的方法。 HexView工具是否有检测连续FF并删除的功能呢?我需要查阅一下HexView的文档或者用户提供的引用。引用[3]提到HexView支持增删改查HEX文件,并且有填充的功能。可能填充是用特定的值填充,但如何删除已有的填充呢? 用户之前的问题中,引用[4]中的/CR参数是剪切指定地址范围的数据,但需要知道具体的地址范围。如果FF填充分布在不同的地址段,可能需要先识别这些地址,然后逐一剪切。但手动指定每个地址范围不现实,尤其是当文件较大时。 或许可以结合HexView的其他功能,比如查找连续FF的区域,并生成对应的地址范围,再用/CR参数处理。不过,目前引用的内容中没有提到HexView是否有自动检测连续FF的功能。因此,可能需要编写一个脚本,先解析HEX文件,找到所有连续FF的地址范围,然后生成对应的HexView命令进行剪切。 不过,这样的脚本可能会比较复杂,需要解析HEX文件的格式,识别连续的FF数据块。可能超出了批处理脚本的能力范围,需要借助其他工具或者HexView自身的功能。 或者,是否有HexView的命令可以直接删除所有连续的FF数据?例如,使用某种替换功能,将连续超过一定长度的FF替换为空。但引用中并没有提到这样的功能,可能需要查看HexView的文档。 另一个思路是,如果这些FF填充位于文件的末尾或者特定的未使用区域,可以通过指定地址范围来删除。例如,假设从地址0x1000到0x1FFF都是FF,那么可以用/CR参数剪切这个范围。但用户的问题可能是指任意位置的连续FF,而不仅仅是特定区域。 在这种情况下,可能需要分步骤处理:首先使用HexView将HEX文件转换为二进制(BIN),然后用其他工具处理BIN文件,删除连续的FF,再转换回HEX。但用户希望用.bat脚本集成HexView,所以可能需要HexView本身的功能。 或者,用户提到的引用[5]中的签名和加密功能可能不相关,但引用[3]中的填充操作可能相关,例如,填充时可以用特定值填充,但如何删除已有的填充呢? 可能需要进一步分析HexView的命令行参数。根据引用[4],/CR参数可以剪切指定的地址范围,但需要知道这些地址范围。因此,解决方案可能需要先用HexView生成一个地址范围列表,然后逐一剪切。 或者,是否存在HexView的选项可以直接删除所有连续的FF数据?例如,使用类似“删除所有连续的FF超过N字节”的功能。如果HexView支持正则表达式或模式匹配,可能可以实现。但根据现有引用,没有明确提到这样的功能。 因此,可能的步骤是: 1. 使用HexView将HEX文件转换为二进制(BIN)文件。 2. 使用其他工具或自定义脚本处理BIN文件,识别并删除连续的FF数据块。 3. 将处理后的BIN文件转换回HEX格式。 但用户希望全部通过批处理脚本和HexView完成,可能需要HexView本身支持这样的操作。假设HexView没有直接支持,可能需要结合其他工具,如使用Python或PowerShell脚本处理BIN文件,再在.bat中调用这些脚本。 不过,用户明确要求使用.bat脚本,所以可能需要寻找纯HexView的方法。或者,是否有HexView的命令可以逐段检查并删除连续的FF? 另一个可能的方法是使用HexView的填充功能,将特定的地址范围填充为空白(即删除),但需要先确定哪些地址范围是连续的FF。这又回到了如何确定这些地址的问题。 总结来说,可能的解决方案步骤: 1. 解析原始HEX文件,找到所有连续FF的地址范围。 2. 生成对应的HexView命令,使用/CR参数剪切这些地址范围。 3. 执行HexView命令处理HEX文件。 但如何解析HEX文件并找到连续FF的地址范围呢?这可能需要编写额外的脚本,或者使用HexView本身的某些功能。例如,HexView是否有导出数据为某个格式,可以分析数据内容? 如果没有,可能需要分两步: a. 使用HexView的导出功能将HEX文件转换为二进制BIN文件。 b. 分析BIN文件,找到所有连续FF的区域的起始和结束地址。 c. 将这些地址范围作为参数传递给HexView的/CR命令,剪切这些区域。 但这个过程需要额外的工具来分析BIN文件,可能超出了批处理脚本的能力,需要借助其他编程语言如Python。不过用户可能希望仅使用批处理和HexView。 如果HexView可以输出文件的地址范围和数据,可能可以编写一个批处理脚本来处理输出,识别连续FF的区域。例如,HexView是否有命令可以按地址输出数据,然后批处理脚本逐行分析,记录连续FF的起始和结束地址。 不过,这可能比较复杂,尤其是处理大文件时。此外,批处理脚本处理二进制数据可能不太方便,可能需要HexView提供某种文本格式的输出。 另一种可能:HexView的某个命令可以直接删除所有连续的FF数据。例如,使用替换命令将连续的FF替换为空,但需要确保替换操作不会破坏文件结构。但根据现有引用,没有提到这样的功能。 综上所述,最可行的办法可能是结合HexView的剪切命令和外部脚本分析HEX文件,生成需要剪切的地址范围列表,然后在批处理脚本中调用HexView进行处理。 不过,由于用户可能没有其他工具,只能使用HexView和批处理脚本,可能需要另一种方式。例如,如果HexView支持脚本输入,可以编写一个HexView脚本文件,其中包含多个/CR命令来剪切所有连续FF的区域。 因此,最终的步骤可能如下: 1. 使用HexView将HEX文件转换为二进制(BIN)文件。 2. 使用自定义脚本(如Python)分析BIN文件,找出所有连续FF的地址范围。 3. 生成一个包含多个/CR参数的HexView命令,剪切这些地址范围。 4. 执行HexView命令处理原始HEX文件,生成清理后的HEX文件。 但用户可能希望整个过程在.bat中完成,无需其他脚本语言。这时候,可能需要寻找HexView自身的功能来识别这些区域,或者接受手动指定地址范围。 如果用户知道需要删除的地址范围,可以直接在批处理脚本中使用HexView的/CR参数。例如: ``` hexview.exe /CR:0x1000-0x1FFF input.hex output.hex ``` 但如果不知道具体地址,就需要自动化识别。这时候可能需要结合其他工具,或者HexView的某些高级功能。 假设用户无法使用其他工具,只能使用HexView和批处理脚本,可能的解决方案是: - 编写一个批处理脚本,调用HexView多次,每次处理一个地址范围,但这些地址范围需要提前确定。 因此,可能无法完全自动化,除非HexView有某种检测功能。 经过上述思考,可能的结论是:使用HexView的剪切命令,但需要知道具体的地址范围。如果用户无法提供这些地址范围,就需要其他工具辅助分析HEX文件,找到连续FF的区域,然后生成对应的HexView命令。 因此,在回答中需要说明这个步骤,并给出示例脚本,结合HexView和可能的其他工具(如PowerShell或Python)来识别地址范围,然后调用HexView进行处理。如果用户只能使用HexView和批处理,可能需要手动处理,或者建议使用HexView的其他功能。</think>通过Vector HexView工具的命令行功能,可以使用以下步骤实现HEX文件连续FF数据的清理: 1. **识别有效数据范围** 使用HexView的地址范围分析功能,结合/CR剪切参数清理无效区域。假设有效数据范围为0x1000-0x7FFF,其余区域为FF填充: ```bat hexview.exe input.hex /CR:0x0-0xFFF /CR:0x8000-0xFFFF /OUT:output.hex ``` 2. **动态检测填充区域(需自定义逻辑)** 若需自动化检测连续FF区域,需编写辅助脚本生成地址范围列表。例如使用Python解析HEX文件后生成批处理命令: ```python # find_ff_ranges.py 示例代码 with open("input.hex", "rb") as f: data = f.read() # 检测连续FF的逻辑(伪代码) ranges = detect_ff_ranges(data) with open("cut_commands.bat", "w") as bat: bat.write("hexview.exe input.hex " + " ".join([f"/CR:{r}" for r in ranges]) + " /OUT:output.hex") ``` 3. **集成到批处理脚本** 将上述逻辑封装为可执行流程: ```bat @echo off :: Step1: 转换HEX为BIN以便分析 hexview.exe input.hex /BIN:temp.bin :: Step2: 调用Python脚本检测连续FF区域 python find_ff_ranges.py :: Step3: 执行生成的剪切命令 call cut_commands.bat :: 清理临时文件 del temp.bin ```
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

ଲଇଉକ ଲ ̊ଳ

多谢大哥赏赐

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

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

打赏作者

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

抵扣说明:

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

余额充值