【Python・Pandas】apply関数で行ごと・列ごとに処理を適用する方法
データ分析をしていると、データフレームの軸(axis)に沿って特定の関数や処理を適用したい場面によく出くわします。そんなときに便利なのが、Pandasのapply関数です。
axis引数を指定しない場合、デフォルトでは列方向(column-wise)の操作が適用され、各列がひとつの配列として扱われます。一方、axis=1を指定すると、操作は行方向(row-wise)で実行されます。
apply関数は、ドット演算子(.)を使ってデータフレームに対して呼び出します。以下に具体的な例を示します。
コード例
import pandas as pd
import numpy as np
my_data = {'Age': pd.Series([45, 67, 89, 12, 23]),
'value': pd.Series([8.79, 23.24, 31.98, 78.56, 90.20])}
print("The dataframe is :")
my_df = pd.DataFrame(my_data)
print(my_df)
print("The description of data is :")
print(my_df.apply(np.mean))
実行結果
The dataframe is :
Age value
0 45 8.79
1 67 23.24
2 89 31.98
3 12 78.56
4 23 90.20
The description of data is :
Age 47.200
value 46.554
dtype: float64
コードの解説
まず、必要なライブラリである
pandasとnumpyをインポートし、それぞれpd、npというエイリアス名を付けて使いやすくしています。次に、キーと値のペアからなる辞書を作成します。ここで値として指定しているのは、実際にはSeriesというデータ構造です。
作成した辞書は、pandasライブラリの
DataFrame関数に引数として渡され、データフレームが生成されます。生成されたデータフレームを
print関数でコンソールに出力して確認します。apply(np.mean)を呼び出すことで、各列(デフォルトのaxis=0)に対してNumPyの平均値計算が適用されます。その結果、「Age」列の平均が47.200、「value」列の平均が46.554としてコンソールに出力されます。
axis引数の挙動まとめ
| 指定内容 | 動作 |
|---|---|
axis=0(デフォルト) | 各列に対して関数が適用される |
axis=1 | 各行に対して関数が適用される |
なお、平均値だけでなく、np.sum(合計)、np.max(最大値)、lambda式による独自の処理なども同様にapply関数へ渡せるため、柔軟なデータ加工が可能です。
-
PythonでpandasのDataFrameをCSVファイルに書き込む方法【to_csv()の使い方】
pandasのDataFrameをCSVファイルに出力する基本 PythonでpandasのDataFrameをCSVファイルに書き込むには、to_csv()メソッドを使用します。このメソッドは、DataFrameの内容をそのままCSV形式で保存できる、最もシンプルで一般的な方法です。 まずはサンプルデータとして、リストを値にもつ辞書を作成しましょう。 # リストの辞書を定義 d = {Car: [BMW, Lexus, Audi, Mercedes, Jaguar, Bentley], Date_of_purchase: [2020-10-10, 2020-10-12, 2020-
-
Python Pandasでデータフレームの列の値をX軸ラベルとして設定する方法
PythonのPandasでデータフレームの列の値をX軸ラベルとして設定するには、plot()メソッドの引数にxticksを指定します。これにより、データの値をそのまま目盛りラベルとして表示できるため、グラフがより読みやすくなります。手順図のサイズを設定し、サブプロット間および周囲の余白(パディング)を調整します。Pandasを使って、column1というキーを持つデータフレームを作成します。plot()メソッドでデータフレームをプロットし、column1の値をX軸ラベルとして指定します。図を表示するには、show()メソッドを使用します。コード例import pandas as pd fro