SWELL公式サイトへ 詳しくはこちら

Pandas列の更新方法:計算式を使用した実用例

  • URLをコピーしました!
目次

1. はじめに

Pandasは、Pythonでデータを操作・分析するための強力なライブラリです。データフレーム(DataFrame)と呼ばれる表形式のデータ構造を提供し、効率的かつ簡便にデータの操作が可能です。データ分析や機械学習の前処理として、Pandasは非常に重要な役割を果たしています。

Pandasの概要

Pandasは、行と列からなるデータフレームを操作するための多くの関数やメソッドを提供します。データの読み込み、加工、集計、フィルタリングなど、多岐にわたる機能を持っており、特にデータの前処理やクリーニングの工程で活躍します。

列の値を更新する必要性とその一般的な用途

データ分析を行う際には、データセットの中の列(カラム)の値を計算式に基づいて更新することが頻繁にあります。例えば、売上データを基に利益を計算したり、異なる列の値を組み合わせて新しい指標を作成したりする場面がよくあります。これらの操作を効率的に行うことで、データの洞察を得やすくなります。

具体的な例としては以下のようなものがあります。

  • 売上金額とコストから利益を計算する
  • 複数の数値データから新しい指標を作成する(例:BMIの計算)
  • 条件に応じて特定の列の値を更新する(例:特定の閾値を超えた場合にフラグを立てる)

この記事の目的

この記事では、Pandasを用いてデータフレームの列の値を計算式に基づいて更新する方法について詳しく解説します。基本的な更新方法から始め、条件付きでの更新、カスタム関数を使った高度な更新方法まで、実際のコード例を交えながら紹介します。

この記事を読むことで、以下のことができるようになります。

  • Pandasでの基本的な列の値の更新方法を理解する
  • 複数の列の値を使用した計算式による更新方法を学ぶ
  • 条件付きで列の値を更新する方法を理解する
  • カスタム関数を使用して複雑な更新を行う方法を習得する

データ分析や前処理の作業において、Pandasの強力な機能を最大限に活用するための基礎を築くことを目指します。それでは、具体的な手法について見ていきましょう。

2. 基本的な列の更新方法

Pandasを使用してデータフレームの列の値を更新することは非常に一般的な操作です。基本的な列の更新方法を理解することは、データ操作の第一歩です。このセクションでは、単純な計算式を使った列の更新方法について説明します。

DataFrameの作成

まずは、サンプルデータを使ってDataFrameを作成します。以下のコードで、ABCという3つの列を持つDataFrameを作成します。

import pandas as pd

# サンプルデータを作成
data = {
    'A': [1, 2, 3, 4],
    'B': [5, 6, 7, 8],
    'C': [9, 10, 11, 12]
}
df = pd.DataFrame(data)

# DataFrameの表示
print(df)

上記のコードを実行すると、以下のようなDataFrameが得られます。

単純な計算式による列の更新

次に、単純な計算式を使って新しい列を追加する方法を紹介します。ここでは、列Dを新たに作成し、A + Bの結果を格納します。

# 新しい列Dを追加し、AとBの合計を格納
df['D'] = df['A'] + df['B']

# DataFrameの表示
print(df)

このコードを実行すると、以下のように列Dが追加され、ABの合計が格納されます。

複数列を使用した計算の実例

さらに、複数の列を使用した計算の例も見てみましょう。例えば、列DA * B + Cの計算結果で更新します。

# 列Dを更新し、A * B + Cの結果を格納
df['D'] = df['A'] * df['B'] + df['C']

# DataFrameの表示
print(df)

このコードを実行すると、以下のように列Dが更新されます。

既存の列を更新する方法

新しい列を追加するのではなく、既存の列を更新することも可能です。例えば、列CC + 5で更新してみましょう。

# 列Cを更新し、5を加算
df['C'] = df['C'] + 5

# DataFrameの表示
print(df)

このコードを実行すると、列Cの値が5ずつ増加します。

まとめ

このセクションでは、Pandasを使ってデータフレームの列の値を基本的な計算式で更新する方法について紹介しました。新しい列の追加や既存の列の更新は、データ操作の基本的なテクニックです。これらの操作をマスターすることで、データ分析の準備を効率的に進めることができます。

3. 同じレコード内の複数の列を使用した計算

