【发布时间】:2015-05-10 04:52:41
【问题描述】:
import numpy as np
import pandas as pd
df = pd.DataFrame(data=np.zeros((1000000,1)))
df.to_csv('test.csv')
df.to_hdf('test.h5', 'df')
ls -sh test*
11M test.csv 16M test.h5
如果我使用更大的数据集,那么效果会更大。使用像下面这样的HDFStore 不会改变任何事情。
store = pd.HDFStore('test.h5', table=True)
store['df'] = np.zeros((1000000,1))
store.close()
编辑: 没关系。例子很糟糕!使用一些重要的数字而不是零会改变故事。
from numpy.random import rand
import pandas as pd
df = pd.DataFrame(data=rand(10000000,1))
df.to_csv('test.csv')
df.to_hdf('test.h5', 'df')
ls -sh test*
260M test.csv 153M test.h5
将数字表示为浮点数应该比将它们表示为每个数字一个字符的字符串需要更少的字节。这通常是正确的,除了在我的第一个示例中,所有数字都是“0.0”。因此,表示数字所需的字符并不多,因此字符串表示小于浮点表示。
【问题讨论】:
标签: python csv pandas hdf5 hdf