データフレーム(DataFrame)とは
DataFrameはラベル付きニ次元配列とのこと。
基本的な内容については今西先生の以前の講義、
Python 無料で独習 022 外部ライブラリ(Pandas)
でも学習していますが、
キノコード先生の講義でより深く学習したいと思います。
配列とはデータの集まりでそのデータが縦と横にひろがった
ものが二次元配列です。
行と列で定義されてます。
図で言うとこんな感じです。
行、列ともに名前を付与することができるので
ラベル付き 二次元配列というそうです。
以前の講義のようにCSVデータを読み込んで
データフレームとして扱う事もできますし、
コードの記述でデータフレームを作ることもできます。
リスト型の値を持った配列を使う方法
import pandas as pd
df = pd.DataFrame([[1,2,3],[4,5,6],[7,8,9]],
columns=['col01','col02','col03'],
index=['idx01','idx02','idx03'])
df
col01 col02 col03
idx01 1 2 3
idx02 4 5 6
idx03 7 8 9
2次元の配列を記述する場合は
リストの中にリストを作るイメジーです。
[]のなかに,で区切られたリストが入り3行のデータフレームができます。
そこへculumns と index のリストを挿入して
それぞれにラベルを付けます。
実行するとDataFrameの完成です。
NumPyの配列を使う方法
Numpyは以前の講義で学習していますが
Python 無料で独習 021 外部ライブラリ(NumPy)
で学習していますが、
その時はGoogleCoraboratryを使用していたので
そのままimportできましたが、jupyternotebookでは初めて使うので
インストールする必要があります。
!pip install numpy
import numpy as np
df = pd.DataFrame(np.array([[1, 2, 3], [4, 5, 6], [7, 8, 9]]),
columns=['col01', 'col02', 'col03'],
index=['idx01', 'idx02', 'idx03'])
df
col01 col02 col03
idx01 1 2 3
idx02 4 5 6
idx03 7 8 9
辞書型データを使う方法
次は辞書型です。
辞書は通常 値 : 値 という形をとりますが、
ここでは カラム名 : [データ]という形でデータフレームを作成、
そのあとindex名を付与しています。
df = pd.DataFrame({'col01':[1, 2, 3],
'col02':[4, 5, 6],
'col03':[7, 8, 9]})
df.index = ['idx01', 'idx02', 'idx03']
df
col01 col02 col03
idx01 1 4 7
idx02 2 5 8
idx03 3 6 9
index culumnsは後付けが可能です。
renameメソッドを使ってラベルを編集
renameメソッドを使って、行名・列名を変更することができます。
辞書型で要素をいれて変更したいラベルと変更後の名前を入力します。
columns={変更前:変更後}
indexも同様に変更が可能です。
index={変更前:変更後}
コードは下記です。
df = df.rename(columns={'col04': 'x'})
#カンマで区切れば複数の同時変更も可能です。
df = df.rename(columns={'col05': 'y','col06': 'z'})
#INDEXのラベル変更も可能です。
df = df.rename(index={'idx01': 'w'})
locメゾットを使ったデータの操作
df = pd.DataFrame({'col01':[1, 2, 3],
'col02':[4, 5, 6],
'col03':[7, 8, 9]}
,index=['idx01', 'idx02', 'idx03'])
df
col01 col02 col03
idx01 1 4 7
idx02 2 5 8
idx03 3 6 9
上記データフレームを定義して
6
行と列を指定することで値をしていすることができます。
さらに
df.loc['idx03','col02']=100
とすると指定した値を変更することができます。
df.loc['idx03','col02']=100
df
col01 col02 col03
idx01 1 4 7
idx02 2 5 8
idx03 3 100 9
6だった部分は100に変更されています。
また複数データの一括変更も可能です。。
df.loc[:,'col03']=['Tokyo','Osaka','Hokkaido']
とすると
df.loc[:,'col03']=['Tokyo','Osaka','Hokkaido']
df
col01 col02 col03
idx01 1 4 Tokyo
idx02 2 5 Osaka
idx03 3 100 Hokkaido
行数・列数取得
df.dtypesとするとデータの型を調べることもできます。
また
col01 col02 col03
idx01 1 4 Tokyo
idx02 2 5 Osaka
idx03 3 100 Hokkaido
df = df.T
df
idx01 idx02 idx03
col01 1 2 3
col02 4 5 100
col03 Tokyo Osaka Hokkaido
コメント