「プログラミング、格好いいな!」と思ったことと、手に職をつけたかったことがきっかけです。今はかなり普及していますが、コンビニで働いていた時にレジの自動化のちょうど転換期で、文明の発達を目の当たりにして衝撃を受けました。そこからエンジニアになりたいと思い、独学でITパスポートや基本情報等の資格を取得したり、プログラミングスクールに通ってRuby on Railsを勉強していました。やはり、自分が書いたコードが画面に出て思い通りに反映されたり、エラーが解消された時に、プログラミングの面白さを感じますね。
async def streamlit_input_callback(request: HumanInputRequest) -> HumanInputResponse:
return HumanInputResponse(request_id=request.request_id, response="Approved.")
async def get_agent():
"""
Get existing agent from session state or create a new one
"""
if "agent" not in st.session_state:
mcp_agent = Agent(
name="MCP Agent",
instruction="*** System Propmt ***",
server_names=["postgres"],
connection_persistence=False,
human_input_callback=streamlit_input_callback,
)
await mcp_agent.initialize()
st.session_state["agent"] = mcp_agent
if "llm" not in st.session_state:
st.session_state["llm"] = await st.session_state["agent"].attach_llm(AnthropicAugmentedLLM)
return st.session_state["agent"], st.session_state["llm"]
import pandas as pd
pd.set_option('display.max_rows', None)
pd.set_option('display.max_columns', None)
# Read the CSV files into Pandas Dataframes
df_player_data = pd.read_csv('player_data.csv')
# Display the first 5 rows of each DataFrame
print(df_player_data.head().to_markdown(index=False, numalign="left", stralign="left"))
# Print the column names and their data types for each DataFrame
print(df_player_data.info())
# Count the number of players by country
player_counts_by_country = df_player_data['country_code'].value_counts().reset_index()
player_counts_by_country.columns = ['country_code', 'num_players']
# Print the first 5 rows of the dataframe
print(player_counts_by_country.head().to_markdown(index=False, numalign="left", stralign="left"))
# Print the column name and their data types
print(player_counts_by_country.info())
import altair as alt
# Create the bar chart
chart = alt.Chart(player_counts_by_country).mark_bar().encode(
# Set `country_code` to x-axis and set the label as 'Country Code'
x=alt.X('country_code', title='Country Code'),
# Set `num_players` to y-axis and set the label as 'Number of Players'
y=alt.Y('num_players', title='Number of Players'),
tooltip=['country_code', 'num_players'] # Add tooltip
).properties(
title='Number of Players by Country' # Set the title of the chart to 'Number of Players by Country'
).interactive() # Make the chart Interactive
# Save the chart
chart.save('number_of_players_by_country_bar_chart.json')
ひとまず入力したcsvを理解してプロットまではできているようです。
MAU(Monthly Active User)をプロット
それでは次に、運営タイトルではよく確認される MAU をプロットさせます。追加で以下のプロンプトを入力しました。
player_login_logs をもとに各月のユーザー数をプロットしてください。これをMonthly Active User(MAU)と定義します。
event_masterにはstart_atとend_atが指定されており、イベント開催期間が設定されています。このイベント開催期間にログインしたユーザーをplayer_login_logsを参照してプロットしてください。X軸はevent_masterのcodeとします。これをEvent Active User (EAU)と定義します。