[DL021]Panda批量数据类型转换,读取时间、内存占用

梗概:
pandas读取一个2.2GB左右的csv文件,转换float64为float32类型,进行内存上的缩减。
文件说明:802行,除了第0和最后一行外都是float64格式的存储
代码:

import time
import pandas as pd 
import os
import numpy as np 
DatasetPath = '/home/Datasets/Astro_Part4DL/Astropart.csv'
# 获取文件磁盘占用大小
print('File Usage {} GB'.format((os.path.getsize(DatasetPath))/ 1024**3))

df_start_time = time.time()
df = pd.read_csv(DatasetPath, sep=',')
print(df.dtypes[0:6])
df_end_time = time.time()
df_total_time =  df_end_time - df_start_time
# 输出文件的读取时间
print('df read time {} s'.format(df_total_time))
# 数据文件的内存占用
print('df float64 Memory Usage {} MB'.format(df.memory_usage().sum() / 1024**2))

to_f32 = {}
for col in df.columns:
    if col.startswith('point'):
        to_f32[col] = 'float32'

print('*'*40)

df1_start_time = time.time()
df1 = pd.read_csv(DatasetPath, sep=',', dtype=to_f32)
print(df1.dtypes[0:6])
df1_end_time = time.time()
df1_total_time = df1_end_time - df1_start_time
# 输出文件的读取时间
print('df1 read time {} s'.format(df1_total_time))
# 数据文件的内存占用
print('df1 trans float32 Memory Usage {} MB'.format(df1.memory_usage().sum() / 1024**2))

输出:

File Usage 2.148865501396358 GB
[5 rows x 802 columns]
ID         object
point0    float64
point1    float64
point2    float64
point3    float64
point4    float64
dtype: object
df read time 20.757500886917114 s
df float64 Memory Usage 978.3126068115234 MB
****************************************
[5 rows x 802 columns]
ID         object
point0    float32
point1    float32
point2    float32
point3    float32
point4    float32
dtype: object
df1 read time 18.900606155395508 s
df1 trans float32 Memory Usage 490.37620544433594 MB

结论:
内存缩减约一半,读取速度亦有所加快。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值