はじめに
この実験では、Python の Pandas ライブラリを使って文字列データを操作する方法を学びます。文字列の文字を小文字に変換したり、文字列の一部を抽出したり、文字列の値を置き換えたりする方法など、様々な Pandas の組み込みメソッドを学びます。
VM のヒント
VM の起動が完了したら、画面の左上隅をクリックしてノートブックタブに切り替え、Jupyter Notebook を使って練習しましょう。
時々、Jupyter Notebook が読み込み終わるまで数秒待つ必要がある場合があります。Jupyter Notebook の制限により、操作の検証は自動化できません。
学習中に問題があった場合は、Labby にお問い合わせください。セッション後にフィードバックを提供してください。すぐに問題を解決いたします。
必要なライブラリとデータのインポート
まずは、Pandas ライブラリをインポートして、このチュートリアルで使用するデータを読み込みましょう。
## 必要なライブラリをインポート
import pandas as pd
## データを読み込む
titanic = pd.read_csv("data/titanic.csv")
文字列を小文字に変換する
次に、Name列のすべての文字を小文字に変換します。これを達成するために、str.lower()メソッドを使用します。
## 'Name'列のすべての文字を小文字に変換する
titanic["Name"] = titanic["Name"].str.lower()
名前から苗字を抽出する
次に、乗客の苗字を含む新しい列Surnameを作成しましょう。これは、Name列のカンマの前の部分を抽出することで達成されます。
## 'Name'列をカンマで分割し、最初の部分を抽出する
titanic["Surname"] = titanic["Name"].str.split(",").str.get(0)
特定の乗客データを抽出する
次に、タイタニック号の船内にいた伯爵夫人たちの乗客データを抽出しましょう。Name列に'Countess'という単語が含まれる行を見つけるために、str.contains()メソッドを使用します。
## 'Name'に'Countess'が含まれる行を見つける
countesses = titanic[titanic["Name"].str.contains("Countess")]
最長の名前を見つける
タイタニック号の乗客の中で最も長い名前を持つ人を見つけてみましょう。各名前の長さを取得するためにstr.len()メソッドを、最長の名前のインデックスを見つけるためにidxmax()メソッドを使用します。
## 各名前の長さを取得する
name_lengths = titanic["Name"].str.len()
## 最長の名前のインデックスを見つける
longest_name_index = name_lengths.idxmax()
## 最長の名前を取得する
longest_name = titanic.loc[longest_name_index, "Name"]
列の値を置き換える
最後に、Sex列の値を置き換えましょう。「male」を「M」に、「female」を「F」に置き換えます。これにはreplace()メソッドを使用します。
## 'Sex'列の'male'を'M'に、'female'を'F'に置き換える
titanic["Sex_short"] = titanic["Sex"].replace({"male": "M", "female": "F"})
まとめ
この実験では、Python の Pandas ライブラリを使って文字列データを操作する方法を見てきました。文字列を小文字に変換したり、文字列の一部を抽出したり、文字列の内容に基づいて特定の行を見つけたり、最長の文字列を見つけたり、文字列を置き換えたりする方法を学びました。この知識は、データ分析や機械学習における重要なステップであるデータ前処理において非常に役立ちます。