Pandasでは、同じレコード内の複数の列の値を用いて計算を行い、その結果を新しい列として追加したり、既存の列を更新することができます。これにより、データフレームの分析や操作がさらに強力になります。このセクションでは、applyメソッドとlambda関数を使用して、複数の列を使った計算方法を紹介します。

applyメソッドとlambda関数の紹介

applyメソッドは、データフレームの各行または列に対して関数を適用するために使用されます。lambda関数は、Pythonで使われる無名関数で、簡潔に関数を定義するのに役立ちます。これらを組み合わせることで、複数の列を使った柔軟な計算が可能になります。

複数列を使用した計算の実例

まずは、ABCという3つの列を持つデータフレームを作成します。このデータフレームに対して、新しい列Dを追加し、A * B + Cという計算式を用いて値を計算します。

import pandas as pd

# サンプルデータを作成
data = {
    'A': [1, 2, 3, 4],
    'B': [5, 6, 7, 8],
    'C': [9, 10, 11, 12]
}
df = pd.DataFrame(data)

# applyメソッドとlambda関数を使って計算
df['D'] = df.apply(lambda row: row['A'] * row['B'] + row['C'], axis=1)

# DataFrameの表示
print(df)

このコードを実行すると、以下のように列Dが追加され、A * B + Cの計算結果が格納されます。

条件付きで列を更新する方法

次に、条件付きで列の値を更新する方法を見てみましょう。ここでは、Aの値がBの値より大きい場合にDの値をA - Bとし、それ以外の場合はA + Bとする例を紹介します。

# 条件付きで列を更新
df['D'] = df.apply(lambda row: row['A'] - row['B'] if row['A'] > row['B'] else row['A'] + row['B'], axis=1)

# DataFrameの表示
print(df)

このコードを実行すると、以下のように条件に基づいて列Dの値が更新されます。

カスタム関数を使った計算

より複雑な計算が必要な場合、カスタム関数を定義してapplyメソッドで適用することができます。例えば、ABの積にCの二乗を加える計算を行うカスタム関数を定義します。

# カスタム関数を定義
def custom_calculation(row):
    return row['A'] * row['B'] + row['C'] ** 2

# applyメソッドでカスタム関数を適用
df['D'] = df.apply(custom_calculation, axis=1)

# DataFrameの表示
print(df)

このコードを実行すると、以下のようにカスタム関数に基づいて列Dの値が計算されます。

まとめ

このセクションでは、Pandasを使って同じレコード内の複数の列の値を使用した計算方法について紹介しました。applyメソッドとlambda関数、さらにカスタム関数を使うことで、複雑な計算を効率的に行うことができます。これらの手法を活用することで、データフレームの操作が一層強力になり、データ分析の幅が広がります。

4. 条件付きで列を更新する方法

データ分析や前処理の過程では、特定の条件に基づいてデータフレームの列の値を更新することが頻繁にあります。Pandasを使うことで、効率的に条件付きで列を更新することができます。このセクションでは、条件付きで列の値を更新する方法をいくつか紹介します。

条件付きで列を更新する必要性

条件付きで列を更新する理由としては、異常値の処理やカテゴリカルデータの変換、特定の基準に基づいたフラグの設定などがあります。例えば、売上データがある場合に、売上が一定額を超えた場合にボーナスを付与するなどの処理が挙げられます。

numpy.whereを使用した条件付き更新

numpy.whereは、条件に基づいて配列を更新するための便利な関数です。Pandasと組み合わせることで、条件付きでデータフレームの列を更新できます。

まず、サンプルデータを作成します。

import pandas as pd
import numpy as np

# サンプルデータを作成
data = {
    'A': [1, 2, 3, 4],
    'B': [5, 6, 7, 8],
    'C': [9, 10, 11, 12]
}
df = pd.DataFrame(data)

ここで、ABより大きい場合にDの値をA - Bとし、それ以外の場合はA + Bとする条件付きの列を作成します。

# numpy.whereを使用した条件付き更新
df['D'] = np.where(df['A'] > df['B'], df['A'] - df['B'], df['A'] + df['B'])

# DataFrameの表示
print(df)

このコードを実行すると、以下のように条件に基づいて列Dの値が更新されます。

複数の条件を組み合わせた更新

numpy.selectを使用すると、複数の条件を組み合わせて列を更新することができます。これにより、より複雑なロジックを簡単に実装することが可能です。

