数据框的堆栈性能-熊猫

时间:2018-08-23 06:35:16

标签: python pandas dataframe

我正在尝试拆开数据框。它工作正常,但问题是我正在处理CSV文件中的巨大数据集(约10亿个)。 这是示例数据集。

236539~!#48512569874~!#Name~!#Danny
236539~!#48512569874~!#Class~!#12
236539~!#48512569874~!#Building~!#X4
236539~!#48512569875~!#Name~!#John
236539~!#48512569875~!#Class~!#10
236539~!#48512569875~!#Shelf~!#Yes
236539~!#48512569875~!#Desk_ID~!#2018_5D
236539~!#48512569876~!#Name~!#Xian
236539~!#48512569876~!#Desk_ID~!#2018_3D
236539~!#48512569876~!#Country~!#CHN

我正在通过chunksize方法中的read_csv()读取上面的巨大数据集,然后将数据集连接为一个完整的数据帧。

虽然拆栈需要花费很多时间(尽管从csv读取数据也很耗时,但是应用chunksizepd.concat可以提高性能) 以下是我用于堆栈的代码:

df = pd.read_csv('panda1.csv', delimiter='~!#', engine='python',header=None, keep_default_na=False, na_values=[''])
df.columns = ['School_Id', 'Student_Id', 'Attribute_Name', 'Attribute_Value']
var_list = ['Name','Class','Building','Shelf','Desk_ID','Country']
df = df.set_index(['School_Id', 'Student_Id', 'Attribute_Name'])['Attribute_Value'].unstack(fill_value='').fillna('')[var_list].reset_index()

堆叠后,它正好是我想要的。

School_Id   Student_Id  Name    Class   Building    Shelf   Desk_ID Country
236539      48512569874 Danny   12      X4           ''      ''       ''
236539      48512569875 John    10                   Yes    2018_5D   ''
236539      48512569876 Xian    ''      ''           ''     2018_3D   CHN

但是,当我尝试创建一个包含大数据集(约10亿个)的数据帧并对其进行堆栈处理时,可能要花费很长时间才能处理或出现内存错误, 因此,有任何选项可以按块进行拆栈操作以获得所需的结果。

0 个答案:

没有答案