Morphでは、Pythonを使用して複雑なデータ分析を行うことができます。
記述方法は通常のPython関数に@morph.func
アノテーションを付与するだけでMorphで実行することができます。
@morph.func
@morph.load_data("example_sql_cell")
def get_data_from_database(context):
sql_result_df = context.data["example_sql_cell"]
return pd.DataFrame({})
返り値について
Pythonの返り値では、dataframe
、visualization
、markdown
、json
のいずれかを指定することができます。これらの方に合うような値を作成し返り値として返却してください。
dataframe
を指定した場合は、そのままMorphのデータフレームとして表示されます。
visualization
を指定した場合は、そのままMorphのビジュアライゼーションとして表示されます。この場合は、PlotlyやMatplotlibなどのライブラリを使用して可視化することができます。
markdown
を指定した場合は、そのままMorphのMarkdownとして表示されます。
json
を指定した場合は、そのままMorphのJSONとして表示されます。
可視化について
可視化をする場合は、以下のようにPlotlyやMatplotlibなどのライブラリを使用して可視化オブジェクトを返却する関数を実装してください。
ここで、関数の中でhtmlを作成して返却したりしないように注意をしてください。
Plotly
import plotly.express as px
import morph
from morph import MorphGlobalContext
@morph.func(
name="${MORPH_NAME}",
description="${MORPH_DESCRIPTION}",
)
@morph.load_data("${MORPH_PARENT_NAME}")
def main(context: MorphGlobalContext) -> px.line:
data = context.data["${MORPH_PARENT_NAME}"]
fig = px.line(data, x="X Axis", y="Y Axis", markers=True)
fig.update_layout(title="Plotly Plot")
return fig
Matplotlib
import matplotlib.pyplot as plt
import morph
from morph import MorphGlobalContext
@morph.func(
name="${MORPH_NAME}",
description="${MORPH_DESCRIPTION}",
)
@morph.load_data("${MORPH_PARENT_NAME}")
def main(context: MorphGlobalContext) -> plt.Figure:
data = context.data["${MORPH_PARENT_NAME}"]
fig, ax = plt.subplots()
ax.plot(data["X-Axis"], data["Y-Axis"], marker="o")
ax.set_title("Matplotlib Plot")
ax.set_xlabel("X-Axis")
ax.set_ylabel("Y-Axis")
return fig