役割別の Pandas アプリケーション(例:データアナリスト、データサイエンティスト、ML エンジニア)
データアナリストとして、顧客データを含む CSV を受け取りました。Pandas を使用して、「email」や「phone_number」のような主要な列の欠損値を迅速に特定し、要約するにはどうすればよいですか?
回答:
df[['email', 'phone_number']].isnull().sum() を使用して、列ごとの欠損値をカウントします。割合を求めるには、len(df) で割ります。これにより、レポート作成のためにデータ品質の問題が迅速に明らかになります。
データサイエンティストとして、機械学習のためにデータセットを準備しています。「product_category」のようなカテゴリ列に対してワンホットエンコーディングを実行し、それを元の DataFrame にマージするには、Pandas をどのように使用しますか?
回答:
ワンホットエンコードされた DataFrame を作成するには pd.get_dummies(df['product_category'], prefix='category') を使用します。次に、pd.concat([df, one_hot_df], axis=1) を使用し、元の「product_category」列を削除して統合します。
ML エンジニアは、モデルトレーニングのために大規模なデータセット(10GB 以上)をロードする必要があります。メモリ制約を考慮して、Pandas を使用してこのデータを効率的にロードし、場合によってはサンプリングするにはどうすればよいですか?
回答:
大きなファイルの場合、pd.read_csv(..., chunksize=...) を使用してチャンクで処理するか、dtype を指定してメモリを最適化します。サンプリングについては、サブセットまたはチャンクをロードした後、df.sample(frac=0.1) または df.sample(n=100000) を使用します。
データアナリストとして、日次の売上 DataFrame から月次の売上トレンドを計算する必要があります。「sale_date」列と「revenue」列があると仮定して、Pandas を使用してこれをどのように達成しますか?
回答:
まず pd.to_datetime() を使用して「sale_date」が datetime であることを確認します。次に、「sale_date」をインデックスとして設定し、df['revenue'].resample('M').sum() を使用して月ごとの売上を集計します。
データサイエンティストが特徴量エンジニアリングを行っています。「age」列から新しい特徴量「age_group」を作成し、顧客を「0-18」、「19-35」、「36-60」、「60+」に分類するには、Pandas をどのように使用しますか?
回答:
pd.cut(df['age'], bins=[0, 18, 35, 60, np.inf], labels=['0-18', '19-35', '36-60', '60+'], right=True) を使用します。これにより、数値データを指定されたカテゴリに効率的にビン分割できます。
ML エンジニアは、特定の列順序とデータ型を必要とするモデルをデプロイしています。モデルに渡す前に、この構造を推論データに強制するために Pandas をどのように使用しますか?
回答:
まず df = df[expected_column_order] を使用して DataFrame を再インデックス化し、列順序を強制します。次に、df = df.astype(expected_dtypes) を使用して、列を必要なデータ型にキャストします。
データアナリストとして、「customer_id」を持つ customers DataFrame と、「customer_id」および「order_id」を持つ orders DataFrame の 2 つの DataFrame をマージする必要があります。注文を行った顧客のみを表示するために、内部結合(inner join)をどのように実行しますか?
回答:
pd.merge(customers_df, orders_df, on='customer_id', how='inner') を使用します。これにより、共通の「customer_id」列に基づいて DataFrame が効率的に結合され、一致する行のみが保持されます。
データサイエンティストが時系列データを扱っており、「temperature」列の 7 日間の移動平均を計算する必要があります。Pandas でこれをどのように行いますか?
回答:
datetime インデックスがあると仮定すると、df['temperature'].rolling(window='7D').mean() を使用します。インデックス化されていない場合は、まず datetime 列をインデックスとして設定します。
データアナリストとして、「sales」を「region」と「product_type」で要約するために DataFrame をピボットする必要があります。これを実現するために pivot_table をどのように使用しますか?
回答:
pd.pivot_table(df, values='sales', index='region', columns='product_type', aggfunc='sum') を使用します。これにより、地域を行、製品タイプを列、合計売上値を値とする要約テーブルが作成されます。