以下の例では、ABCの値に基づいて複数の条件を設定し、それに応じた値を列Dに設定します。

# 複数の条件を設定
conditions = [
    (df['A'] > df['B']) & (df['B'] > df['C']),
    (df['A'] <= df['B']) & (df['B'] <= df['C'])
]

# 各条件に対応する値を設定
choices = [df['A'] * 2, df['C'] * 2]

# numpy.selectを使用して条件付き更新
df['D'] = np.select(conditions, choices, default=df['B'] * 2)

# DataFrameの表示
print(df)

このコードを実行すると、条件に基づいて列Dが更新されます。

applyメソッドとカスタム関数を使った条件付き更新

最後に、applyメソッドとカスタム関数を使って条件付きで列を更新する方法を紹介します。これにより、より柔軟な条件付き更新が可能になります。

例えば、以下のようなカスタム関数を定義し、applyメソッドを使用して列Dを更新します。

# カスタム関数を定義
def custom_update(row):
    if row['A'] > row['B']:
        return row['A'] * 2
    elif row['B'] > row['C']:
        return row['B'] * 2
    else:
        return row['C'] * 2

# applyメソッドでカスタム関数を適用
df['D'] = df.apply(custom_update, axis=1)

# DataFrameの表示
print(df)

このコードを実行すると、カスタム関数の条件に基づいて列Dの値が更新されます。

まとめ

このセクションでは、Pandasを使って条件付きで列の値を更新する方法を紹介しました。numpy.wherenumpy.selectを使ったシンプルな条件付き更新から、applyメソッドとカスタム関数を使った柔軟な条件付き更新まで、さまざまな手法を学びました。これらの技術を活用することで、データの前処理や分析をより効率的に行うことができます。

5. 他の列の値に基づいて新しい列を作成する方法

データ分析の際には、既存のデータから新しい情報を抽出するために、新しい列を作成することがよくあります。他の列の値に基づいて新しい列を作成する方法をいくつか紹介します。

他の列の値に基づいて新しい列を作成する必要性

他の列の値に基づいて新しい列を作成する理由としては、以下のようなものがあります。

  • 指標の計算(例:売上から利益を計算)
  • カテゴリカルデータのエンコーディング(例:性別を0と1に変換)
  • 新しい特徴量の作成(例:BMIの計算)

基本的な計算で新しい列を作成する

まずは、基本的な計算を用いて新しい列を作成する方法を紹介します。以下の例では、ABの値を用いて新しい列Eを作成し、A * Bの結果を格納します。

import pandas as pd

# サンプルデータを作成
data = {
    'A': [1, 2, 3, 4],
    'B': [5, 6, 7, 8],
    'C': [9, 10, 11, 12]
}
df = pd.DataFrame(data)

# 新しい列Eを作成し、A * Bの結果を格納
df['E'] = df['A'] * df['B']

# DataFrameの表示
print(df)

このコードを実行すると、以下のように新しい列Eが追加されます。

条件に基づいて新しい列を作成する

次に、条件に基づいて新しい列を作成する方法を見てみましょう。例えば、ABより大きい場合に1、そうでない場合に0を格納する列Fを作成します。

# 条件に基づいて新しい列Fを作成
df['F'] = df['A'] > df['B']

# True/Falseを1/0に変換
df['F'] = df['F'].astype(int)

# DataFrameの表示
print(df)

このコードを実行すると、以下のように新しい列Fが追加されます。

numpy.selectを使用した複数の条件の処理

複数の条件を組み合わせて新しい列を作成する場合、numpy.selectを使用すると便利です。以下の例では、ABCの値に基づいて新しい列Gを作成します。

import numpy as np

# 複数の条件を設定
conditions = [
    (df['A'] > df['B']) & (df['B'] > df['C']),
    (df['A'] <= df['B']) & (df['B'] <= df['C'])
]

# 各条件に対応する値を設定
choices = ['A>B and B>C', 'A<=B and B<=C']

# numpy.selectを使用して新しい列Gを作成
df['G'] = np.select(conditions, choices, default='Other')

# DataFrameの表示
print(df)

このコードを実行すると、以下のように新しい列Gが追加されます。

カスタム関数を使用した新しい列の作成

