目次
ポケモンのデータで学ぶPython
Python(パイソン)というプログラミング言語を、ポケモンという誰もが知っているコンテンツで学んでいく企画です
今回はPythonで「文字列」を扱う方法をご紹介します
- 文字数を数える
- 文字列を変換する
- 文字列を分割する
- 大文字-小文字変換する
- 半角-全角変換する
今回利用するデータについてや、Pythonのセットアップは下記記事をご覧ください
ポケモンで学ぶデータ分析|データの中身を知ろう ポケモンで学ぶPython|#1 セットアップを始めよう事前準備
Pandasを事前にインポートしておきます
import pandas as pd
ポケモンのデータ(Excel:105 KB)をダウンロードし、Pythonで読み取ってください
# Pokemon_Englishのシートを変数(df)に格納する
df = pd.read_excel('/content/drive/MyDrive/Python/API/pokemon_data.xlsx',
sheet_name='Pokemon_English')
df.head()
文字数を数える
名前の文字数を数えてください
df['名前'].apply(lambda x: len(x))
lenと関数lambdaを組み合わせて、文字数を数えます
名前に「ギ」が入っている数を数えてください
df['名前'].str.count('ギ')
countを活用して特定の文字列を数えます
文字列として扱うためにstrも忘れずに付けてください
名前に「ギ」か「ス」が入っている数を数えてください
df['名前'].str.count('ギ|ス')
指定の文字列に|を使うと、OR条件で検索することができます
英語名のアルファベット(a~z)をそれぞれ数えてください【高難度】
df_alphabet = pd.DataFrame()
for i in [chr(ord("a")+i) for i in range(26)]:
temp = df['name'].str.count(i)
df_alphabet[i] = temp
df_alphabet = pd.concat([df[['名前','name']],df_alphabet], axis=1)
df_alphabet.head(10).style.background_gradient()
「a」から「z」までのアルファベットをリストで用意し、繰り返し処理で26文字分をcountで数えます
別の変数に格納しておき、名前とアルファベットの文字数をconcatで結合します
最後にstyleで色付けすると、非常に見やすくなります
【Python】concat|複数のデータを連結する 【Python】DataFrameを見やすくする方法|style文字列を変換する
名前の「ヒトカゲ」を「***」に変換してください
df['名前'].replace('ヒトカゲ','***')
replaceを使うと文字列を変換することができます
【Python】replace|データ内容を別の内容で置き換える(置換)名前の「ギ」を「*」に変換してください
df['名前'].replace('ギ','*',regex=True)
replaceのパラメータregexをTrueとすることで、一部の文字のみを変換することができます
文字列を分割する
名前の「ギ」をもとに文字列を分割してください
df['名前'].str.split('ギ')
splitを活用すると文字列を「分割」することができます
ただこのままだとリスト形式で使いにくいため、次の問題で列を増やします
【Python】区切り文字で文字列を分割する方法|split名前の「ギ」をもとに文字列を分割し、列を増やしてください
df['名前'].str.split('ギ', expand=True)
splitのパラメータexpandをTrueとすることで、分割結果を列として増やすことができます
大文字-小文字変換する
英語名を全て大文字にしてください
df['name'].str.upper()
初期値のポケモンの名前(name)はすべて小文字なので、upperを設定して大文字に変換します
strを前に付けないとエラーが出る可能性があるので注意です
【Python】英語の大文字・小文字を変換する方法英語名を全て小文字にしてください
df['name'].str.lower()
すでに全て小文字なので、特に作業は必要ありませんがlowerを使うことで小文字変換ができます
英語名を先頭だけ大文字にしてください
df['name'].str.capitalize()
capitalizeを使うと最初の文字だけを大文字に変換ができます
半角-全角変換する
半角-全角を変換するにはmojimojiを利用するため、事前にインストール・インポートしておきましょう
!pip install mojimoji
import mojimoji
名前を半角に変換してください
df['名前'].apply(mojimoji.zen_to_han)
zen_to_hanを使うと半角-全角の変換を実施することができます
【Python】文字列の全角・半角を変換する方法|mojimojiまとめ
今回は文字列をPythonで扱う方法についてご紹介してきました
- 文字数を数える
- 文字列を変換する
- 文字列を分割する
- 大文字-小文字変換する
- 半角-全角変換する
機械学習モデルの作成で、人の名前から特徴量を算出することがあります
ぜひ覚えて使ってみてください