Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/74.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 为什么pandas和R之间的数据帧内存使用有如此大的差异?_Python_R_Pandas_Dataframe_Memory - Fatal编程技术网

Python 为什么pandas和R之间的数据帧内存使用有如此大的差异?

Python 为什么pandas和R之间的数据帧内存使用有如此大的差异?,python,r,pandas,dataframe,memory,Python,R,Pandas,Dataframe,Memory,我正在处理来自的数据(使用“Exporteer”按钮下载CSV文件) 当我使用read.csv()将数据导入R时,需要3.75 GB内存,但当我使用pd.read\u csv()将数据导入pandas时,需要6.6 GB内存 为什么差异如此之大 我使用以下代码来确定R中数据帧的内存使用情况: library(pryr) object_size(df) 和python: df.info(memory_usage="deep") 我发现该链接非常有用,并认为值得从评论和总结

我正在处理来自的数据(使用“Exporteer”按钮下载CSV文件)

当我使用
read.csv()
将数据导入R时,需要3.75 GB内存,但当我使用
pd.read\u csv()
将数据导入pandas时,需要6.6 GB内存

为什么差异如此之大

我使用以下代码来确定R中数据帧的内存使用情况:

library(pryr) 
object_size(df)
和python:

df.info(memory_usage="deep")

我发现该链接非常有用,并认为值得从评论和总结中突破:

  • 使用
    usecols

    df=pd.read\u csv('voctors.csv',usecols=['First Name','Last Name']))
    
  • 使用较小的数据类型收缩数字列

    • int64
      (默认)-9223372036854775808到9223372036854775807
    • int16
      :-32768到32767
    • int8
      :-128到127
    df=pd.read\u csv('voctors.csv',dtype={'Ward Number':'int8})
    
  • 使用dtype
    category

    df=pd.read\u csv('voctors.csv',dtype={'Party Affiliation':'category'})
    
  • 将大部分
    nan
    数据转换为数据类型
    Sparse

    sparse\u str\u series=series.astype('sparse[str]”)
    稀疏\u int16\u series=series.astype('sparse[int16]”)
    

  • Pandas使用固定的数据类型来加载可能比R中使用的存储空间大的数据。read_csv中有一些参数可以大大减少内存使用量。对数字使用不同的数据类型。Int8、int16和int64是很好的例子,我同意保罗的观点。这可能是探索如何减少Python中数据集大小的一个很好的起点。请参阅这篇文章,深入探讨R中的内存管理。谢谢!通过指定数据类型,我成功地将pandas的大小减少到了3.6GB,这带来了巨大的不同。