Pandas如何获取数据的尺寸信息

 更新时间:2024年02月23日 09:38:57   作者:勤奋的大熊猫  
这篇文章主要介绍了Pandas如何获取数据的尺寸信息问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教

Pandas获取数据的尺寸信息

Pandas中获取数据的尺寸信息,比如我们有如下的Excel数据:

在这里插入图片描述

我们可以使用如下代码来获取数据的整体尺寸信息:

import pandas as pd

file = pd.read_excel(r"C:\Users\15025\Desktop\uncle\debug.xlsx")
print(file.size)
print(file.shape)
print(len(file))
"""
result:
55
(11, 5)
11
"""

可以看到,结果与numpy包中的结果类似,当我们的数据为二维时,使用size获取到的是数据的整体大小,为行数量11乘以列数量5

当我们使用shape时,获取到的是二维数据行数量与列数量组成的一个元组(11, 5)

当我们使用len()函数作用于二维数据时,我们获得的是行数量。

当数据为一维时,我们使用len()函数获取的结果将会与使用size获取到的结果一致。

pandas处理大数据信息

使用到的数据大小为130M

5 rows × 161 columns

g1.shape
#(171907, 161)
#17W的数据,有161列

pandas 可以处理几千万,上亿的数据

打印出每种类型占的内存量

for dtype in ['float64','int64','object']:
    selected_dtype = g1.select_dtypes(include = [dtype])
    mean_usage_b = selected_dtype.memory_usage(deep=True).mean()
    mean_usage_mb = mean_usage_b/1024**2
    print('平均内存占用 ',dtype , mean_usage_mb)
'''
deep : bool,默认为False
如果为True,则通过询问对象 dtype
来深入了解数据 的系统级内存消耗,
并将其包含在返回值中。
'''

让内存占用变小,int 类型从64 变为 32,在不影响使用的前提下

#查看每种类型最大 能表示多大的数
int_types = ['uint8','int8','int16','int32','int64']
for it in int_types:
    print(np.iinfo(it))
g1_int = g1.select_dtypes(include = ['int64'])
#生成一个只有int类型的DataFrame
coverted_int = g1_int.apply(pd.to_numeric, downcast='unsigned')
#apply 会将数据一条一条的读取,并传入目标进行执行
#int64 转换为了 unsigned
g1_float = g1.select_dtypes(include = ['float64'])
#生成一个只有int类型的DataFrame
coverted_floar = g1_int.apply(pd.to_numeric, downcast='float')
#apply 会将数据一条一条的读取,并传入目标进行执行
#float64转换为了32
import pandas as pd
g1 = pd.read_csv('game_logs.csv')
g1_obj = g1.select_dtypes(include = ['object'])
g1.shape
#(171907, 78)
g1_obj.describe()
#查看信息生成的介绍
#count 数量
#unique	 不重复的值
#top   
#freq
dow = g1_obj.day_of_week
dow_cat = dow.astype('category')
dow_cat.head()

优化str占用内存

converted_obj = pd.DataFrame()

for col in g1_obj.columns:
    num_unique_values = len(g1_obj[col].unique())
    num_total_values= len(g1_obj[col])
    if num_unique_values / num_total_values < 0.5:
        converted_obj.loc[:,col] = g1_obj[col].astype('category')
    else:
        converted_obj.loc[:,col] = g1_obj[col]
#时间格式,写成标准格式的是比较占用内存的
#可以转换时间格式
g1['date'] = pd.to_datetime(date,format='%Y%m%d')
#这种比较占用内存

结果:

def mem_usage(pandas_obj):
    if isinstance(pandas_obj,pd.DataFrame):
        usage_b = pandas_obj.memory_usage(deep=True).sum()
    else:
        usage_b = pandas_obj.memory_usagee(deep=True)
    
    usage_mb = usage_b/1024**2
    return '{:03.2f} MB'.format(usage_mb)

g1_int = g1.select_dtypes(include = ['int64'])
#生成一个只有int类型的DataFrame
coverted_int = g1_int.apply(pd.to_numeric, downcast='unsigned')
#apply 会将数据一条一条的读取,并传入目标进行执行
#int64 转换为了 unsigned
print(mem_usage(g1_int))
print(mem_usage(coverted_int))

7.87 MB

1.48 MB

总结

以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。

相关文章

  • python pandas获取csv指定行 列的操作方法

    python pandas获取csv指定行 列的操作方法

    这篇文章主要介绍了pandas获取csv指定行,列的操作方法,本文简单易懂,非常不错,具有一定的参考借鉴价值,需要的朋友可以参考下
    2019-07-07
  • opencv-python+yolov3实现目标检测

    opencv-python+yolov3实现目标检测

    因为最近的任务有用到目标检测,快速地了解了目标检测这一任务,并且实现了使用opencv进行目标检测。感兴趣的可以了解一下
    2021-06-06
  • 使用Python快速制作可视化报表的方法

    使用Python快速制作可视化报表的方法

    今天小编就为大家分享一篇使用Python快速制作可视化报表的方法,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2019-02-02
  • python的类class定义及其初始化方式

    python的类class定义及其初始化方式

    这篇文章主要介绍了python的类class定义及其初始化方式,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2023-05-05
  • Matplotlib绘图基础之画布详解

    Matplotlib绘图基础之画布详解

    Matplotlib 库是一个用于数据可视化和绘图的 Python 库,这篇文章主要为大家介绍了下Matplotlib绘制的图形中的第一个重要的元素--画布,感兴趣的可以了解下
    2023-07-07
  • 基于python实现自动化办公学习笔记(CSV、word、Excel、PPT)

    基于python实现自动化办公学习笔记(CSV、word、Excel、PPT)

    这篇文章主要介绍了基于python实现自动化办公学习笔记,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2019-08-08
  • python thread 并发且顺序运行示例

    python thread 并发且顺序运行示例

    以上源文件是对python中的线程的一个简单应用,实现了对并发线程的顺序运行,也许对你会有小小帮助
    2009-04-04
  • python 读写csv文件方式(创建,追加,覆盖)

    python 读写csv文件方式(创建,追加,覆盖)

    这篇文章主要介绍了python 读写csv文件方式(创建,追加,覆盖),具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2022-05-05
  • Pandas实现数据拼接的操作方法详解

    Pandas实现数据拼接的操作方法详解

    Python处理大规模数据集的时候经常需要使用到合并、链接的方式进行数据集的整合,本文为大家主要介绍了.merge()、 .join() 和 .concat() 三种方法,感兴趣的可以了解一下
    2022-04-04
  • 对Tensorflow中的矩阵运算函数详解

    对Tensorflow中的矩阵运算函数详解

    今天小编就为大家分享一篇对Tensorflow中的矩阵运算函数详解,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2018-07-07

最新评论