Excel数据清洗工具:提高数据处理效率的利器
引言
在当今的数据驱动时代,数据的质量直接影响着分析结果的可靠性和有效性。然而,在实际工作中,我们常常会遇到数据中的各种问题,如重复记录、缺失值、格式不一致等。为了解决这些问题,一款名为“Excel数据清洗工具”的应用程序应运而生,它不仅简化了数据清洗的过程,还极大地提升了工作效率。
1、介绍
1.1 什么是Excel数据清洗工具?
Excel数据清洗工具是一款专为Excel文件设计的数据处理软件。它可以有效地帮助用户完成一系列的数据清洗任务,如删除重复值、处理缺失值、格式化数据等。无论是单个文件还是整个文件夹中的多个文件,这款工具都能够轻松应对。
1.2 为什么选择Excel数据清洗工具?
功能强大
- 删除重复值:重复数据不仅浪费存储空间,还会导致统计结果失真。该工具可以一键删除所有列完全相同的重复记录,确保数据的唯一性。
- 处理缺失值:缺失值是数据清洗中的常见问题。该工具支持填充或删除缺失值,甚至可以根据用户的需求自定义填充值。
- 格式化数据:对于日期和数值等数据类型,统一格式是进行后续分析的前提。工具提供了日期数据和数值数据的格式化功能。
- 去除空格和非打印字符:文本数据中的多余空格或非打印字符可能会影响数据的正确性,该功能可以有效清理这些字符。
- 数据验证:确保数据满足一定的约束条件,如数值范围等,从而保证数据的有效性。
操作简便
该工具提供了直观的用户界面,支持“单个文件”和“文件夹”两种模式。用户可以根据需要选择处理单个文件或是批量处理整个文件夹中的所有Excel文件。
文件夹模式下的数据合并功能
在文件夹模式下,除了基本的数据清洗功能外,还有一个非常实用的功能——数据合并。它能够将处理后的多个Excel文件合并成一个文件,便于后续的数据汇总和分析。
1.3 如何使用Excel数据清洗工具?
- 选择模式:首先,根据需要选择“单个文件”或“文件夹”模式。
- 上传文件或输入路径:如果是单个文件模式,通过点击上传按钮选择待处理的文件;如果是文件夹模式,则输入文件夹的路径。
- 勾选所需功能:根据数据的具体情况,勾选需要进行的操作,如删除重复值、处理缺失值等。
- 点击处理按钮:最后,点击相应的处理按钮,工具将自动执行所选功能,并在完成后显示处理后的文件保存位置和前10行预览。
1.4 总结
Excel数据清洗工具以其强大的功能和简便的操作,成为了数据分析师和业务人员的理想选择。无论是日常的数据清洗工作,还是大规模的数据整理任务,这款工具都能够帮助用户轻松应对。通过使用该工具,不仅可以提高工作效率,还能确保数据的一致性和准确性,为后续的数据分析打下坚实的基础。
2、使用实例
为了方便使用,下面列举了一些具体的示例,帮助更好地理解和操作。
- 现存在一文件夹,内有3个excel文件,类型相同
- 1.xlsx和2.xlsx内容如下
2.1 模式选择
- excel数据清洗工具有两个模式可以选择:[“单个文件”, “文件夹”]
- 单个文件:通过选择单个文件,选择对应的处理方法进行处理
- 文件夹:通过输入文件夹路径,选择对应的处理方法对整个文件夹内的xlsx文件进行处理,文件夹模式下多一种数据合并功能:将多个 Excel 文件合并成一个。
- 单个文件上传:通过点击对应的上传按钮即可选择待处理文件
- 文件夹:通过输入对应的文件夹所在路径即可对整个文件夹内的xlsx文件进行处理
2.2 删除重复值
- 删除重复值是数据清洗中最常见的任务之一。重复数据可能会导致统计结果失真。
- 勾选是否删除重复值,确定开启删除重复值功能,其余功能不开启,点击单文件处理按钮;
- 注意:删除重复值会考虑所有列都相同的才会删除
- 处理后会显示文件保存位置和处理后文件的前10行预览,很明显最后一行重复的数据已删除
2.3 处理缺失值
- 缺失值会导致数据不完整,需要对其进行填充或删除。
- 该功能需要填写3个参数:
- 列表名称:要处理缺失值的列名或列名列表。如果为None,则处理所有列。
- 缺失值处理的方法:可以是 ‘填充缺失值’ 或 ‘删除缺失值所在行’。默认为 ‘填充缺失值’。
- 填充缺失值:当 缺失值处理的方法 为 ‘填充缺失值’ 时,用来填充缺失值的值。默认为 ‘N/A’。
- 勾选是否处理缺失值,确定开启处理缺失值功能,其余功能不开启,点击单文件处理按钮;
- 处理后会显示文件保存位置和处理后文件的前10行预览,处理结果如图
- 该功能需要填写3个参数:
2.4 格式化数据
- 数据格式不一致会影响后续的数据分析。格式化数据包括日期、数值等。
- 该功能需要填写2个参数:
- 列表类型:可以是‘日期数据格式化‘ 或 ’数值数据格式化’ 默认为 日期数据格式化
- 列表名称:要处理缺失值的列名或列名列表。不能为None。
- 勾选是否格式化数据,确定开启格式化数据功能,其余功能不开启,点击单文件处理按钮;
- 处理后会显示文件保存位置和处理后文件的前10行预览,处理结果如图
- 该功能需要填写2个参数:
2.5 去除空格和非打印字符
- 文本数据中多余的空格或非打印字符会影响数据的正确性。
- 该功能需要填写1个参数:
- 列表名称:要处理缺失值的列名或列名列表。如果没有指定列,则获取 DataFrame 中对象类型(如字符串)的列。
- 勾选是否去除空格和非打印字符,确定开启去除空格和非打印字符功能,其余功能不开启,点击单文件处理按钮;
- 处理后会显示文件保存位置和处理后文件的前10行预览,处理结果如图
- 该功能需要填写1个参数:
2.6 数据验证
- 确保数据满足一定的约束条件,如数值范围等。
- 该功能需要填写3个参数:
- 列表名称:要处理缺失值的列名或列名列表。不能没有列名。
- 列中的最小允许值
- 列中的最大允许值
- 勾选是否数据验证,确定开启数据验证功能,其余功能不开启,点击单文件处理按钮;
- 处理后会显示文件保存位置和处理后文件的前10行预览,处理结果如图(将不满足约束条件的行删除)
- 该功能需要填写3个参数:
2.7 单文件多功能处理
- 开启全部功能,点击单文件处理按钮;
- 处理后会显示文件保存位置和处理后文件的前10行预览,处理结果如图:
2.8 文件夹多功能处理
- 开启全部功能,点击多文件处理按钮;
- 数据合并
- 将多个 Excel 文件合并成一个。
- 文件夹模式下的特有功能。
- 对文件夹下所有处理后的excel文件进行合并,如果只想合并文件,可以不选择其他功能
- 将多个 Excel 文件合并成一个。
clean
和merge
文件夹内如下所示
3、生成可执行文件
3.1 生成已安装库文件
确保你的环境中已经安装了所有必要的库: 确保你在开发环境中安装了所有应用程序运行所需的库,包括 Streamlit 和任何其他第三方库。 通过 pip freeze > requirements.txt
命令生成一个包含所有已安装库及其版本号的文件。
3.2 安装pyinstaller
pip install pyinstaller -i https://pypi.tuna.tsinghua.edu.cn/simple
3.3 打包
打包 Python 应用程序
- PyInstaller 会自动处理大多数依赖关系,并将它们打包到最终的可执行文件中。
- –onefile 选项表示将所有依赖项合并到一个单一的可执行文件中;
- –windowed 选项则表示生成的应用程序将在没有控制台窗口的情况下运行(仅适用于 Windows)。
pyinstaller --onefile --windowed main.py
pyinstaller打包streamlit预处理
- PyInstaller 虽然会自动处理大多数依赖关系,但是streamlit库一般无法正确处理,可以使用下面的办法解决:
- 创建hook文件(命名以hook开头)
from PyInstaller.utils.hooks import copy_metadata
datas = copy_metadata("streamlit")
- 在项目根目录下创建main.py
import os
import sys
import streamlit.web.cli as stcli
def resolve_path(path):
resolved_path = os.path.abspath(os.path.join(os.getcwd(), path))
print(resolved_path)
return resolved_path
if __name__ == "__main__":
sys.argv = [
"streamlit",
"run",
# 填写streamlit启动页面(本文把启动文件gui.py放在main.py同目录)
resolve_path("gui.py"),
"--global.developmentMode=false",
]
sys.exit(stcli.main())
进行第一次打包
- –additional-hooks-dir=:指定一个目录,该目录中包含自定义的钩子文件**(本文把钩子文件建立在main.py同目录)**。这些钩子文件可以帮助 PyInstaller 更准确地处理某些库或模块。
- 打包完成后会生成main.spec、dist、build文件
pyinstaller --onefile --additional-hooks-dir=. main.py --clean
- 第一次打包的执行文件可能依旧不会成功,因为我们没有指定但treamlit库路径,我们可以在
main.spec
文件里进行编辑
# -*- mode: python ; coding: utf-8 -*-
a = Analysis(
['main.py'],
pathex=[],
binaries=[],
# 第一个参数:config:这是指定要包含的源文件的路径。在这个例子中,config 是一个配置文件所在文件夹,位于与 main.py 同级的目录下。
# 第二个参数:'config':这是指定目标路径。在这里,'config' 表示当前目录的config文件夹。这意味着在打包后的 EXE 文件运行时,config应该被放置在 EXE 文件所在的目录下。
# venv/lib/python3.8/site-packages':注意一定要填写你的streamlit安装位置的上级目录
# 如果你的程序只有一个启动文件`gui.py`,没有配置文件夹或类似services文件夹,只需要datas=[('venv/lib/python3.8/site-packages','.')],
datas=[('config','config'),('pages','pages'),('services','services'),('venv/lib/python3.8/site-packages','.')],
hiddenimports=[],
# 指定 Hook 文件所在的目录
hookspath=['.'],
hooksconfig={},
runtime_hooks=[],
excludes=[],
noarchive=False,
optimize=0,
)
pyz = PYZ(a.pure)
exe = EXE(
pyz,
a.scripts,
a.binaries,
a.datas,
[],
name='main',
debug=False,
bootloader_ignore_signals=False,
strip=False,
upx=True,
upx_exclude=[],
runtime_tmpdir=None,
console=True,
disable_windowed_traceback=False,
argv_emulation=False,
target_arch=None,
codesign_identity=None,
entitlements_file=None,
)
进行第二次打包
- 先将之前生成的dist和build文件删掉
pyinstaller main.spec --clean
- 注意:如果你的程序只有一个启动文件gui.py,没有配置文件夹或类似services文件夹,那么到这里应该就可以正常运行;否则:
- 类似services文件夹**(存放函数)**在打包配置
main.spec
里指定即可; - pages**(存放streamlit页面)**文件夹需要复制到生成的dist里;
- config配置文件夹建议复制到生成的dist里,因为这样配置改变时才会生效;
- 启动文件
gui.py
复制到生成的dist里;
- 类似services文件夹**(存放函数)**在打包配置
- 点击main.exe即可运行,但建议在终端打开,可以看到更多信息
优化内存
- 此时虽然可以正常运行,但是打包后的执行文件很大,如何优化打包内存?
- 编辑
main.spec
的 pathex 参数:该参数用于指定可执行文件运行时的路径列表。这个列表中的路径会被用来寻找与应用程序相关的文件。pathex 参数对最终可执行文件的大小有显著影响,因为它决定了哪些文件和目录会被包含在最终的打包结果中 - 设置pathex=[‘.’]:当 pathex=[‘.’] 时,PyInstaller 会明确地告诉打包工具只在当前工作目录下查找所需的文件和依赖项。这样可以减少不必要的文件被包含进来,从而减小最终可执行文件的大小。
- 编辑