用Pandas精简数据输入
数据输入是将数据从不同的来源转移到一个方法的过程,在那里它可以被分析、归档或被一个机构利用。在这个过程中,通常的步骤是将数据从其当前的位置引出,转换数据,最后将其加载到一个位置,以便进行有效的研究。Python提供了许多这样的工具,以及数据摄取的框架。这些工具包括Bonobo、Beautiful Soup4、Airflow、Pandas等等。在这篇文章中,我们将学习使用Pandas库进行数据摄取。
用Pandas进行数据摄取:
Pandas的数据输入,是将数据从各种来源转移到PandasDataFrame结构中的过程。数据源可以是不同的文件格式,如逗号分隔数据、JSON、HTML网页表格、Excel。在这篇文章中,我们将学习,将数据,从这些格式,转移到目的地,也就是PandasDataFrame对象。
步骤:
将任何此类数据传输到DataFrame对象的基本方法如下
- 准备好你的源数据。
- 数据可以存在于任何远程服务器上,或者,在本地机器上。如果是在远程服务器上,我们需要知道文件的URL。如果数据存在于本地,则需要本地机器上的文件路径。
- 使用潘达的’read_x’方法
- Pandas提供了’read_x’方法,用于加载和转换数据,进入Dataframe对象。
- 根据数据格式,使用 “读取 “方法。
- 打印DataFrame对象的数据。
- 打印DataFrame对象,以验证转换是否顺利。
摄取的文件格式:
在这篇文章中,我们将把以下文件中的数据转换为DataFrame结构
1.从CSV文件中读取数据
2.从Excel文件中读取数据
3.从JSON文件中读取数据
4.从剪贴板上读取数据
5.从网页的HTML表格中读取数据
6.从SQLite表中读取数据
从CSV文件中读取数据。
为了加载逗号分隔文件(CSV)中的数据,我们将遵循以下步骤。
- 准备好你的样本数据集。在这里,我们有一个CSV文件,包含了关于印度都市的信息。它描述了该城市是一线还是二线城市,它们的地理位置,它们所属的州,以及它是否是一个沿海城市。
- 使用Pandas方法 “read_csv”。
- 使用的方法 – read_csv(file_path)
- 参数 – 字符串格式,包含文件的路径和它的名字,或者,如果在远程服务器上有URL。它读取文件数据,并将其转换为一个有效的二维DataFrame对象。这个方法可以用来读取以”.csv “和”.txt “文件格式存在的数据。
该文件内容如下。
gfg_indianmetros.csv “文件的内容
获取PandasDataFrame中的数据的代码是。
# Import the Pandas library
import pandas
# Load data from Comma separated file
# Use method - read_csv(filepath)
# Parameter - the path/URL of the CSV/TXT file
dfIndianMetros = pandas.read_csv("gfg_indianmetros.csv")
# print the dataframe object
print(dfIndianMetros)
输出:
CSV数据,以DataFrame为对象
从Excel文件中读取数据
为了加载Excel文件(.xlsx, .xls)中的数据,我们将按照以下步骤操作
- 准备好你的样本数据集。在这里,我们有一个Excel文件,包含了关于面包店及其分店的信息。它描述了员工的数量,面包店的分支机构的地址。
- 使用Pandas方法’read_excel’ .
- 使用的方法 – read_excel(file_path)
- 参数 – 该方法接受,文件的路径和它的名字,以字符串格式作为参数。该文件可以在远程服务器上,也可以在本地的机器上。它读取文件数据,并将其转换为一个有效的二维DataFrame对象。这个方法可以用来读取”.xlsx “和”.xls “文件格式中的数据。
该文件内容如下。
gfg_bakery.xlsx “文件的内容
在Pandas DataFrame中获取数据的代码是。
# Import the Pandas library
import pandas
# Load data from an Excel file
# Use method - read_excel(filepath)
# Method parameter - The file location(URL/path) and name
dfBakery = pandas.read_excel("gfg_bakery.xlsx")
# print the dataframe object
print(dfBakery)
输出:
Excel的数据,在DataFrame对象中
从JSON文件中读取数据
为了加载JavaScript对象符号文件(.json)中的数据,我们将遵循以下步骤。
- 准备好你的样本数据集。在这里,我们有一个JSON文件,包含关于国家和它们的拨号代码的信息。
- 使用Pandas方法’read_json’ 。
- 使用的方法 – read_json(file_path)
- 参数 – 这个方法,接受文件的路径和它的名字,以字符串格式,作为一个参数。它读取文件数据,并将其转换为一个有效的二维DataFrame对象。
该文件内容如下。
gfg_codecountry.json “文件的内容
在Pandas DataFrame中获取数据的代码是。
# Import the Pandas library
import pandas
# Load data from a JSON file
# Use method - read_json(filepath)
# Method parameter - The file location(URL/path) and name
dfCodeCountry = pandas.read_json("gfg_codecountry.json")
# print the dataframe object
print(dfCodeCountry)
输出:
DataFrame对象中的JSON数据
从剪贴板上读取数据
我们也可以将剪贴板中的数据转移到一个DataFrame对象中。剪贴板是随机存取存储器(RAM)的一部分,复制的数据存在于其中。每当我们使用 “复制 “命令复制任何文件、文本、图像或任何类型的数据时,它都会被存储在剪贴板中。要转换这里的数据,请按照下面提到的步骤进行。
- 选择该文件的所有内容。该文件应该是一个CSV文件。它也可以是一个’.txt’文件,包含逗号分隔的值,如例子所示。请注意,如果文件内容的格式不合适,那么,在运行时可能会出现解析器错误。
- 右键单击并说复制。现在,这些数据被转移到电脑剪贴板上。
- 使用Pandas方法’read_clipboard’ 。
- 使用的方法 – read_clipboard
- 参数 – 该方法不接受任何参数。它读取剪贴板中最新复制的数据,并将其转换为一个有效的二维DataFrame对象。
选择的文件内容如下。
gfg_clothing.txt “文件的内容
在Pandas DataFrame中获取数据的代码是。
# Import the required library
import pandas
# Copy file contents which are in proper format
# Whatever data you have copied will
# get transferred to dataframe object
# Method does not accept any parameter
pdCopiedData = pd.read_clipboard()
# Print the data frame object
print(pdCopiedData)
输出:
剪贴板的数据,以DataFrame为对象
从HTML文件中读取数据
一个网页通常由HTML元素组成。<head> <title> <table> <div>
根据在浏览器上显示数据的目的,</div></table></title></head>
有不同的HTML标签,如<head>、<title>、、<table>、<div>
。我们可以将<table>
HTML网页中的元素</table>
内容转移<table>
到Pandas DataFrame对象中。按照下面提到的步骤进行
</table></div></table></title></head>
- 选择所有存在于
<table>
,开始和结束标签之间的</table>
元素<table>
。把它,分配给一个Python变量。
</table>
- 使用Pandas方法’read_html’ 。
- 使用的方法 – read_html(
<table>
标签</table>
内的字符串)<table>
</table>
- 参数 – 该方法接受字符串变量,包含
<table>
标签</table>
之间存在的元素<table>
。它读取这些元素,遍历表格<tr>
和<td>
标签,并将其转换为一个列表对象。列表对象的第一个元素是所需的DataFrame对象。
</td></tr></table>
使用的HTML网页如下。
<!DOCTYPE html>
<html>
<head>
<title>Data Ingestion with Pandas Example</title>
</head>
<body>
<h2>Welcome To GFG</h2>
<table>
<thead>
<tr>
<th>Date</th>
<th>Empname</th>
<th>Year</th>
<th>Rating</th>
<th>Region</th>
</tr>
</thead>
<tbody>
<tr>
<td>2020-01-01</td>
<td>Savio</td>
<td>2004</td>
<td>0.5</td>
<td>South</td>
</tr>
<tr>
<td>2020-01-02</td>
<td>Rahul</td>
<td>1998</td>
<td>1.34</td>
<td>East</td>
</tr>
<tr>
<td>2020-01-03</td>
<td>Tina</td>
<td>1988</td>
<td>1.00023</td>
<td>West</td>
</tr>
<tr>
<td>2021-01-03</td>
<td>Sonia</td>
<td>2001</td>
<td>2.23</td>
<td>North</td>
</tr>
</tbody>
</table>
</body>
</html>
编写以下代码来转换Pandas Dataframe对象中的HTML表格内容。
# Import the Pandas library
import pandas
# Variable containing the elements
# between <table> tag from webpage
html_string = """
<table>
<thead>
<tr>
<th>Date</th>
<th>Empname</th>
<th>Year</th>
<th>Rating</th>
<th>Region</th>
</tr>
</thead>
<tbody>
<tr>
<td>2020-01-01</td>
<td>Savio</td>
<td>2004</td>
<td>0.5</td>
<td>South</td>
</tr>
<tr>
<td>2020-01-02</td>
<td>Rahul</td>
<td>1998</td>
<td>1.34</td>
<td>East</td>
</tr>
<tr>
<td>2020-01-03</td>
<td>Tina</td>
<td>1988</td>
<td>1.00023</td>
<td>West</td>
</tr>
<tr>
<td>2021-01-03</td>
<td>Sonia</td>
<td>2001</td>
<td>2.23</td>
<td>North</td>
</tr>
<tr>
<td>2008-01-03</td>
<td>Milo</td>
<td>2008</td>
<td>3.23</td>
<td>East</td>
</tr>
<tr>
<td>2006-01-03</td>
<td>Edward</td>
<td>2005</td>
<td>0.43</td>
<td>West</td>
</tr>
</tbody>
</table>"""
# Pass the string containing html table element
df = pandas.read_html(html_string)
# Since read_html, returns a list object,
# extract first element of the list
dfHtml = df[0]
# Print the data frame object
print(dfHtml)
输出:
HTML<table>
数据,在DataFrame对象中</table>
。<table></table>
从SQL表中读取数据
我们也可以将数据库表中的数据转换为有效的DataFrame对象。Python允许轻松地与各种数据库接口,如SQLite、MySQL、MongoDB等。SQLite是一个轻量级的数据库,它可以嵌入到任何程序中。SQLite数据库持有所有相关的SQL表。我们可以将SQLite表的数据加载到Pandas数据框对象中。按照下面提到的步骤
- 使用 “DB Browser for SQLite工具 “或任何此类工具准备一个SQLite表样本。这些工具可以毫不费力地创建、编辑与SQLite兼容的数据库文件。数据库文件,有一个’.db’文件扩展名。在这个例子中,我们有‘Novels.db’文件,包含一个叫做 “novels “的表。这个表有关于小说的信息,如小说名称、价格、流派等。
- 在这里,为了连接到数据库,我们将在代码中导入 “sqlite3 “模块。sqlite3模块是一个接口,用于连接到SQLite数据库。从Python 2.5版本开始,sqlite3库就包含在Python中。因此,不需要单独安装。为了连接到数据库,我们将使用 SQLite 方法 ‘connect’,它返回一个连接对象。该连接方法接受以下参数。
- database_name – 表所在的数据库的名称。这是一个扩展名为.db的文件。如果该文件存在,将返回一个开放的连接对象。如果文件不存在,会先创建它,然后返回一个连接对象。
- 使用Pandas方法 “read_sql_query”。
- 使用的方法 – read_sql_query
- 参数 – 该方法接受以下参数
- SQL查询 – 选择查询,从表中获取所需的行。
- 连接对象 – 由’connect’方法返回的连接对象。read_sql_query方法,将查询的结果行转换为一个数据帧对象。
- 使用打印方法打印DataFrame对象。
Novels.db数据库文件看起来如下 –
使用DB Browser for SQLite工具看到的小说表
编写以下代码,在PandasDataFrame对象中,转换小说表。
# Import the required libraries
import sqlite3
import pandas
# Prepare a connection object
# Pass the Database name as a parameter
conn = sqlite3.connect("Novels.db")
# Use read_sql_query method
# Pass SELECT query and connection object as parameter
pdSql = pd.read_sql_query("SELECT * FROM novels", conn)
# Print the dataframe object
print(pdSql)
# Close the connection object
conn.close()
输出:
DataFrame对象中的小说表数据