データは完全にクリーンではありませんが、パンダでは問題なく使用されます。 pandasライブラリは、EDAに非常に役立つ多くの関数を提供します。
しかし、大きなデータ、つまり10列の1億レコードにプロファイリングを使用し、データベーステーブルから読み取ると、完了せず、ラップトップのメモリが不足します。csvのデータサイズは約6 GBで、私のRAMは14GBですが、アイドル時の使用量は約3〜4GBです。
df = pd.read_sql_query("select * from table", conn_params)
profile = pandas.profiling.ProfileReport(df)
profile.to_file(outputfile="myoutput.html")
check_recoded = False
オプションも試してみました。しかし、それは完全にプロファイリングに役立つわけではありません。データをチャンクして読み取り、最終的に全体として要約レポートを生成する方法はありますか? OR大規模なデータセットでこの関数を使用する他の方法。
pandasプロファイリングを使用して大きなフリーテキストフィールドで相関分析を行うと、この問題が発生する可能性があるため、以下のオプションを試してみましたか?
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
相関の計算を無効にする(これにより計算が大幅に削減される)構文が、pandas-profiling=1.4
と現在の(ベータ)バージョンpandas-profiling=2.0
の間で大幅に変更されました。
profile = df.profile_report(correlations={
"pearson": False,
"spearman": False,
"kendall": False,
"phi_k": False,
"cramers": False,
"recoded":False,}
)
さらに、ヒストグラムのプロット用のビンの計算を無効にすることで、実行される計算を減らすことができます。
profile = df.profile_report(plot={'histogram': {'bins': None}}
バージョン2.4
以降、コストのかかる計算(相関や動的ビニングなど)を無効にする最小モードを使用できます。
from pandas_profiling import ProfileReport
profile = ProfileReport(df, minimal=True)
profile.to_file(output_file="output.html")