特に時系列や表形式 (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))
3
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
関連記事
機械学習/科学計算/データ分析でよく利用するツールやライブラリは以下をご覧ください。
ディープラーニングに関する記事は以下のとおりです。
- 【ディープラーニング入門1】AI・機械学習・ディープラーニングとは
- 【ディープラーニング入門2】パーセプトロン・ニューラルネットワーク
- 【ディープラーニング入門3】バックプロパゲーション (誤差逆伝播法)
- 【ディープラーニング入門4】学習・重み・ハイパーパラメータの最適化
- 【ディープラーニング入門5】畳み込みニューラルネットワーク (CNN)
参考資料
pandas documentation — pandas 2.2.0 documentation