環境
- 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扱いになる
- エクセルのようなテーブル形式のデータ構造
- Pandas.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,3がindex(行名)、一番上の0,1がcolumn(列名)
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の基本について紹介しています。ぜひ参考にしてみてください