简介
导入数据是任何与数据相关的问题中最基础、也是最先进行的步骤之一。能够正确导入数据是每位立志成为数据科学家的必备技能。
数据以多种形式存在,您不仅需要了解如何导入不同的数据格式,还需要掌握如何分析和处理数据以获得有用的洞见。
pandas 是一个开源的 Python 库,易于使用、性能高,为多种数据格式提供数据分析工具。
它可以读取多种数据格式,如 CSV、JSON、Excel、Pickle 等。它允许您以行和列的表格形式呈现数据,使数据更易读、也更便于展示。
pandas 以 DataFrame 形式表示数据,并为数据分析与数据处理提供了广泛的功能。一旦您开始利用 pandas 的各种功能从数据中提取有意义的信息,便可将这些数据用于分析、预测、分类等更多任务!
pandas 提供了输入与输出 API,包含一组顶层的 reader 和 writer 函数。读取函数通过 pandas.read_json() 调用并返回一个 pandas 对象;写入函数是对象方法,通过 pandas.to_json() 调用。
DataFrame 也有 Reader 和 Writer 函数。Reader 函数用于读取不同的数据格式,而 Writer 函数用于将数据保存为特定格式。
下面是 DataFrame 支持的数据格式。也就是说,如果您的数据是以下任一形式,您都可以使用 pandas 来加载该数据格式,甚至将其写入特定格式。
在今天的教程中,您将使用上述格式中的几种:JSON、HTML 和 Pickle。
注意:查看这篇教程,了解如何使用 pandas 读取 CSV 文件。
加载 JSON 数据
JSON(JavaScript 对象表示法)是一种用于数据交换的文本序列化格式。JSON 易于阅读和编写。它基于 JavaScript 语言的一个子集,但也沿用了 Python 以及许多其他语言中的约定。
JSON 多用于存储非结构化数据,SQL 数据库保存此类数据较为困难。JSON 让机器能够读取并访问数据。
JSON 主要建立在两种结构之上:
现在让我们看看如何用多种方式加载 JSON 数据。
第一个 JSON 数据集来自这个链接。数据是键值字典格式。共有三个键:integer、datetime 和 category。
- 首先,导入
pandas 库,然后将 URL 传给 pd.read_json(),它会返回一个 dataframe。dataframe 的列对应 JSON 的键,行对应值。
import pandas as pd
json = pd.read_json('https://raw.githubusercontent.com/chrisalbon/simulated_datasets/master/data.json')
技术支持
我们用 .tail() 函数快速打印您刚读取的 JSON 的最后几行。
json.tail(6)
技术支持
| | integer | datetime | category |
|---|
| 94 | 5 | 2015-01-01 00:01:34 | 0 |
|---|
| 95 | 9 | 2015-01-01 00:01:35 | 0 |
|---|
| 96 | 8 | 2015-01-01 00:01:36 | 0 |
|---|
| 97 | 6 | 2015-01-01 00:01:37 | 0 |
|---|
| 98 | 8 | 2015-01-01 00:01:38 | 0 |
|---|
| 99 | 1 | 2015-01-01 00:01:39 | 0 |
|---|
json.shape
技术支持
(100, 3)
技术支持
从上述输出可以看到,总共有三列:integer、datetime 和 category。数据集中有 100 条样本,这一点也可从返回 100 x 3 的 .shape 结果得到验证。
写入 JSON 数据和读取一样简单,只需一行代码。使用 to_json() 并传入文件名,而不是 read_json(),就可以了!
json.to_json('dataframe.json')
技术支持
接下来,您将使用另一种不那么简单的 JSON 数据集。这是一个 嵌套 JSON 结构。所谓嵌套 JSON,是指每个 key 下还可以包含更多的 key。
让我们通过示例数据集更好地理解它。
nested_json = """{
"article": [
{
"id":"01",
"language": "JSON",
"edition": "first",
"author": "Allen"
},
{
"id":"02",
"language": "Python",
"edition": "second",
"author": "Aditya Sharma"
}
],
"blog":[
{
"name": "Datacamp",
"URL":"datacamp.com"
}
]
}"""
技术支持
在上述数据集中,您可以看到 article 和 blog 是两个主键,其下分别有对应的 values。这些值本身又是由各自的 键-值 组合构成。
注意,上述数据集被包裹在 双引号 中,形式为字符串。
读取嵌套 JSON 有多种方法。
首先,您将使用 json.loads 函数来读取 JSON 字符串,将数据变量作为参数传入。然后,使用 json_normalize 函数将嵌套的 JSON 数据拉平成表格。
您将从 pandas.io.json 库中导入 json_normalize 函数。
import json
from pandas.io.json import json_normalize
nested = json.loads(nested_json)
技术支持
nested
技术支持
{'article': [{'id': '01',
'language': 'JSON',
'edition': 'first',
'author': 'Allen'},
{'id': '02',
'language': 'Python',
'edition': 'second',
'author': 'Aditya Sharma'}],
'blog': [{'name': 'Datacamp', 'URL': 'datacamp.com'}]}
技术支持
接下来,使用 normalize 函数来拉平成 JSON。现在先传入完整数据,看看结果如何。
nested_full = json_normalize(nested)
技术支持
nested_full
技术支持
| | article | blog |
|---|
| 0 | [{'id': '01', 'language': 'JSON', 'edition': '... | [{'name': 'Datacamp', 'URL': 'datacamp.com'}] |
|---|
很好!如上所示,主键成为了 dataframe 的列,而键所对应的内容则作为行。
不过,这个输出看起来有点乱,对吧?我们看看如何将其进一步拆分为多个 dataframe。
您将再次把 json.loads 的输出传入 json_normalize,但这次会指定一个额外参数 record_path。
blog = json_normalize(nested,record_path ='blog')
技术支持
blog
技术支持
| | URL | name |
|---|
| 0 | datacamp.com | Datacamp |
|---|
article = json_normalize(nested,record_path ='article')
技术支持
article
技术支持
| | author | edition | id | language |
|---|
| 0 | Allen | first | 01 | JSON |
|---|
| 1 | Aditya Sharma | second | 02 | Python |
|---|
从上述输出可以看到,主键现在被拆分为两个不同的 dataframe,且这些 dataframe 的列名变成了原先嵌套在主键下的键。很棒,对吧?
最后,为了完成 JSON 数据加载部分,我们快速看看如何将 JSON 作为文件而不是字符串来读取。
nested_json = {
"article": [
{
"id":"01",
"language": "JSON",
"edition": "first",
"author": "Allen"
},
{
"id":"02",
"language": "Python",
"edition": "second",
"author": "Aditya Sharma"
}
],
"blog":[
{
"name": "Datacamp",
"URL":"datacamp.com"
}
]
}
技术支持
注意,在上述单元格中,数据开头和结尾没有双引号,这意味着您会将这些数据当作文件来读取。
只需一行代码即可实现。来看一下!
json_file = pd.DataFrame.from_dict(json_normalize(nested_json))
技术支持
json_file
技术支持
| | article | blog |
|---|
| 0 | [{'id': '01', 'language': 'JSON', 'edition': '... | [{'name': 'Datacamp', 'URL': 'datacamp.com'}] |
|---|
从上述输出可以看到,将 JSON 作为字符串读取时的结果与此类似。这里的区别在于,您使用 pandas 同时完成了解析与拉平。由于 JSON 是字典,因此使用 .from_dict() 函数。
加载 HTML 数据
HTML 是超文本标记语言,主要用于创建 Web 应用与网页。它尝试从语义上描述网页结构。Web 浏览器从 Web 服务器接收 HTML 文档,并将其渲染为多媒体网页。
在 Web 应用中,HTML 与层叠样式表(CSS)一起使用;在服务器端,它与 Flask、Django 等各类 Web 框架协同工作。
HTML 使用 标签 来定义每一段代码块,比如段落的 <p></p> 标签、在网页中添加图片内容的 <image></image> 标签,类似的还有很多标签共同组成一个 HTML 网页。
读取 HTML 文件时,pandas dataframe 会查找一个 标签。该标签是 <td></td> 标签,即用于在 HTML 中定义表格的标签。
pandas 使用 read_html() 来读取 HTML 文档。
因此,当您将 HTML 传给 pandas 并期望它输出一个美观的 dataframe 时,请确保该 HTML 页面中包含表格!
- 关于数据:您将使用一个包含多种加密货币的
Cryptocurrency 网站作为 HTML 数据集,并包含每种货币的多项信息,例如:
- 该币的最新价格(
Last price)
- 该币价是否上涨或下跌(百分比
%)
- 24 小时交易量(
24 volume)
- 币的总数量(
# Coins)
那么,开始吧!
首先导入 requests 库,它可帮助您向希望获取 HTML 内容的 URL 发送请求。
import requests
技术支持
url = 'https://www.worldcoinindex.com/'
技术支持
crypto_url = requests.get(url)
技术支持
crypto_url
技术支持
<Response [200]>
技术支持
到目前为止,您已定义了 URL,并使用 requests.get() 向该 URL 发送了请求,收到的响应是 acknowledgement [200] OK,这表示已经成功连接到该 web server。
现在,要读取该 HTML 网页的内容,您只需调用 crypto_url.text,它会返回该 cryptocurrency 网页的 HTML 代码。
您可以随意运行 crypto_url.text 命令查看输出。
最后,将 crypto_url.text 传给 pd.read_html() 函数,它将返回一个dataframe 列表,其中每个元素都是该 cryptocurrency 网页中的一个表格(dataframe)。
crypto_data = pd.read_html(crypto_url.text)
技术支持
我们打印该 dataframe 的 length 和 type。type 应为列表。
len(crypto_data), type(crypto_data)
技术支持
(1, list)
技术支持
从以上输出可知,该页面只有 1 个表格,类型为 list。
crypto_data = crypto_data[0]
技术支持
我们移除第一列和第二列,因为它们没有有用信息,保留所有行。
crypto_final = crypto_data.iloc[:,2:]
技术支持
最后,来打印这个 cryptocurrency 的 dataframe!
crypto_final.head()
技术支持
| | Name | Ticker | Last price | % | 24 high | 24 low | Price Charts 7d | 24 volume | # Coins | Market cap |
|---|
| 0 | bitcoin | BTC | $ 8,008.027 | +1.83% | $ 8,056.630 | $ 7,812.784 | NaN | $ 12.04B | 17.71M | $ 141.89B |
|---|
| 1 | ethereum | ETH | $ 251.72335 | +2.68% | $ 253.84721 | $ 242.95687 | NaN | $ 6.93B | 106.20M | $ 26.73B |
|---|
| 2 | litecoin | LTC | $ 98.633851 | +11.08% | $ 99.946324 | $ 88.618815 | NaN | $ 3.46B | 61.91M | $ 6.10B |
|---|
| 3 | bitcoincash | BCH | $ 411.94075 | +2.31% | $ 418.60850 | $ 394.18927 | NaN | $ 2.10B | 17.79M | $ 7.33B |
|---|
| 4 | eos | EOS | $ 6.4230717 | +6.05% | $ 6.4765695 | $ 6.0264079 | NaN | $ 2.06B | 1.01B | $ 6.50B |
|---|
从上表可以看出,Bitcoin 的 市值(Market Cap)最高。
删除 NaN(非数字)
dataframe 中有些值并非真实有效值,我们快速将它们从表中移除。
不过首先,完全删除 Price Charts 7d 列,因为它全是 NaN,没有任何信息。
del crypto_final['Price Charts 7d']
技术支持
crypto_final.head()
技术支持
| | Name | Ticker | Last price | % | 24 high | 24 low | 24 volume | # Coins | Market cap |
|---|
| 0 | bitcoin | BTC | $ 8,008.027 | +1.83% | $ 8,056.630 | $ 7,812.784 | $ 12.04B | 17.71M | $ 141.89B |
|---|
| 1 | ethereum | ETH | $ 251.72335 | +2.68% | $ 253.84721 | $ 242.95687 | $ 6.93B | 106.20M | $ 26.73B |
|---|
| 2 | litecoin | LTC | $ 98.633851 | +11.08% | $ 99.946324 | $ 88.618815 | $ 3.46B | 61.91M | $ 6.10B |
|---|
| 3 | bitcoincash | BCH | $ 411.94075 | +2.31% | $ 418.60850 | $ 394.18927 | $ 2.10B | 17.79M | $ 7.33B |
|---|
| 4 | eos | EOS | $ 6.4230717 | +6.05% | $ 6.4765695 | $ 6.0264079 | $ 2.06B | 1.01B | $ 6.50B |
|---|
现在我们移除所有 NaN。
crypto_final = crypto_final.dropna()
技术支持
可视化加密货币(Ticker)与涨跌幅(%)
首先导入 matplotlib 以绘制图表。
import matplotlib.pyplot as plt
%matplotlib inline
技术支持
% 列的类型为 string,需要将其转换为 float。先移除该列中的 % 符号,再将该列类型转换为 float。
crypto_final['%'] = crypto_final['%'].apply(lambda x: x.strip('%'))
技术支持
crypto_final['%'] = crypto_final['%'].astype('float')
技术支持
现在来绘制数据。
plt.figure()
plt.figure(figsize=(16,10))
x = crypto_final.iloc[:20]['Ticker']
y = crypto_final.iloc[:20]['%']
plt.xticks(fontsize=12)
plt.yticks(fontsize=14)
plt.xlabel('Percentage Increase/Decrease in Price',fontsize=20)
plt.ylabel('Ticker',fontsize=20)
plt.plot(x,y,label='% Increase/Decrease in Price')
plt.legend(loc='lower left',prop={'size': 15})
技术支持
<matplotlib.legend.Legend at 0x1298a9630>
<Figure size 432x288 with 0 Axes>
技术支持
从上述图表可以看出,Litecoin (LTC) 和 Huobitoken (HT) 的涨幅最大,而 Maticnetwork (MATIC) 和 Waves 的跌幅最大。
加载 Pickle 数据
Pickle 是 Python 专用的二进制序列化格式,与 JSON 不同,它不适合人类直接阅读。它用于序列化和反序列化 Python 的对象结构。它会将对象序列化并“Pickle”后保存到磁盘,将 DataFrame、list、dictionary 等对象转换为字节流。
Pickle 的最大优点是能够存储多种 Python 数据类型。
Pickle 被广泛用于保存已训练的机器学习算法实例。与 JSON 一样,Pickle 也提供了便捷函数,如用于加载 Pickle 格式文件的 pickle.load(),以及用于以 Pickle 格式保存对象的 pickle.dump()。
使用 Pickle 的另一个重要优势是,将 dataframe 保存为 Pickle 文件占用的磁盘空间更小,并且在重新加载时可保持数据的类型不变。
那么,让我们快速将之前构建的加密货币 dataframe 进行 pickle 序列化,然后使用 pandas 读取这个已 pickled 的对象。
import pickle
技术支持
您将使用 pickle.dump 将 dataframe 保存为 Pickle 对象,并将 protocol 设为 HIGHEST_PROTOCOL,它也能向后兼容 Python 2。
with open('crypto_final.pickle', 'wb') as sub_data:
pickle.dump(crypto_final, sub_data, protocol=pickle.HIGHEST_PROTOCOL)
技术支持
最后,使用 pandas 的 read_pickle 函数将 pickle 对象转换为 dataframe。
crypto_final = pd.read_pickle('crypto_final.pickle')
技术支持
crypto_final.head()
技术支持
| | Name | Ticker | Last price | % | 24 high | 24 low | 24 volume | # Coins | Market cap |
|---|
| 0 | bitcoin | BTC | $ 7,776.567 | +1.81% | $ 7,870.205 | $ 7,506.518 | $ 12.70B | 17.71M | $ 137.78B |
|---|
| 1 | ethereum | ETH | $ 241.81372 | -0.97% | $ 245.57293 | $ 232.62523 | $ 7.47B | 106.18M | $ 25.67B |
|---|
| 2 | litecoin | LTC | $ 88.062811 | +0.33% | $ 88.946501 | $ 85.248641 | $ 2.59B | 61.90M | $ 5.45B |
|---|
| 3 | bitcoincash | BCH | $ 388.76089 | +0.06% | $ 398.27697 | $ 370.29831 | $ 2.33B | 17.79M | $ 6.91B |
|---|
| 4 | eos | EOS | $ 5.9327948 | -0.41% | $ 6.0163442 | $ 5.7789154 | $ 1.99B | 1.01B | $ 6.00B |
|---|
哇!是不是很棒?过程非常直接。而且,使用 Pickle,您无需担心数据类型转换错误,因为 pickle 的序列化可以帮您处理!
进一步学习
恭喜您完成本教程。
本教程是使用 pandas 在 Python 中加载不同数据格式的良好起点。
仍然有许多数据格式,如 Excel、SQL、HDF5 等,都在 pandas 的数据导入范围内。建议您去寻找一些这些格式的有趣公共数据集并动手实践。
如果您想进一步学习 pandas 中的 DataFrame,欢迎参加 DataCamp 的使用 pandas 进行数据处理互动课程。DataCamp 还有多篇实用的 pandas 教程,涵盖连接 dataframes、实现移动平均以及使用 apply 方法。或者,如果您完全是 pandas 初学者,请从这篇 pandas 新手指南教程开始。
参考资料:
如对本教程有任何疑问,欢迎在下方评论区留言。
简介
导入数据是任何与数据相关的问题中最基础、也是最先进行的步骤之一。能够正确导入数据是每位立志成为数据科学家的必备技能。
数据以多种形式存在,您不仅需要了解如何导入不同的数据格式,还需要掌握如何分析和处理数据以获得有用的洞见。
pandas是一个开源的 Python 库,易于使用、性能高,为多种数据格式提供数据分析工具。它可以读取多种数据格式,如 CSV、JSON、Excel、Pickle 等。它允许您以行和列的表格形式呈现数据,使数据更易读、也更便于展示。
pandas以 DataFrame 形式表示数据,并为数据分析与数据处理提供了广泛的功能。一旦您开始利用 pandas 的各种功能从数据中提取有意义的信息,便可将这些数据用于分析、预测、分类等更多任务!pandas提供了输入与输出 API,包含一组顶层的reader和writer函数。读取函数通过pandas.read_json()调用并返回一个 pandas 对象;写入函数是对象方法,通过pandas.to_json()调用。DataFrame 也有
Reader和Writer函数。Reader函数用于读取不同的数据格式,而Writer函数用于将数据保存为特定格式。下面是 DataFrame 支持的数据格式。也就是说,如果您的数据是以下任一形式,您都可以使用 pandas 来加载该数据格式,甚至将其写入特定格式。
在今天的教程中,您将使用上述格式中的几种:
JSON、HTML和Pickle。注意:查看这篇教程,了解如何使用 pandas 读取
CSV文件。加载 JSON 数据
JSON(JavaScript 对象表示法)是一种用于数据交换的文本序列化格式。JSON 易于阅读和编写。它基于 JavaScript 语言的一个子集,但也沿用了 Python 以及许多其他语言中的约定。
JSON 多用于存储非结构化数据,SQL 数据库保存此类数据较为困难。JSON 让机器能够读取并访问数据。
JSON 主要建立在两种结构之上:
键/值对的集合。在 Python 中,键/值对称为
Dictionary(字典)。key是唯一的属性,而值则不一定唯一。有序的值列表。有序列表有时也可以是列表的列表。Python 中的列表是一组值,可以是字符串、整数等。
现在让我们看看如何用多种方式加载
JSON数据。第一个
JSON数据集来自这个链接。数据是键值字典格式。共有三个键:integer、datetime 和 category。pandas库,然后将URL传给pd.read_json(),它会返回一个 dataframe。dataframe 的列对应 JSON 的键,行对应值。我们用
.tail()函数快速打印您刚读取的 JSON 的最后几行。从上述输出可以看到,总共有三列:
integer、datetime和category。数据集中有 100 条样本,这一点也可从返回 100 x 3 的.shape结果得到验证。写入
JSON数据和读取一样简单,只需一行代码。使用to_json()并传入文件名,而不是read_json(),就可以了!接下来,您将使用另一种不那么简单的
JSON数据集。这是一个嵌套 JSON结构。所谓嵌套 JSON,是指每个key下还可以包含更多的key。让我们通过示例数据集更好地理解它。
在上述数据集中,您可以看到
article和blog是两个主键,其下分别有对应的values。这些值本身又是由各自的键-值组合构成。注意,上述数据集被包裹在
双引号中,形式为字符串。读取嵌套 JSON 有多种方法。
首先,您将使用
json.loads函数来读取 JSON 字符串,将数据变量作为参数传入。然后,使用json_normalize函数将嵌套的 JSON 数据拉平成表格。您将从
pandas.io.json库中导入json_normalize函数。接下来,使用 normalize 函数来拉平成 JSON。现在先传入完整数据,看看结果如何。
很好!如上所示,主键成为了 dataframe 的列,而键所对应的内容则作为行。
不过,这个输出看起来有点乱,对吧?我们看看如何将其进一步拆分为多个 dataframe。
您将再次把
json.loads的输出传入json_normalize,但这次会指定一个额外参数record_path。从上述输出可以看到,主键现在被拆分为两个不同的 dataframe,且这些 dataframe 的列名变成了原先嵌套在主键下的键。很棒,对吧?
最后,为了完成 JSON 数据加载部分,我们快速看看如何将 JSON 作为文件而不是字符串来读取。
注意,在上述单元格中,数据开头和结尾没有双引号,这意味着您会将这些数据当作文件来读取。
只需一行代码即可实现。来看一下!
从上述输出可以看到,将 JSON 作为字符串读取时的结果与此类似。这里的区别在于,您使用
pandas同时完成了解析与拉平。由于 JSON 是字典,因此使用.from_dict()函数。加载 HTML 数据
HTML 是超文本标记语言,主要用于创建 Web 应用与网页。它尝试从语义上描述网页结构。Web 浏览器从 Web 服务器接收 HTML 文档,并将其渲染为多媒体网页。
在 Web 应用中,HTML 与层叠样式表(CSS)一起使用;在服务器端,它与 Flask、Django 等各类 Web 框架协同工作。
HTML 使用
标签来定义每一段代码块,比如段落的<p></p>标签、在网页中添加图片内容的<image></image>标签,类似的还有很多标签共同组成一个 HTML 网页。读取 HTML 文件时,
pandasdataframe 会查找一个标签。该标签是<td></td>标签,即用于在 HTML 中定义表格的标签。pandas使用read_html()来读取 HTML 文档。因此,当您将 HTML 传给 pandas 并期望它输出一个美观的 dataframe 时,请确保该 HTML 页面中包含表格!
Cryptocurrency网站作为 HTML 数据集,并包含每种货币的多项信息,例如:Last price)%)24 volume)# Coins)那么,开始吧!
首先导入
requests库,它可帮助您向希望获取 HTML 内容的URL发送请求。到目前为止,您已定义了
URL,并使用requests.get()向该 URL 发送了请求,收到的响应是acknowledgement [200] OK,这表示已经成功连接到该web server。现在,要读取该 HTML 网页的内容,您只需调用
crypto_url.text,它会返回该cryptocurrency网页的 HTML 代码。您可以随意运行
crypto_url.text命令查看输出。最后,将
crypto_url.text传给pd.read_html()函数,它将返回一个dataframe 列表,其中每个元素都是该cryptocurrency网页中的一个表格(dataframe)。我们打印该 dataframe 的
length和type。type应为列表。从以上输出可知,该页面只有 1 个表格,类型为 list。
我们移除第一列和第二列,因为它们没有有用信息,保留所有行。
最后,来打印这个
cryptocurrency的 dataframe!从上表可以看出,
Bitcoin的市值(Market Cap)最高。删除 NaN(非数字)
dataframe 中有些值并非真实有效值,我们快速将它们从表中移除。
不过首先,完全删除
Price Charts 7d列,因为它全是NaN,没有任何信息。现在我们移除所有
NaN。可视化加密货币(Ticker)与涨跌幅(%)
首先导入
matplotlib以绘制图表。%列的类型为string,需要将其转换为float。先移除该列中的%符号,再将该列类型转换为 float。现在来绘制数据。
从上述图表可以看出,
Litecoin (LTC)和Huobitoken (HT)的涨幅最大,而Maticnetwork (MATIC)和Waves的跌幅最大。加载 Pickle 数据
Pickle 是 Python 专用的二进制序列化格式,与 JSON 不同,它不适合人类直接阅读。它用于序列化和反序列化 Python 的对象结构。它会将对象序列化并“Pickle”后保存到磁盘,将 DataFrame、list、dictionary 等对象转换为字节流。
Pickle 的最大优点是能够存储多种 Python 数据类型。
Pickle 被广泛用于保存已训练的机器学习算法实例。与 JSON 一样,Pickle 也提供了便捷函数,如用于加载 Pickle 格式文件的
pickle.load(),以及用于以 Pickle 格式保存对象的pickle.dump()。使用 Pickle 的另一个重要优势是,将 dataframe 保存为 Pickle 文件占用的磁盘空间更小,并且在重新加载时可保持数据的类型不变。
那么,让我们快速将之前构建的加密货币 dataframe 进行
pickle序列化,然后使用pandas读取这个已pickled的对象。您将使用
pickle.dump将 dataframe 保存为 Pickle 对象,并将protocol设为HIGHEST_PROTOCOL,它也能向后兼容 Python 2。最后,使用
pandas的read_pickle函数将pickle对象转换为 dataframe。哇!是不是很棒?过程非常直接。而且,使用 Pickle,您无需担心数据类型转换错误,因为
pickle的序列化可以帮您处理!进一步学习
恭喜您完成本教程。
本教程是使用 pandas 在 Python 中加载不同数据格式的良好起点。
仍然有许多数据格式,如 Excel、SQL、HDF5 等,都在 pandas 的数据导入范围内。建议您去寻找一些这些格式的有趣公共数据集并动手实践。
如果您想进一步学习 pandas 中的 DataFrame,欢迎参加 DataCamp 的使用 pandas 进行数据处理互动课程。DataCamp 还有多篇实用的 pandas 教程,涵盖连接 dataframes、实现移动平均以及使用 apply 方法。或者,如果您完全是 pandas 初学者,请从这篇 pandas 新手指南教程开始。
参考资料:
如对本教程有任何疑问,欢迎在下方评论区留言。