Python 無料で独習 データフレーム(DataFrame)とはPandas入門04

Python
この記事は約6分で読めます。

データフレーム(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

上記データフレームを定義して

df.loc['idx03','col02']を実行すると
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.shapeとすると行数、列数を取得できます。
df.dtypesとするとデータの型を調べることもできます。

また

df = df.T
とすると行と列の入れ替えも可能です。

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

コメント

タイトルとURLをコピーしました