より複雑な条件や計算が必要な場合、カスタム関数を定義してapplyメソッドで適用することができます。以下の例では、カスタム関数を使って新しい列Hを作成します。

# カスタム関数を定義
def custom_feature(row):
    if row['A'] > row['B']:
        return row['A'] * 2
    elif row['B'] > row['C']:
        return row['B'] * 2
    else:
        return row['C'] * 2

# applyメソッドでカスタム関数を適用
df['H'] = df.apply(custom_feature, axis=1)

# DataFrameの表示
print(df)

このコードを実行すると、カスタム関数に基づいて新しい列Hが追加されます。

まとめ

このセクションでは、Pandasを使って他の列の値に基づいて新しい列を作成する方法について紹介しました。基本的な計算による新しい列の作成から、条件付きの列作成、複数の条件を処理する方法、カスタム関数を使った複雑な処理まで、さまざまな手法を学びました。これらの技術を活用することで、データフレームの操作が一層強力になり、データ分析の幅が広がります。

6. カスタム関数を使って列を更新する方法

Pandasを使用してデータフレームを操作する際、カスタム関数を使うことで、より複雑で柔軟なデータ操作が可能になります。このセクションでは、カスタム関数を使って列を更新する方法について詳しく紹介します。

カスタム関数の利点

カスタム関数を使用することで、標準の算術演算では対応できない複雑なロジックや条件を実装することができます。これにより、データの前処理や分析が一層強力になります。

カスタム関数の定義と適用

まず、基本的なカスタム関数を定義し、applyメソッドを使ってデータフレームに適用する方法を見てみましょう。

以下は、データフレームを作成し、カスタム関数を使って列を更新する例です。

import pandas as pd

# サンプルデータを作成
data = {
    'A': [1, 2, 3, 4],
    'B': [5, 6, 7, 8],
    'C': [9, 10, 11, 12]
}
df = pd.DataFrame(data)

基本的なカスタム関数を使った更新

ここでは、ABの値を使って新しい列Dを更新します。ABより大きい場合にはA * 2、それ以外の場合にはB * 2を計算します。

# カスタム関数を定義
def custom_update(row):
    if row['A'] > row['B']:
        return row['A'] * 2
    else:
        return row['B'] * 2

# applyメソッドでカスタム関数を適用
df['D'] = df.apply(custom_update, axis=1)

# DataFrameの表示
print(df)

このコードを実行すると、以下のように列Dが更新されます。

より複雑なカスタム関数を使った更新

次に、より複雑なカスタム関数を定義してみましょう。ここでは、ABCの値を使って新しい列Eを更新します。具体的には、以下のような条件を設定します:

  • ABより大きい場合にはA * B
  • BCより大きい場合にはB * C
  • それ以外の場合にはC * 2
# 複雑なカスタム関数を定義
def complex_update(row):
    if row['A'] > row['B']:
        return row['A'] * row['B']
    elif row['B'] > row['C']:
        return row['B'] * row['C']
    else:
        return row['C'] * 2

# applyメソッドでカスタム関数を適用
df['E'] = df.apply(complex_update, axis=1)

# DataFrameの表示
print(df)

このコードを実行すると、以下のように列Eが更新されます。

複数の列を同時に更新する

カスタム関数を使って複数の列を同時に更新することも可能です。以下の例では、新しい列FGを同時に更新します。FにはABの和を、GにはACの積を格納します。

# 複数の列を同時に更新するカスタム関数を定義
def update_multiple_columns(row):
    row['F'] = row['A'] + row['B']
    row['G'] = row['A'] * row['C']
    return row

# applyメソッドでカスタム関数を適用
df = df.apply(update_multiple_columns, axis=1)

# DataFrameの表示
print(df)

このコードを実行すると、以下のように列FGが同時に更新されます。

まとめ

このセクションでは、Pandasを使ってカスタム関数を定義し、データフレームの列を更新する方法を紹介しました。基本的なカスタム関数から始め、複雑なロジックを含む関数や複数の列を同時に更新する方法まで、さまざまなテクニックを学びました。これらの技術を活用することで、データ操作がさらに柔軟かつ強力になります。

7. まとめ

この記事では、PythonのPandasライブラリを使ってデータフレームの列の値を更新するさまざまな方法を紹介しました。各セクションでは、基本的な更新方法から高度なテクニックまで、実践的なコード例を交えて解説しました。

