pandas可以操作多种类型的文件, 为什么要有那么多种文件类型, 不可以统一成一种吗?
答案当然是不可以的, 例如我们熟知的CSV, HDF5, JSON都有他们独特的优点, 这些优点又不能兼得, 我们在生产环境中一般考虑如下几个特点
1. 数据文件格式是否能够跨平台
2. 数据文件是否支持压缩
3. 数据文件是否可读
4. 数据文件是否能写入多种数据
CSV: 跨平台, 支持文件压缩, 可读性高, python写入多类型数据不好区分
例如:
import numpy as np
import pandas as pd
row_index = ["a" + str(i) for i in range(10)]
col_index = ["b" + str(i) for i in range(10)]
data1 = pd.DataFrame(np.random.randint(0, 10, (10, 10)), index=row_index, columns=col_index)
data2 = pd.DataFrame(np.random.randint(0, 10, (10, 10)), index=row_index, columns=col_index)
data1.to_csv("./demo02.csv", mode='w')
data2.to_csv("./demo02.csv", mode='a')
print(pd.read_csv("./demo02.csv"))
可见CSV中存放多类型数据是不方便的, 结果读出来后, 得自己去做处理
HDF5:跨平台, 支持压缩(压缩效果较CSV强), 支持多种类型数据写入, 没有可读性
数据处理时, 推荐使用HDF5
现在使用 DataFrame.to_hdf()方法时, 路径中含有中文的时候, 会报错, 这个Bug尚未修复, 要养成编码过程中不要使用中文的习惯, 减少不必要的Bug
import numpy as np
import pandas as pd
# hdf 可以在存储数据的时候指定 key, 而存储多种类型数据, 方便使用
data1.to_hdf("./demo03.h5", key="data1", mode="w")
data2.to_hdf("./demo03.h5", key="data2", mode="a")
pd.read_hdf("./demo03.h5", key="data1")
JSON: 跨平台, 不支持压缩, 不支持多种数据类型, 具有可读性
# pandas 操作 json 数据时, orient 参数不同, 所得结果不同
data1.to_json("./demo04.json", orient="split", )
data1.to_json("./demo05.json", orient="records")
data1.to_json("./demo06.json", orient="index")
data1.to_json("./demo07.json", orient="columns")
data1.to_json("./demo08.json", orient="values")
以上是常用的三种数据文件类型, 推荐使用HDF5做数据共享, 传输