用于清理数据的 5 个简单但功能强大的 Python 脚本
面对现实吧。通常,数据清理可能会让人头疼,而不是因为复杂性。通常情况下,我对进行数据清理的想法感到畏缩,因为它变得如此单调。说我已经成为 Python 的“奇才”是轻描淡写的。 Python 非常轻量级,您不需要一个完整的开发服务器来为大多数典型的数据清理任务生成一个快速的 Python 脚本。
我已经编制了我的前 5 个最好的 Python 脚本列表来自动化数据清理。
将 PDF 转换为 CSV
更少的“数据清理”和更多的“数据准备”;当我需要从白皮书、电子书或其他大型 PDF 文档中获取数据时,这个脚本多次拯救了我。我通常从在 Mac 上使用 Preview 开始(因为它有一种删除 PDF 中页面的简单方法)并删除所有不包含我想要的数据的页面。这使得清除任何被转换的额外内容变得更加容易。
进口表格 # 抓取文件
pdf_filename = input("输入完整路径和文件名:") # 提取PDF内容
框架 = tabula.read_pdf(pdf_filename,电子表格 = True,编码 = 'utf-8') # 从内容创建一个 CSV 文件
frame.to_csv('pdf_conversion.csv')
一种快速提取数据的相对简单的方法,以便您可以在将其拉入数据库或工具(如 Tableau 或 数数 .
合并 CSV 文件
像 CRM 这样的工具令人沮丧的事情之一是导出数据可能有点痛苦。许多系统会为您提供导出为 CSV 的选项,但无法在导出之前先合并数据。这可能导致 5+ 个文件导出到包含相同数据类型但结果不同的文件夹。该脚本通过获取那些必须具有匹配格式并存在于同一文件夹中的文件并将它们合并到一个文件中来解决此问题。
从时间导入 strftime
将熊猫导入为 pd
导入全局 # 定义包含 CSV 文件的文件夹的路径
path = input('请输入完整的文件夹路径:') # 确保有一个斜杠
如果路径 [:-1] != "/":
路径 = 路径 + "/" # 获取 CSV 文件作为列表
csv_files = glob.glob(路径 + '*.csv') # 打开每个 CSV 文件并合并成一个文件
merge_file = pd.concat( [ pd.read_csv(c) for c in csv_files ] ) # 创建新文件
merge_file.to_csv(path + 'merged_{}.csv'.format(strftime("%m-%d-%yT%H:%M:%S")), index=False) print('合并完成。')
最终输出将为您提供一个 CSV 文件,其中包含您从源系统导出的 CSV 列表中的所有数据。
从 CSV 文件中删除重复的行
如果您需要从 CSV 文件中删除重复的数据行,这可以帮助您快速执行清理工作。以前面合并重复文件的示例为例,您的 CRM 报告可能包含跨多个报告的相同帐户。当您合并数据时,您会在数据集中引入重复项,这可能会在可视化工具或 ML 项目中扭曲您的结果。
将熊猫导入为 pd # 获取文件名
filename = input('请输入完整的文件夹路径和文件名:') # 定义要检查重复项的 CSV 列名
duplicate_header = input('请输入标题名称以检查是否重复:') # 获取文件内容
file_contents = pd.read_csv(文件名) # 删除重复行
deduplicated_data = file_contents.drop_duplicates(subset=[duplicate_header], keep="last", inplace=True) # 创建新文件
deduplicated_data.to_csv('deduplicated_data.csv')
拆分 CSV 列
导出报告的另一个令人沮丧的结果是,它有时会包含我需要以两列形式存在的单列数据。一个很好的例子是一个名为全名的字段,但我需要在其列中包含名字和姓氏。我会说我使用这个脚本的频率比其他任何脚本都多。
将熊猫导入为 pd # 获取文件名并定义列
filename = input('请输入完整的文件夹路径和文件名:')
col_to_split = input('请输入要拆分的列名:')
col_name_one = input('第一个新列的名称:')
col_name_two = input('第二个新列的名称:') # 将 CSV 数据添加到数据框
df = pd.read_csv(文件名) # 拆分列
df[[col_name_one,col_name_two]] = df[col_to_split].str.split(",", expand=True) # 创建新文件
df.to_csv('split_data.csv')
合并不同的数据集
假设您有一个帐户列表及其关联订单,并且希望查看订单历史记录以及关联的帐户详细信息。实现此目的的一种好方法是将数据合并或连接到单个 CSV 文件中。
将熊猫导入为 pd # 获取文件名并定义用户输入
left_filename = input('请输入完整的 LEFT 文件夹路径和文件名:')
right_filename = input('请输入完整的 RIGHT 文件夹路径和文件名:')
join_type = input('指定连接类型(外、内、左、右):')
join_column_name = input('要加入的列名是什么(即 Account_ID):') # 将文件读入数据框
df_left = pd.read_csv(left_filename)
df_right = pd.read_csv(right_filename) # 加入数据框
加入数据 = pd.merge(左 = df_left,右 = df_right,如何 = join_type,on = join_column_name) # 创建新文件
join_data.to_csv('joined_data.csv')
最后的想法
这些脚本在帮助我清理 CSV 文件方面非常有用,这些文件可能会被放入 S3 存储桶中以供 数据管道 或将数据加载到 ML 模型中进行处理。几乎所有示例都使用 Pandas,这是一个非常适合处理数据的 Python 库,并暗示了该库的强大功能。 Pandas 是我处理数据的首选库,因为它提供了许多强大的选项。
需要帮助自动化数据清理并将其导入您的数据仓库或 ML 模型?我们的数据专家团队可以提供帮助! 联系我们 了解更多关于我们的服务和产品的信息。
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明
本文链接:https://www.qanswer.top/18408/04350608
原创文章,作者:ItWorker,如若转载,请注明出处:https://blog.ytso.com/287865.html