初めに
Pythonのpandasについて初学者なりにまとめたいと思います。
学習に使っているのはこちらのキノコードです。
学習環境
JupyterLabを使用します。
初心者向けに使い方を紹介してますのでよければご覧ください。
使用するCSVファイル
出典:政府統計の総合窓口(e-Stat)
「男女別人口-全国,都道府県(大正9年~平成27年)」(総務省)を加工して作成
データ抽出の基礎
データの取り込み
まずは、CSVを読み込んでデータフレームを作成するところから始めます。
set_optionで表示列数と行数を変更します。
Pandasをimportし、read_csv関数で読み込んで、dfに代入します。
ipynbファイルと同階層いCSVを配置しておくと、パスを省略し、名前を指定するだけで読み込むことができます。
スライスで最初の3行を抽出
データフレームオブジェクトにスライスを使用することで、指定の行のデータを抽出することができます。
df[開始位置の行番号:終了位置の行番号]
カラムをシリーズで抽出
データフレームからカラムをシリーズで取得するには、角括弧でカラム名を指定します。
下記のように記述します。
データフレームの変数['カラム名']
カラムから条件に一致する値を抽出
特定のカラムにおいて条件に一致する値を取得するには、まずカラムと取得したい値を関係演算子(比較演算子)の==(イコール2つ)で結びます。
こうすることで、カラムの値が2015と等しい値にはTrue、異なる場合にはFalseが、シリーズとして取得されます。
最後に、その記述を角括弧の中に入れると、Trueの値が返された行のみでデータフレームが取得されます。
カラムから条件に一致しない値を抽出
Not演算子のにょろにょろ(~チルダ)を使用することで、条件を否定したものを抽出できます。
また、比較演算子である、ビックリマーク(!エクスクラメーションマーク)でも表現することが可能です。
複数条件で抽出
AND条件(かつ)やOR条件(もしくは)で値を抽出することができます。
2つの条件を満たすデータを抽出するには、論理演算子の(&アンパサンド)またはandを使用します。
2つの条件のいずれかを満たすデータを抽出するには、論理演算子のorまたは(|パイプライン) を使用します。
カラム名の変更
データフレームのカラム名を変更するには、renameメソッドを使用します。
df.rename(columns={'辞書型で': '変更後のカラム名'})と指定します。
queryメソッドを使用した抽出
queryメソッドを使用することで、特定の条件でデータ抽出をすることができます。
queryメソッドでは、引数に文字列で条件を指定します。
isinメソッドを使用した抽出
isinメソッドを使用してデータ抽出をすることもできます。
isinメソッドは、引数に指定した値が、データフレームの列の値に含まれるか否かをTrueまたはFalseで返します。
なお、引数に渡す値はリスト型で指定します。
この記述をデータフレームの角括弧で囲むと、Trueの値の行のみが抽出されます。
特定の文字列が含まれるデータを抽出
特定の文字列を含む要素を持つ行のデータを抽出するには、strメソッドとcontainsメソッドを組み合わせて使用します。
strメソッドとは、文字列表現を定義するために用いるメソッドです。
containsメソッドとは、特定の値を含むデータをTrueまたはFalseで返します。
特定の文字や文字列から始まるデータを抽出するには、strメソッドとstartswithメソッドを組み合わせて使用します。
特定の文字や文字列で終わるデータを抽出するには、strメソッドとendswithメソッドを組み合わせて使用します。
最大のデータを抽出
指定した列の最大値に当てはまるデータを抽出するには、まずmaxメソッドを使用します。
続いて、関係演算子(比較演算子)の==(イコール2つ)でdf['西暦(年)'] と結ぶことで、'西暦(年)'の最大値に等しいデータをTrueで返します。
最後に、この記述全体をデータフレームの角括弧で囲むことで、'西暦(年)'の最大値に等しい行がデータフレームとして表示されます。
locプロパティを使用してデータを抽出
locプロパティで、インデックス名とカラム名を指定してデータを抽出することもできます。
locプロパティの指定方法は、角括弧の中の第1要素にインデックス名、第二要素にカラム名を指定します。
終わり
覚えること多いですが、基本なのでしっかり押さえたいです。