はじめに
Pandasの演算、加工の基本に関しての備忘録です。
コードを書き始めて1年以内の若輩者です😅
もし間違いがあれば、ご指摘いただけると助かります🙇
🦁結論🦁
Excelのように列ごとに演算、加工が可能。
シンプルに列を選択して演算を入れて計算、加工することが可能。
押さえておくべき点
- 演算結果を元のDataFrameに直接反映させるか、新しいDataFrameを作成するかを選択できる。
- 日付や時刻のデータを加工して、曜日や月などの情報を抽出もできる。
注意点
- データ型を確認する必要がある。(特に、数値演算を行う際に文字列型のデータが含まれているとエラーが発生するため、dtype属性やastype()メソッドを用いてデータ型を確認・変換することが重要)
- inplace=Trueの使用: 元のデータを上書きすると、元に戻せないため注意が必要。
コード例
数値での演算
新しい欄を作成してそこに演算した数値を反映させる。
既存部分に追加するなど可能。
import pandas as pd
# データフレームの作成
df = pd.DataFrame({
'A': [1, 2, 3, 4],
'B': [10, 20, 30, 40]
})
# 列Aに2を足す
df['A'] = df['A'] + 2
# 列Bから列Aを引いた結果を新しい列Cに保存
df['C'] = df['B'] - df['A']
# 列Aの平均値を計算
average_of_A = df['A'].mean()
# 条件付きで新しい列Dを作成(列Aが3より大きい場合はTrue、そうでなければFalse)
df['D'] = df['A'] > 3
# 日付列の加工(ここではサンプルとして現在日付を追加)
df['Date'] = pd.to_datetime('2024-02-27')
df['Year'] = df['Date'].dt.year
print(df)
文字列の演算
文字列になにかを追加したい場合にも使える。
import pandas as pd
# データフレームの作成
df = pd.DataFrame({
'First Name': ['John', 'Jane', 'Jim', 'Jill'],
'Last Name': ['Doe', 'Doe', 'Smith', 'Johnson']
})
# 名前と姓を結合してフルネームを作成
df['Full Name'] = df['First Name'] + ' ' + df['Last Name']
# 文字列の置換(例えば、'John'を'Jonathan'に置換)
df['First Name'] = df['First Name'].replace('John', 'Jonathan')
# 文字列の大文字化
df['Last Name'] = df['Last Name'].str.upper()
# 特定の文字列を含む行をフィルタリング
contains_doe = df['Last Name'].str.contains('DOE')
# 文字列の長さを新しい列に追加
df['Name Length'] = df['Full Name'].str.len()
print(df)
print(contains_doe)
まとめ✍️
Excelよりも全然早く、また自由も効く。
文字列も色々反映できる。
参考にした記事📕
[Pandasの基本~表
形式データ・データ分析~初心者向けのDataFrameの操作入門!]
(https://youtu.be/HYWQbAdsG6s?si=m4Tl3UlmXLlhTxhZ)