（过渡音乐） (transition music)
- 保存和重新加载数据集。 - Saving and reloading a dataset.
在本视频中，我们将了解 In this video, we'll take a look
以各种格式保存数据集 at saving a dataset in various formats
并探索重新加载已保存数据的方法。 and explore the ways to reload the saved data.
下载数据集时，所需的处理脚本和数据都会本地存储 When you download a dataset, the processing scripts and data
在你的计算机上。 are stored locally on your computer.
缓存允许 Datasets 库 The cache allows the Datasets library
避免重新下载 to avoid re-downloading
或每次使用时处理整个数据集。 or processing the entire dataset every time you use it.
现在，数据以 Arrow 表的形式存储 Now, the data is stored in the form of Arrow tables
通过访问数据集的 whose location can be found
cache_files 属性可以找到它的位置。 by accessing the dataset's cache_files attribute.
在这个例子中，我们从 Hugging Face Hub In this example, we've downloaded the allocine dataset
下载了 allocine 数据集，你可以看到 from the Hugging Face Hub, and you can see
一共有三个 Arrow 文件 that there are three Arrow files
存储在缓存中，每个文件对应一个分片数据。 stored in the cache, one for each split.
但在很多情况下，你希望在不同的物理地址或者以不同的格式 But in many cases, you'll wanna save your dataset
保存你的数据集。 in a different location or format.
如表所示，Datasets 库 As shown in the table, the Datasets library
提供了四个主要功能来实现这一点。 provides four main functions to achieve this.
现在，你可能已经很熟悉了 Now, you're probably already familiar
使用 CSV 和 JSON 格式，这两种格式都很棒 with the CSV and JSON formats, both of which are great
如果你只是想快速保存一个小规模 if you just wanna quickly save a small
或中等规模的数据集。 or medium-sized dataset.
但是如果你的数据集很大， But if your dataset is huge,
你需要将其保存为 Arrow 或 Parquet 格式。 you'll wanna save it in either the Arrow or Parquet formats.
如果你打算重新加载或在不久的将来处理数据， Arrow files are great if you plan to reload
Arrow 文件就很棒。 or process the data in the near future.
虽然 Parquet 文件被设计成 While Parquet files are designed
用于长期存储并且非常节省空间。 for long-term storage and are very space-efficient.
让我们仔细看看每种格式。 Let's take a closer look at each format.
保存数据集或 dataset_dict 对象 To save a dataset or a dataset_dict object
在 Arrow 格式中，我们使用 save_to_disk 函数。 in the Arrow format, we use the save_to_disk function.
正如你在此示例中所见， As you can see in this example,
只需提供我们希望将数据保存到的路径 we simply provide the path we wish to save the data to
然后 Datasets 库 and the Datasets library
会针对每个分片数据自动创建一个目录 will automatically create a directory
来存储 Arrow 表和元数据。 for each split to store the Arrow table and the metadata.
因为我们正在处理一个 dataset_dict 对象 Since we're dealing with a dataset_dict object
其中包含多个分片数据， that has multiple splits,
此信息也被存储 this information is also stored
在 dataset_dict.json 文件中。 in the dataset_dict.json file.
现在，当想要重新加载 Arrow 数据集时， Now, when we wanna reload the Arrow datasets,
我们使用 load_from_disk 函数。 we use the load_from_disk function.
只需传递数据集目录的路径， We simply pass the path of our dataset directory,
啊瞧，原始数据集已恢复。 and voila, the original dataset is recovered.
如果我们想保存我们的数据集 If we wanna save our dataset
在 CSV 格式中，我们使用 to_csv 函数。 in the CSV format, we use the to_csv function.
在这种情况下，你需要循环 In this case, you'll need to loop
dataset_dict 对象的分片数据 over the splits of the dataset_dict object
并将每个数据集保存为单独的 CSV 文件。 and save each dataset as an individual CSV file.
由于 to_csv 函数基于 Pandas 中的函数， Since the to_csv function is based on the one from Pandas,
你可以传递关键字参数来配置输出。 you can pass keyword arguments to configure the output.
在这个例子中，我们将索引参数设置为 None In this example, we've set the index argument
以防止数据集的索引列 to None to prevent the dataset's index column
不包含在 CSV 文件中。 from being included in the CSV files.
要重新加载我们的 CSV 文件， To reload our CSV files,
就使用熟悉的 load_dataset 函数 we just then use the familiar load_dataset function
连同 CSV 加载脚本 together with the CSV loading script
和 data_files 参数， and the data_files argument,
它指定与每个分片数据关联的文件名。 which specifies the file names associated with each split.
正如你在此示例中所见， As you can see in this example,
通过提供所有分片数据及其文件名， by providing all the splits and their file names,
我们已经恢复了原始的 dataset_dict 对象。 we've recovered the original dataset_dict object.
现在，将数据集保存在 JSON 中 Now, to save a dataset in the JSON
或保存为 Parquet 格式与 CSV 的情况非常相似。 or Parquet formats is very similar to the CSV case.
我们对 JSON 文件使用 to_json 函数 We use either the to_json function for JSON files
或 Parquet 的 to_parquet 函数。 or the to_parquet function for Parquet ones.
就像 CSV 案例一样，我们需要遍历分片数据 And just like the CSV case, we need to loop over the splits
将每个保存为单独的文件。 to save each one as an individual file.
一旦我们的数据集被保存为 JSON 或 Parquet 文件， And once our datasets are saved as JSON or Parquet files,
我们可以重新加载它们 we can reload them again
使用 load_dataset 函数中的合适的脚本。 with the appropriate script in the load_dataset function.
我们只需要像以前一样提供一个 data_files 参数。 And we just need to provide a data_files argument as before.
这个例子表明 This example shows
我们如何以任何一种格式重新加载我们保存的数据集。 how we can reload our save datasets in either format.
有了这个，你现在知道 And with that, you now know
如何以各种格式保存数据集。 how to save your datasets in various formats.
（过渡音乐） (transition music)