45列と1000行のデータフレームがあります。私の要件は、各列の上位2つの値とそのパーセンテージを含む単一のExcelシートを作成することです(列1に値 'python'が500回存在すると仮定すると、パーセンテージは50になります)
私が使用した:
writer = pd.ExcelWriter('abc.xlsx')
df = pd.read_sql('select * from table limit 1000', <db connection sring>)
column_list = df.columns.tolist()
df.fillna("NULL", inplace = True)
for obj in column_list:
df1 = pd.DataFrame(df[obj].value_counts().nlargest(2)).to_excel(writer,sheet_name=obj
writer.save()
これにより、同じドキュメントの個別のExcelタブに出力が書き込まれます。以下の形式の1枚のシートでそれらが必要です。
Column Name Value Percentage
col1 abc 50
col1 def 30
col2 123 40
col2 456 30
...。
この出力を取得するために、他の関数も教えてください。
私に最初に飛び出すのは、シート名を毎回変更しているということです。それをsheet_name=obj
取り除くと、それだけで問題が解決する可能性があります。
そうでない場合は、結果を1つの大きなDataFrameに連結してから、そのDataFrameをExcelに書き込むことをお勧めします。
for obj in column_list:
df = pd.DataFrame(df[obj].value_counts().nlargest(2))
if df_master is None:
df_master = df
else:
df_master = pd.concat([df_master,df])
df_master.to_excel("abc.xlsx")
パンダでのデータフレームのスタック/連結の詳細については、https: //pandas.pydata.org/pandas-docs/stable/user_guide/merging.htmlをご覧ください。
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加