如果您以前曾在 Python 中使用过 Pandas,您就会知道可以通过多种不同的方式导入表格数据。
Pandas 可能是使用最广泛的用于加载、操作和导出数据的 Python 包之一。
虽然您可能熟悉使用 pandas 读取和写入数据的许多不同方法,但您可能没有意识到一些可能并不像您想象的那么明显的快捷方式/技巧。 这可以使导入数据变得更加容易和快速。这篇博文仅探讨了其中的五种技术.
1. 从url导入csv
您可能非常熟悉 pd.read_csv() 方法可以导入csv文件的, 其实ta还可以通过 HTTP 从 URL 读取数据。
网络访问 CSV 文件,而不是在本地存储所有文件, 可以省去手动下载内容的麻烦。
import pandas as pd
url = 'csv文件的网络连接'
df = pd.read_csv(url)
2. 导入html网页中的表格
如果您曾经阅读过 pandas 文档,您可能会遇到 pd.read_html() 方法。 与 pd.read_csv() 非常相似,它也具有从 URL 导出数据的附加功能。 让这更酷的是,您可以提供一个包含许多表格的网站的 URL,它会抓取所有表格。
例如,考虑维基百科文章“英国经济”。 这篇文章可以被抓取如下。
url = 'https://en.wikipedia.org/wiki/Economy_of_the_United_Kingdom'
df_tables = pd.read_html(url)
3. JSON规范化
有时,当您处理 JSON 数据时, JSON 内往往包含多层嵌套。 对于要转换为表格数据的 JSON 对象,它们需要被展平(嵌套深度为 1)。
pandas 提供了一种使用 pd.json_normalize() 方法来执行此操作的方法。例如,考虑以下 JSON 对象(在 pandas 文档中用作示例)
data = [
{
"id": 1,
"name": "Cole Volk",
"fitness": {"height": 130, "weight": 60},
},
{"name": "Mark Reg", "fitness": {"height": 130, "weight": 60}},
{
"id": 2,
"name": "Faye Raker",
"fitness": {"height": 130, "weight": 60},
},
]
data
Run
[{'id': 1, 'name': 'Cole Volk', 'fitness': {'height': 130, 'weight': 60}},
{'name': 'Mark Reg', 'fitness': {'height': 130, 'weight': 60}},
{'id': 2, 'name': 'Faye Raker', 'fitness': {'height': 130, 'weight': 60}}]
data包含多层嵌套对象的属性(在本例中为“健身”)。 使用 pd.json_normalize() 可以折叠成表格。
注意:可以添加可选参数 max_level 以指定要折叠的最大嵌套级别数。 默认情况下,它将标准化所有级别。
df = pd.json_normalize(data)
df
Run
id | name | fitness.height | fitness.weight | |
---|---|---|---|---|
0 | 1.0 | Cole Volk | 130 | 60 |
1 | NaN | Mark Reg | 130 | 60 |
2 | 2.0 | Faye Raker | 130 | 60 |
4. 从剪贴板导入
pd.read_clipboard() 方法可用于捕获存储在剪贴板上的任何数据。
默认情况下,此方法接受正则表达式 \s+ 作为分隔值的分隔符。 或者,您可以使用自己的正则表达式。
df = pd.read_clipboard(sep='\\s+')
5. 从Excel导入
假设有人向您发送了一些存储在 excel 电子表格中的数据,可以使用 pd.read_excel() 方法读取数据,就好像它是一个简单的 CSV 文件一样。
要记住的一件事是,电子表格软件允许用户使用单个文件中的工作表来分割多个电子表格。 使用 sheet_name 参数可以实现从 特定工作表 访问数据。
df = pd.read_excel('my_spreadsheet.xlsx', sheet_name='Sheet 1')