記事のポイント

  1. はじめに
    • Pandasの概要と列の値を更新する必要性について説明しました。
  2. 基本的な列の更新方法
    • 単純な計算式を使って列の値を更新する方法を紹介しました。A + BA * Bといった基本的な操作を学びました。
  3. 同じレコード内の複数の列を使用した計算
    • applyメソッドとlambda関数を使って、複数の列を使用した計算を行う方法を解説しました。A * B + Cのような計算を例に挙げました。
  4. 条件付きで列を更新する方法
    • numpy.wherenumpy.selectを使用して、条件に基づいて列の値を更新する方法を紹介しました。条件付きでのデータ操作を学びました。
  5. 他の列の値に基づいて新しい列を作成する方法
    • 他の列の値を使って新しい列を作成する方法を説明しました。基本的な計算や条件付きの更新、複数の条件の処理方法を学びました。
  6. カスタム関数を使って列を更新する方法
    • より複雑なロジックを含むカスタム関数を定義し、applyメソッドで適用する方法を解説しました。複数の列を同時に更新するテクニックも紹介しました。

実際のプロジェクトでの応用例

これらのテクニックは、データ分析や機械学習の前処理において非常に有用です。例えば、売上データを基にした利益計算、異常値の処理、特徴量エンジニアリングなど、さまざまな場面で活用できます。Pandasの強力な機能を駆使することで、データ操作の効率が大幅に向上します。

次のステップ

さらに高度なPandasの機能や他のデータ操作ライブラリについて学ぶことで、データ分析のスキルを向上させることができます。以下のリソースを参考にしてみてください:

  • Pandas公式ドキュメント: Pandasの詳細な使い方や最新情報を得るためのリソース。
  • Python for Data Analysis: Wes McKinney著。Pandasの開発者によるデータ分析のためのガイドブック。
  • オンラインチュートリアルとコース: KaggleやCourseraなどで提供されている無料のチュートリアルやコースで、実践的なスキルを磨くことができます。

参考資料

この記事を通じて、Pandasを用いたデータフレームの列の値の更新方法についての理解が深まったことを願っています。これらの技術を活用して、データ分析の効率と精度を向上させてください。

プログラミング初心者におすすめ!「スッキリわかるPython入門 第2版」

プログラミングに興味があるけれど、何から始めればいいかわからない方に最適な一冊が「スッキリわかるPython入門 第2版」です。以下のポイントを参考にしてください。

本書の特徴とメリット

  • シリーズ累計90万部突破
    多くの読者に支持され、信頼されている大人気入門書の改訂版。
  • 初心者でもわかりやすい解説
    基本的な「コツ」を丁寧に説明し、迷わず学習を進められます。
  • 実践的な「しくみ」の理解
    プログラミングの基礎だけでなく、実際の開発に役立つ知識を習得可能。
  • 「落とし穴」の回避
    初心者が陥りがちな間違いをカバーし、安心して学習を進められる内容。

実際の読者の声

  • 現役プログラミング教室の先生も推薦!
    「この本を読んでPCスキルをマスターすれば、それでメシを食えますよ」という評価もあるほどの内容。面白くて勉強になるとの声が多い。

この機会に「スッキリわかるPython入門 第2版」を手に入れ、プログラミングの世界に一歩踏み出しましょう。下のリンクをクリックして、詳細をチェックしてみてください!

テックジムの経験が詰まったPythonプログラミング講座

プログラミング教育において、多くの初学者が挫折する理由をご存じでしょうか?実は、それには多くの共通点があります。テックジムは、その問題点を深く理解し、20年以上にわたって蓄積してきた経験をもとに、誰もが安心して学べるプログラミング講座を提供しています。

テックジムは、ただの学習場ではありません。プログラミングを始めたい方や、より高いレベルに達したい方々に向けた、実践的な学びの場です。私たちが提供するカリキュラムは、初心者が直面する課題や躓きやすいポイントを徹底的に研究し、それを解決するためにデザインされています。

多くのプログラミングスクールが、フレームワークや複雑な技術から始めることで、学習者に過度な負担をかけ、結果として挫折を生む原因となっています。テックジムでは、まずは本当に重要な基礎からスタートすることで、無理なくスキルを積み上げていくことができます。例えば、関数やクラスといったプログラミングの核心部分をしっかりと理解し、それを使いこなすための時間を十分に確保しています。

