Python 熊猫:保存到csv时的内存差异(数据帧与多索引系列)
PandasPython 熊猫:保存到csv时的内存差异(数据帧与多索引系列),python,csv,pandas,export-to-csv,multi-index,Python,Csv,Pandas,Export To Csv,Multi Index,Pandasto_csv根据文件是多索引系列还是简单的未堆叠数据帧(后者似乎小于一半大小),写入大小非常不同的文件 从csv格式来看,这背后可能有某种直觉,但我不能完全理解 为什么熊猫系列的.csv格式要大得多,以致于数据帧? 生成此示例的代码: # imports import pandas as pd from numpy.random import random from random import randint # generate some data (1000 x 100
to_csv
根据文件是多索引系列还是简单的未堆叠数据帧(后者似乎小于一半大小),写入大小非常不同的文件
从csv格式来看,这背后可能有某种直觉,但我不能完全理解
为什么熊猫系列的.csv格式要大得多,以致于数据帧?
生成此示例的代码:
# imports
import pandas as pd
from numpy.random import random
from random import randint
# generate some data (1000 x 1000)
n_rows = 1000
n_cols = 1000
large = pd.DataFrame(np.random.random((n_rows, n_cols)))
# generate some indexes
large['index_1'] = [randint(0,100) for i in range(n_rows)]
large['index_2'] = [random() for i in range(n_rows)]
# make it a multi-index
large = large.set_index(['index_1', 'index_2']).sort_index()
# save as stacked and unstacked
large.to_csv('unstacked_example.csv')
large.stack().reset_index().to_csv('stacked_example.csv')
然后用ls-lh
:unstacked_example.csv-19M
stacked_example.csv-50M其中在
未堆叠的
示例中,您仅打印出每个索引和每个列一次。在stacked
示例中,每个索引打印1000次,每个列值打印1000次
未堆叠的
堆叠
这就是为什么我们发明了桌子。。。因为它通常更方便、更高效
large.size + large.index.size + large.columns.size
1002000
slarge = large.stack()
slarge.size + slarge.index.size
2000000