Python
 Computer >> コンピューター >  >> プログラミング >> Python

Python Pandasでデータフレームの摂氏(℃)列を華氏(℉)に変換する方法

PythonのPandasライブラリを使えば、データフレーム内の摂氏(Celsius)データを簡単に華氏(Fahrenheit)へ変換できます。本記事では、df.assign()df.apply()の2つのアプローチを用いた具体的な実装方法を解説します。

温度変換の基本公式

摂氏から華氏への変換は、以下の公式に基づいて行われます。

華氏(℉)= 摂氏(℃)× 9/5 + 32

この計算式をラムダ関数(lambda)の中に組み込むことで、データフレーム全体に対して効率的に変換処理を適用できます。

変換結果のイメージ

摂氏から華氏への変換を実行すると、以下のような結果が得られます。

Id Celsius Fahrenheit
0 1 37.5 99.5
1 2 36.0 96.8
2 3 40.0 104.0
3 4 38.5 101.3
4 5 39.0 102.2

解決策1:df.assign()を使う方法

df.assign()は、既存のデータフレームを変更せずに新しい列を追加できる便利なメソッドです。手順は以下の通りです。

  • 「Id」と「Celsius」の列を持つデータフレームを定義します。
  • df.assign()関数の中でラムダ関数を使用し、(9/5)*x['Celsius']+32という計算式で摂氏の値を華氏に変換して、「Fahrenheit」という新しい列に割り当てます。
df.assign(Fahrenheit = lambda x: (9/5)*x['Celsius']+32)

コード例

実際のコードを見てみましょう。

import pandas as pd
df = pd.DataFrame({'Id':[1,2,3,4,5],
                   'Celsius':[37.5,36,40,38.5,39]
                  })
print("DataFrame is\n",df)
df = df.assign(Fahrenheit = lambda x: (9/5)*x['Celsius']+32)
print(df)

出力結果

DataFrame is
 Id Celsius
0 1 37.5
1 2 36.0
2 3 40.0
3 4 38.5
4 5 39.0
 Id Celsius Fahrenheit
0 1 37.5 99.5
1 2 36.0 96.8
2 3 40.0 104.0
3 4 38.5 101.3
4 5 39.0 102.2

解決策2:df.apply()を使う方法

df.apply()は、行または列単位で関数を適用できるメソッドです。axis=1を指定することで、各行に対して処理を行えます。手順は以下の通りです。

  • 「Id」と「Celsius」の列を持つデータフレームを定義します。
  • df.apply()関数の中でラムダ関数を記述し、(9/5)*x['Celsius']+32で摂氏の値を華氏に変換します。axis=1を指定して行ごとに適用し、結果をdf['Fahrenheit']に保存します。
df['Fahrenheit'] = df.apply(lambda x: (9/5)*x['Celsius']+32,axis=1)

コード例

実際のコードを見てみましょう。

import pandas as pd
df = pd.DataFrame({'Id':[1,2,3,4,5],
                   'Celsius':[37.5,36,40,38.5,39]
                  })
print("DataFrame is\n",df)
df['Fahrenheit'] = df.apply(lambda x: (9/5)*x['Celsius']+32,axis=1)
print(df)

出力結果

DataFrame is
 Id Celsius
0 1 37.5
1 2 36.0
2 3 40.0
3 4 38.5
4 5 39.0
 Id Celsius Fahrenheit
0 1 37.5 99.5
1 2 36.0 96.8
2 3 40.0 104.0
3 4 38.5 101.3
4 5 39.0 102.2

まとめ

どちらの方法でも同じ結果が得られますが、使い分けのポイントがあります。

  • df.assign():元のデータフレームを保持したまま新しい列を追加したい場合に便利です。メソッドチェーンとも相性が良いです。
  • df.apply(axis=1):より複雑な行単位の処理が必要な場合に柔軟に対応できます。

シンプルな列同士の計算であれば、df['Fahrenheit'] = (9/5)*df['Celsius']+32のようにベクトル化された演算を直接使うのが最も高速で推奨される方法です。用途に応じて最適な手法を選択しましょう。

  1. pandasのTimedeltaオブジェクトをPython標準のtimedeltaオブジェクトに変換する方法

    pandasのTimedeltaをPythonのtimedeltaに変換するpandasのTimedeltaオブジェクトをPython標準ライブラリ(datetimeモジュール)のtimedeltaオブジェクトに変換するには、to_pytimedelta()メソッドを使用します。pandasのTimedeltaはナノ秒単位の精度を持つのに対し、Python標準のtimedeltaはマイクロ秒までしか扱えません。そのため、変換時にはナノ秒の情報が切り捨てられる点に注意が必要です。1. 必要なライブラリをインポートするまず、pandasをインポートします。import pandas as pd2.

  2. 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-