これにより、受講生たちは無駄な混乱を避け、確実にスキルを身につけていくことができるのです。テックジムでの学びは、単なる知識の詰め込みではなく、実際に「できる」ことを目指した実践的なトレーニングです。

テックジムのPythonプログラミング講座は、経験と実績が詰まった講座です。初心者でも安心して参加でき、確実にステップアップできるこの講座で、あなたもプログラミングの世界に飛び込んでみませんか?

挫折を防ぐカリキュラム

プログラミング学習に挑戦した多くの人が、途中で挫折してしまうことがあります。これは、難解なフレームワークや複雑な概念にいきなり取り組むことが主な原因です。しかし、テックジムではそのような挫折を未然に防ぐため、独自のカリキュラムを採用しています。

テックジムのカリキュラムは、まず基礎をしっかりと固めることから始めます。関数やクラスといったプログラミングの根幹をじっくり学ぶことで、無駄な負荷をかけずに確実にスキルを身につけることができます。このアプローチにより、学習者は「何をやっているのかわからない」という混乱を避け、自信を持って次のステップに進むことができます。

また、テックジムでは、段階的にスキルを積み上げることで、学習の進行に伴う負担を最小限に抑えています。その結果、無理なく、着実にプログラミングの世界で成功を収めることができるのです。

テックジムのプログラミング講座は、学ぶことの楽しさを実感しながら、挫折せずに成長できる最適な環境を提供します。

最新の技術と経験豊富なサポートの融合

プログラミング学習において、最新技術の活用は欠かせません。テックジムでは、ChatGPTを用いた学習サポートを取り入れています。ChatGPTは、あらゆる質問に即座に答え、コードのバグ解決もスムーズにサポートします。これにより、効率的に学習を進めることが可能です。

しかし、テックジムの強みは、これだけではありません。どんなに優れたAIでも、人間のコーチによる個別サポートの価値は計り知れません。テックジムでは、経験豊富なプロのコーチがあなたの学習を支えます。プログラミングの基礎から応用まで、丁寧な指導と的確なフィードバックを提供し、あなたが抱える疑問や課題を一つ一つ解決していきます。

このように、最新の技術とプロのコーチングを組み合わせることで、テックジムでは、効率的でありながらも確実にスキルを身につけることができる学習環境を提供しています。

テックジムで学びながら、最先端のAI技術とプロの指導のベストな融合を体験してみませんか?

成果を実感できるカリキュラム

テックジムのPythonプログラミング講座は、その効果と実績で多くの受講生から高い評価を受けています。8月には180名を超える方々がこの講座にエントリーし、その人気と信頼の高さを証明しています。

この講座では、受講生が着実にスキルを身につけ、成長していることを実感できるカリキュラムを提供しています。プログラミングの基礎から実践的な応用まで、段階的に学べる内容は、初心者から経験者まで幅広く対応しています。また、学んだ知識をすぐに実践に移せる環境を整えており、学習の成果をリアルタイムで確認できるのも大きな特徴です。

テックジムの講座を受講した多くの方々が、「理解が深まった」「自信を持ってコードを書けるようになった」といった喜びの声を寄せています。これまでに培った経験と実績を活かし、受講生一人ひとりが成功への第一歩を踏み出せるよう全力でサポートしています。

あなたも、この成果を実感できるカリキュラムで、プログラミングスキルを確実に伸ばしてみませんか?

まずは無料体験からスタート!

プログラミングに興味はあるけれど、いきなり本格的な学習に踏み出すのは少し不安…そんな方に最適なのが、テックジムの無料体験です。まずは気軽に始めてみたい、という方のために、テックジムではデモレッスンを提供しています。

この無料体験では、実際のカリキュラムの一部を体験し、学習の進め方や講師のサポートを実感することができます。受講前に「自分に合っているかどうか」を確認できるので、安心してスタートを切ることができます。

プログラミングが全く初めての方も、すでにある程度の経験を持っている方も、まずはこの無料体験で、テックジムの学びを体感してみませんか?今すぐ始める一歩が、あなたの未来を大きく変えるかもしれません。

無料体験は随時開催中です。ぜひこの機会に、新たなスキルを手に入れるための第一歩を踏み出してみてください!

よかったらシェアしてね!
  • URLをコピーしました!
目次