[pandas_profiling & Anaconda ] pandas_profiling安装的各种问题的记录 --为了用pandas_profiling生成数据报告 -- 数据报告简介


强烈先全部看一遍各种报错原因,先全文浏览一遍,坑比较多~~

pandas_profiling安装的各种问题记录

常见如下:
MemoryError...
MemoryError: Unable to allocate 201. MiB for an array with shape (33, 800000) and data type float64...
pickler.file_handle.write(chunk.tobytes('C'))...
OSError: [Errno 28] No space left on device...

基本代码: pandas_profiling可以实现自动的EDA,一键生成数据报告

import os
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
import datetime
import seaborn as sns
import warnings

warnings.filterwarnings('ignore')
if __name__ == '__main__':
    # 0.1 公共变量

    linux_file_path = '/mnt/阿里云开发者-天池比赛/02_零基础入门金融风控_贷款违约预测/'
    train_file_path = linux_file_path + 'train.csv'
    testA_file_path = linux_file_path + 'testA.csv'
    now = datetime.datetime.now().strftime('%Y-%m-%d_%H:%M:%S')

    output_path = linux_file_path + '/profiling/'

    # 0.2 数据读取pandas

    data_train = pd.read_csv(train_file_path)
    data_test_a = pd.read_csv(testA_file_path)
    # print('Train Data shape 行*列:',data_train.shape)
    # print('TestA Data shape 行*列:',data_test_a.shape)

    # 2.3.5 用pandas_profiling生成数据报告

    import pandas_profiling

    pfr = pandas_profiling.ProfileReport(data_train)
    pfr.to_file(output_path + "data_train_pandas_profiling.html")
    print('data_train pandas_profiling done')
    del pfr
    pfr = pandas_profiling.ProfileReport(data_test_a)
    pfr.to_file(output_path + "data_test_a_pandas_profiling.html")
    print('data_test_a pandas_profiling done')
    del pfr

问题,windows环境下我装的Python是32位的,结果pandas_profiling跑200M的训练集失败了

百度后: 更换为64位或者换到linux

切到linux环境下,结果conda安装的一些package比较老

各种命令,尝试pip和conda的解决冲突

不停地运行->报错-》百度解决、运行->报错->百度解决,逐步尝试了以上的命令后,可以运行了

几分钟后, PicklingError: Could not pickle the task to send it to the workers.

细看是:OSError: [Errno 28] No space left on device

加内存到8G!同样的问题,加到16G再试试!
VMVare 建议是13G, 于是我就给到了13G再试试!

简单优化一下代码,在全局import pandas_profiling

import datetime
import warnings

import pandas as pd
import pandas_profiling

warnings.filterwarnings('ignore')
if __name__ == '__main__':
    # 0.1 公共变量

    linux_file_path = '/mnt/阿里云开发者-天池比赛/02_零基础入门金融风控_贷款违约预测/'
    train_file_path = linux_file_path + 'train.csv'
    testA_file_path = linux_file_path + 'testA.csv'
    now = datetime.datetime.now().strftime('%Y-%m-%d_%H:%M:%S')

    output_path = linux_file_path + 'profiling/'

    # 0.2 数据读取pandas

    data_train = pd.read_csv(train_file_path)
    data_test_a = pd.read_csv(testA_file_path)
    # print('Train Data shape 行*列:',data_train.shape)
    # print('TestA Data shape 行*列:',data_test_a.shape)
    # print('易得\n'
    #       '结果列  isDefault\n'
    #       'testA相较于train多出两列: \'n2.2\' \'n2.3\' ')

    # 2.3.5 用pandas_profiling生成数据报告
    pfr = pandas_profiling.ProfileReport(data_train)
    pfr.to_file(output_path + "data_train_pandas_profiling.html")
    print('data_train pandas_profiling done')

    pfr = pandas_profiling.ProfileReport(data_test_a)
    pfr.to_file(output_path + "data_test_a_pandas_profiling.html")
    print('data_test_a pandas_profiling done')

pandas_profiling 运行截图

要是不行的话, 我只能放弃了,上天池新的运行环境了!

还是不行,我仔细看了看报错原因


是写操作失败了, 磁盘容量不足

复现同样的问题

pickler.file_handle.write(chunk.tobytes('C'))

OSError: [Errno 28] No space left on device
_pickle.PicklingError: Could not pickle the task to send it to the workers.

磁盘扩容没有生效

VMVare修改磁盘大小后不生效的解决方法

