【入門】Pandas とは?使い方をわかりやすく解説

Pandas

Pandas とは、Python 用のデータ分析ライブラリです。

特に時系列や表形式 (CSV ファイルデータベースのテーブル) データの操作を得意とします。

スポンサーリンク

初めに

本記事では、機械学習/科学計算/データ分析でよく利用する Pandas の紹介です。

その他の記事は以下をご覧ください。

なお、本記事では実行環境に Jupyter Notebook を利用しています。

スポンサーリンク

Pandas の使い方

本記事では以下の順で Pandas の使い方を紹介します。

Pandas のインストール

pip install pandas
スポンサーリンク

Series の使い方

Series とは、1次元データです。
通常、時系列データを含みます。

なお、時系列データの具体例は "2019-06-21 00:00:00+00:00" などです。

Series を作成

import pandas as pd
s = pd.Series([10, 20, 30])
print(s)
0    10
1    20
2    30

行名が「0, 1 , 2」となっていますが、これを index と呼びます。

n 番目の値を取り出す

print(s[0])
10

指定した範囲の値を取り出す

index が0 以上、2 未満の値を取り出します。

print(s[0:2])
0    10
1    20

DataFrame の使い方

DataFrame とは、2次元データです。
通常、表形式のデータを表します。

DataFrame の作成

DataFrame を作成

import pandas as pd
df = pd.DataFrame([[10, 20], [11, 21], [12, 22]])
print(df)
    0   1
0  10  20
1  11  21
2  12  22

行名が「0, 1 , 2」を index、列名「0, 1」を column と呼びます。

index, column に名前付け

df = pd.DataFrame([[10, 20], [11, 21], [12, 22]],
                                    index=["id1", "id2", "id3"],
                                    columns=["col1", "col2"])
print(df)
col1  col2
id1    10    20
id2    11    21
id3    12    22

Series を columns として DataFrame を作成

s1 = pd.Series([10, 11, 12])
s2 = pd.Series([20, 21, 22])
df = pd.DataFrame({'col1':s1, 'col2': s2})
print(df)
   col1  col2
0    10    20
1    11    21
2    12    22

Series を index として DataFrame を作成

s1 = pd.Series([10, 11, 12])
s2 = pd.Series([20, 21, 22])
df = pd.DataFrame([s1, s2])
print(df)
    0   1   2
0  10  11  12
1  20  21  22

CSV ファイルを読み込む

同一ディレクトリ上に、次の CSV ファイルを用意します。

col1, col2
10,20
11,21
12,22
df = pd.read_csv('test.csv')
print(df)
   col1   col2
0    10     20
1    11     21
2    12     22

行/列の操作

列を取得

print(df.col1)
0    10
1    11
2    12

行を取得

print(df.loc[0])
col1     10
 col2    20

行と列の両方を指定

print(df.at[0, 'col1'])
10

指定した範囲の DataFrame を取得

index が2未満の DataFrame を取得

print(df[:2])
col1	col2
0	10	20
1	11	21

偶数行を取得

print(df[df.index % 2 == 0])
   col1   col2
0    10     20
2    12     22

奇数行を取得

print(df[df.index % 2 == 1])
   col1   col2
1    11     21

列を追加

df['new_col'] = 1
print(df)
   col1   col2  new_col
0    10     20        1
1    11     21        1
2    12     22        1
pandas.DataFrameに列や行を追加(assign, appendなど) | note.nkmk.me
pandas.DataFrameに新たな列または行を追加する方法を説明する。新規の列名・行名を指定して追加する、pandas.DataFrameのassign()またはinsert()メソッドで追加する、pandas.concat()関数で連結する、といった方法がある。pandas.DataFrameに列を追加新規列名...

列の削除

df = df.drop(columns='new_col')
print(df)
   col1   col2
0    10     20
1    11     21
2    12     22

行を追加

df.loc['new_id'] = 2
print(df)
        col1   col2
0         10     20
1         11     21
2         12     22
new_id     2      2
pandas.DataFrameに列や行を追加(assign, appendなど) | note.nkmk.me
pandas.DataFrameに新たな列または行を追加する方法を説明する。新規の列名・行名を指定して追加する、pandas.DataFrameのassign()またはinsert()メソッドで追加する、pandas.concat()関数で連結する、といった方法がある。pandas.DataFrameに列を追加新規列名...

行の削除

df = df.drop(index='new_id')
print(df)
   col1   col2
0    10     20
1    11     21
2    12     22

DataFrame の情報の取得

DataFrame の行数を取得

print(len(df))

DataFrame の列数を取得

print(len(df.columns))
2

DataFrame の行/列数を取得

print(df.shape)
(3, 2)

DataFrame の要素数を取得

print(df.size)
6

計算

最大を取得

print(df.max())
col1     12
 col2    22

最小を取得

print(df.min())
col1     10
 col2    20

平均を取得

print(df.mean())
col1     11.0
 col2    21.0

データ処理

NaN の要素を0埋め

import pandas as pd
import math
 
s = pd.Series([2, 5, 8, None])
 
for i, num in enumerate(s):
    if(math.isnan(num) == True): #NaN なら0埋め
        s[i] = 0
print(s)
0    2.0
1    5.0
2    8.0
3    0.0

関連記事

機械学習/科学計算/データ分析でよく利用するツールやライブラリは以下をご覧ください。


ディープラーニングに関する記事は以下のとおりです。

参考資料

pandas documentation — pandas 2.2.0 documentation