pandas 保存nan原格式
在数据分析和处理过程中,经常会遇到缺失值的情况。在pandas库中,缺失值通常用NaN(Not a Number)来表示。然而,在将数据保存为文件时,有时候会遇到将NaN保存为其他格式(如NA)的问题。为了保持数据的一致性,我们希望保存的数据能够保留NaN的原始格式。本文将介绍如何使用pandas保存数据时保留NaN原格式的方法。
1. 保存为CSV文件
我们首先创建一个包含NaN值的DataFrame,并尝试将其保存为CSV文件:
import pandas as pd
import numpy as np
# 创建包含NaN值的DataFrame
df = pd.DataFrame({'A': [1, np.nan, 3],
'B': [4, 5, 6]})
# 保存为CSV文件
df.to_csv('example.csv', index=False)
运行上述代码后,我们得到的example.csv文件内容为:
A,B
1.0,4
,,5
3.0,6
可以看到,NaN值被保存为了空字符串。如果我们希望保留NaN值的原始格式,可以使用下面的方法:
# 保存CSV文件时保留NaN原格式
df.to_csv('example.csv', index=False, na_rep='NaN')
运行以上代码后,我们得到的example.csv文件内容为:
A,B
1.0,4
NaN,5
3.0,6
通过设置na_rep参数为’NaN’,我们成功保存了NaN值的原始格式。
2. 保存为Excel文件
类似地,我们可以使用相同的方法来保存包含NaN值的DataFrame为Excel文件:
# 保存为Excel文件
writer = pd.ExcelWriter('example.xlsx')
df.to_excel(writer, 'Sheet1', index=False)
writer.save()
运行以上代码后,我们得到的example.xlsx文件中的Sheet1内容为:
A B
1 1.0 4
2 NaN 5
3 3.0 6
可以看到,NaN值被保存为了空白。为了保持NaN的原始格式,我们可以使用如下代码:
# 保存Excel文件时保留NaN原格式
df.to_excel(writer, 'Sheet1', index=False, na_rep='NaN')
writer.save()
运行以上代码后,我们得到的example.xlsx文件中的Sheet1内容为:
A B
1 1.0 4
2 NaN 5
3 3.0 6
通过设置na_rep参数为’NaN’,我们成功保存了NaN值的原始格式。
3. 保存为JSON文件
最后,我们尝试将包含NaN值的DataFrame保存为JSON文件:
# 保存为JSON文件
df.to_json('example.json', orient='split')
运行以上代码后,我们得到的example.json文件内容为:
{"columns":["A","B"],"data":[[1.0,4.0],[null,5.0],[3.0,6.0]]}
可以看到,NaN值被保存为了null。为了保存NaN的原始格式,我们可以使用如下代码:
# 保存JSON文件时保留NaN原格式
df.to_json('example.json', orient='split', default_handler=str)
运行以上代码后,我们得到的example.json文件内容为:
{"columns":["A","B"],"data":[[1.0,4.0],["NaN",5.0],[3.0,6.0]]}
通过设置default_handler参数为str,我们成功保存了NaN值的原始格式。
通过以上示例,我们学习了如何在使用pandas保存数据时保留NaN的原始格式。这样可以确保数据在不同格式之间的转换过程中,NaN值不会丢失或被替换,保持数据的完整性和准确性。