尝试解决url: https://www.dazhuanlan.com/2020/02/13/5e44f3ad0be26/?cf_chl_jschl_tk=2b53a2c8ea315e4f4cba235c84ac7448a323d431-1600617230-0-AYQU3tXZfEUPfk4xH2FBguZesxOT95zBlsuHO7HmD1S_Rin3dAuzIWYW1O5VFNn_ETNLCSeqYN4tLbSgzrWJV-LImCBYEAdFvop7EoearuJgreFKk1ECqLj1jxUvMLlE8B6u1Ny03hVZRyzHP2V_2ORr8OhceS_8Wa-l4ufY7RO4xVqWJyUQAEwYRUDQB9lbfOYsusuXabD9geOX7QnY7Gn2RX_LnhNtasyziXqohZJJhzKN2Q5muaFVMw969Aj3cimI9NAhGGOgmXajUAWpeNjLNG9LQHjkHsqqWL4zwG1wnW1VZZ6haMbUhURaUAlMxA

fdisk -l 查看磁盘容量,重跑一次,可以

接着清理了/root目录下的内存

第N次后的结果

报错:
pickler.file_handle.write(chunk.tobytes('C'))
OSError: [Errno 28] No space left on device...

第N+1次,请教了一下朋友,顺带把他的结果顺了过来

接着百度, [可以断定是内存不足,并且win32位的python不支持超过2G的内存使用,导致存在问题;虚拟机给到了8G,但是临时存储不够导致picklerError]

上阿里云的免费资源平台, 直接爆了内存

上百度云的AI Studio平台来跑,倒是可以的; 占用了9.66个G的内存

我当场就知道原因了
https://ai.baidu.com/ai-doc/AISTUDIO/sk3e2z8sb

附上AI-Studio的运行日志

运行时长: 19分34秒132毫秒
结束时间: 2020-09-22 21:46:27
 2020-09-22 21:26:53.412621
output_path work/profiling/
HBox(children=(FloatProgress(value=0.0, description='Summarize dataset', max=61.0, style=ProgressStyle(descrip…

HBox(children=(FloatProgress(value=0.0, description='Generate report structure', max=1.0, style=ProgressStyle(…

HBox(children=(FloatProgress(value=0.0, description='Render HTML', max=1.0, style=ProgressStyle(description_wi…


data_train pandas_profiling   done
HBox(children=(FloatProgress(value=0.0, description='Export report to file', max=1.0, style=ProgressStyle(desc…
HBox(children=(FloatProgress(value=0.0, description='Summarize dataset', max=62.0, style=ProgressStyle(descrip…

HBox(children=(FloatProgress(value=0.0, description='Generate report structure', max=1.0, style=ProgressStyle(…

HBox(children=(FloatProgress(value=0.0, description='Render HTML', max=1.0, style=ProgressStyle(description_wi…

AI-studio 的 CPU2-4核跑的太慢了,本地重装了一遍Miniconda3;

卸载了轻量版的Miniconda3, 重装了一遍全量版的Anaconda——已经预制好了各种package,直接base环境,完美运行了

我哭了,直接装上Anaconda,就相当于把Python和一些如Numpy、Pandas、Scrip、Matplotlib等常用的库自动安装好了,DLL的异常也没有了(也预制好了)。
(当然你还需要配置好环境变量,小菜一碟,见下,记得重启)

win10安装anaconda3和PyCharm教程

https://blog.csdn.net/simonforfuture/article/details/100627338

下一步,上GPU版本的lgb和xgboost来跑模型,不浪费AI-studio 的 32G显存!

未完待续...

当然还有其他的匪夷所思的问题,比如 “'PandasArray' object has no attribute '_str_len'”

pandas_profiling的github里有issuse,可以具体看看。
我这里直接重新建一个环境,只安装pandas+pandas_profiling+numpy+python3.7.1这几个基本库,这个样子就没有冲突了。

conda create -n profling python=3.7.1 
conda activate profling    
pip install pandas numpy datetime pandas_profiling  

数据报告生成完成

  1. Overview 数据预览

  2. 每种属性列的详情信息 非重复率 缺失率 极大值/极小值/MEAN 零值
    a. 还可以区分数字类型/对象类型/类别类型 见列名下面的英文字母
    b. 还有相应的推测, 如MISSING/ZEROS/高度相关等

  3. Interactions 相互作用 (可以没有label列)

  4. 相关性 (可以展示相关的详情)

  5. 缺失值的展示

  6. Sample First rows和Last rows个10列
    没有数据省略,很nice~


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM