如何使用Pandas分析来分析大型数据集?

时间:2019-05-08 07:21:09

标签: python pandas profiling

数据并非完全干净,但熊猫使用时没有问题。 pandas库为EDA提供了许多非常有用的功能。

但是当我对大数据(即1亿条带有10列的记录)进行概要分析时,从数据库表中读取它时,它无法完成,并且笔记本电脑内存不足,csv中的数据大小约为6 gb,而我RAM为14 GB,我的空闲使用量约为3-4 GB。

    df = pd.read_sql_query("select * from table", conn_params)
    profile = pandas.profiling.ProfileReport(df)
    profile.to_file(outputfile="myoutput.html")

我也尝试过使用check_recoded = False选项。 但这并不能完全进行概要分析。 有什么方法可以分块读取数据并最终生成摘要报告吗?或使用任何其他方法将此功能用于大型数据集。

5 个答案:

答案 0 :(得分:4)

v2.4引入了最小模式,该模式可禁用昂贵的计算(例如相关性和动态合并):

from pandas_profiling import ProfileReport


profile = ProfileReport(df, minimal=True)
profile.to_file(output_file="output.html")

答案 1 :(得分:1)

pandas-profiling=1.4与当前{beta}版本pandas-profiling=2.0之间的禁用相关性计算(从而大大减少了计算)的语法已更改为以下内容:

profile = df.profile_report(correlations={
    "pearson": False,
    "spearman": False,
    "kendall": False,
    "phi_k": False,
    "cramers": False,
    "recoded":False,}
)

此外,您可以通过禁用用于计算直方图的bin的计算来减少执行的计算。

profile = df.profile_report(plot={'histogram': {'bins': None}}

答案 2 :(得分:0)

您是否尝试使用以下选项,因为使用熊猫分析对大型自由文本字段进行相关分析时可能会导致此问题?

df = pd.read_sql_query("select * from table", conn_params)
profile = pandas.profiling.ProfileReport(df, , check_correlation = False)

请参阅下面的github链接以获取更多详细信息: https://github.com/pandas-profiling/pandas-profiling/issues/84

答案 3 :(得分:0)

问题43的实现中增加了禁用检查相关性的功能,该问题不属于PyPI中最新版本的pandas-profiling(1.4)。我猜想,它将在以后的版本中实现,并在下一版本中可用。同时,如果您确实需要它,可以从github下载当前版本,并通过将其添加到PYTHONPATH中来使用它。

!/ bin / sh

PROF_DIR =“ $ HOME / Git / pandas-profiling /”

export PYTHONPATH =“ $ PYTHONPATH:$ PROF_DIR”

jupyter笔记本

答案 4 :(得分:0)

另一个选择是减少数据。

一个选项可以通过 sample 实现:

df.sample(number)

有关 pandas documentation 的更多详细信息。