Masayan tech blog.

  1. ブログ記事一覧>
  2. Pythonの人気ライブラリpandasの基本

Pythonの人気ライブラリpandasの基本

公開日

環境

  • Windows 10
  • Python 3.10.1
  • Pandas 1.4.1

Pandasのデータ構造

基本

  • Pandasには、大きく2種類のデータ構造がある
    • Pandas.Series
      • 1次元、つまり1列分だけ値が存在する構造
      • シリーズはデータ(values)とそれに対応する行ラベル(index)を持つ、1次元データ構造
    • Pandas.DataFrame
      • 行と列からなる2次元構造
      • DataFrameから1列を抽出した場合はSeries扱いになる
      • エクセルのようなテーブル形式のデータ構造

データ例

  • 行は行番号と行名、列は列番号と列名でそれぞれ指定できる
  • 例えば、言語名という列は列番号でいうと、1になる
  • 以下のようなデータだと、行番号は行名と一致しているのでどちらの方法で指定したとしても"0"になる

行・列はそれぞれ0始まりなので注意しましょう

Pandasのデータ生成方法

SeriesとDataFrameはそれぞれ以下のように生成できる

Series

import pandas as pd
pg_lang_series = pd.Series(["PHP", "Java", "Python", "Ruby"])
print(pg_lang_series)

// 左の列がindex(行名)、右が値
0 PHP
1 Java
2 Python
3 Ruby

dtype: object

DataFrame

import pandas as pd

pg_lang_data_frame = pd.DataFrame(
  data, columns=["言語名", "型"]
)
print(pg_lang_data_frame)

// 一番左側の0,1,2,3index(行名)、一番上の0,1column(列名)
  0   1
0 PHP 動的型付け
1 Java 静的型付け
2 Python 動的型付け
3 Ruby 動的型付け

特定の列だけを取得するには以下

df[0]※もしくは、カラム名がわかれば以下 df["言語名"]// 0 PHP 1 Java 2 Python 3 Ruby

Pandasのデータ取得方法

  • 他にも結構種類がありますが、とりあえずこの辺りさえ押さえておけばいけるであろうメソッドです
  • atとiat、locとilocの違いは、行名列名で指定するか、行番号・列番号で指定するか
  • at・iatとloc・ilocの違いは単独の要素の取得か範囲指定した要素の取得か
  • 処理速度はat、iatのほうがlocやilocよりも速いので、単独の要素を取得したい場合はat、iatを使用するほうがよい

メソッド名

内容

使用例

at

行名と列名で位置を指定を指定して単独の要素の値を取得

df.at[行名, 列名]

iat

行番号と列番号を指定して単独の要素の値を取得

df.iat[行番号, 列番号]

loc

行名もしくは列名で指定して単独/複数の要素を取得

df.iloc[開始行名, 終了行名, 開始列名, 終了列名]

iloc

行番号と列番号で指定して単独/複数の要素を取得

df.iloc[開始行番号, 終了行番号, 開始列番号, 終了列番号]

ilocで行番号のみ指定した場合は全カラムが対象になります

また、locとilocの範囲指定は、上記のようなリスト形式[a, b, c, ...]やスライスstart:stop:step形式でデータの範囲・位置を指定します

まとめ

いかがでしたでしょうか。本記事では、Pythonの人気ライブラリpandasの基本について紹介しています。ぜひ参考にしてみてください