五个简单有效的Python清理数据脚本分享
作者:佚名 发布时间:2021-11-01 08:08:50
标签:Python,Pandas,清理,数据
将 PDF 转换为 CSV
在机器学习中,我们应该少一些“数据清理”,多一些“数据准备”。当我们需要从白皮书、电子书或其他PDF文档中抓取数据时,这个脚本为我节省了很多时间。
import tabula
#获取文件
pdf_filename = input ("Enter the full path and filename: ")
# 提取PDF的内容
frame = tabula.read_pdf(pdf_filename, encoding = 'utf-8', pages='all')
#根据内容创建CSV文件
frame.to_csv('pdf_conversion.csv')
这是一种相对简单的快速提取数据的方法,可以在将数据导入机器学习数据库、Tableau或Count等工具。
合并 CSV 文件
许多系统会提供导出到CSV选项,但是没有办法在导出数据之前首先合并数据。这可能导致5个以上的文件导出到一个文件夹,这些文件包含相同的数据类型。该Python脚本通过获取这些文件)并将它们合并到一个文件中来解决这个问题。
from time import strftime
import pandas as pd
import glob
# 定义包含CSV文件的文件夹的路径
path = input('Please enter the full folder path: ')
#确保后面有一个斜杠
if path[:-1] != "/":
path = path + "/"
#以列表形式获取CSV文件
csv_files = glob.glob(path + '*.csv')
#打开每个CSV文件并合并为一个文件
merged_file = pd.concat( [ pd.read_csv(c) for c in csv_files ] )
#创建新文件
merged_file.to_csv(path + 'merged_{}.csv'.format(strftime("%m-%d-%yT%H:%M:%S")), index=False)
print('Merge complete.')
最终输出将为您提供一个 CSV 文件,其中包含您从源系统导出的 CSV 列表中的所有数据。
从 CSV 文件中删除重复的行
如果您需要从CSV文件中删除重复的数据行,这可以帮助您快速执行清理操作。当机器学习数据集中拥有重复数据时,这会直接影响可视化工具或机器学习项目中的结果。
import pandas as pd
# 获取文件名
filename = input('filename: ')
#定义要检查是否重复的CSV列名
duplicate_header = input('header name: ')
#获取文件的内容
file_contents = pd.read_csv(filename)
# 删除重复的行
deduplicated_data = file_contents.drop_duplicates(subset=[duplicate_header], keep="last", inplace=True)
#创建新文件
deduplicated_data.to_csv('deduplicated_data.csv')
拆分 CSV 列
当从其他系统导出文件时,它有时会包含一列数据,而我们需要将其作为两列。
import pandas as pd
#获取文件名并定义列
filename = input('filename: ')
col_to_split = input('column name: ')
col_name_one = input('first new column: ')
col_name_two = input('second new column: ')
#将CSV数据添加到dataframe中
df = pd.read_csv(filename)
# 拆分列
df[[col_name_one,col_name_two]] = df[col_to_split].str.split(",", expand=True)
#创建新csv文件
df.to_csv('split_data.csv')
合并不同的数据集
假设您有一个帐户列表和与其关联的订单,并希望查看订单历史以及关联的帐户详细信息。一个很好的方法就是通过合并数据到一个CSV文件。
import pandas as pd
#获取文件名并定义用户输入
left_filename = input('LEFT filename: ')
right_filename = input('RIGHT filename: ')
join_type = input('join type (outer, inner, left, right): ')
join_column_name = input('column name(i.e. Account_ID): ')
#读取文件到dataframes
df_left = pd.read_csv(left_filename)
df_right = pd.read_csv(right_filename)
#加入dataframes
joined_data = pd.merge(left = df_left, right = df_right, how = join_type, on = join_column_name)
#创建新的csv文件
joined_data.to_csv('joined_data.csv')
最后
这些脚本可以有效帮助我们进行自动化清理数据,然后可以将清理后的数据加载到机器学习模型中进行处理。Pandas是操作数据的首选库,因为它提供了许多的选项。
来源:https://www.51cto.com/article/718638.html
0
投稿
猜你喜欢
- 在python中我们可以使用requests模块来实现调用远程接口一:安装requests模块pip install requests二:使
- 指定的代码页特性无效。 codepage属性:是指出网页的代码页 如果制作的网页脚本与WEB服务端的默认代码页不同,则必须指明代码页: 代码
- 目录通过python的tkinter实现简单的注册登录代码截图登录页面注册页面个人主页修改个人信息失败修改个人信息成功重新登录twb总结通过
- 课程亮点系统分析目标网页html标签数据解析方法海量图片数据一键保存环境介绍python 3.8pycharm模块使用requests &g
- 本文实例讲述了python实现linux下使用xcopy的方法。分享给大家供大家参考。具体如下:这个python函数模仿windows下的x
- 前言:我们想要在爬虫中使用xpath、beautifulsoup、正则表达式,css选择器等来提取想要的数据,但是因为scrapy是一个比较
- 目录赋值语句直接赋值:增量赋值: 链式赋值: 多重赋值:语法糖:基本输入:input()函数:eval()函数:&nbs
- 目录1. 双向循环的练习2. break_pass_continue的使用3. for循环小提示:4. 小练习问题:答案:总结1. 双向循环
- 我正在参加天池上的一个竞赛,刚开始用的是DenseNet121但是效果没有达到预期,因此开始尝试使用模型融合,将Desenet和Xcepti
- 前言python本身使用 \ 来转义一些特殊字符,比如在字符串中加入引号的时候s = 'i\'m superman'
- 废话不多说,看代码吧!import tkinterfrom tkinter import ttkdef go(*args): #
- PyMongo是什么PyMongo是驱动程序,使python程序能够使用Mongodb数据库,使用python编写而成.安装环境
- 如果您是HTML的初学者,请您先自学HTML。因为DHTML是现有的HTML技术的一个综合,所以HTML语言对学习动态HTML是
- Turtle库是Python内置的图形化模块,属于标准库之一,位于Python安装目录的lib文件夹下,常用函数有以下几种:画笔控制函数pe
- 如下所示:list = [‘a','b','c']想用for循环输出list的元素以及对应的索引。代
- 最近无意看到网上有人使用Python编写几十行代码生成图像验证码,感觉很是繁琐,这里为各位朋友推荐两种方法,使用4行Python代码即可生成
- 目标嗯,我们知道搜索或浏览网站时会有很多精美、漂亮的图片。我们下载的时候,得鼠标一个个下载,而且还翻页。那么,有没有一种方法,可以使用非人工
- 前言:我们写Python基本不需要自己创建抽象基类,而是通过鸭子类型来解决大部分问题。《流畅的Python》作者使用了15年Python,但
- 任何事情都是由量变到质变的过程,学习Python也不例外。只有把一个语言中的常用函数了如指掌了,才能在处理问题的过程中得心应手,快速地找到最
- 实现效果将位于/img目录下的1000张.png图片,转换成.webp格式,并存放于img_webp文件夹内。源图片目录目标图片目录关于批量