Pandas②データフレームとは

目次

当記事について

Python学習を独学でいろいろ手を出してきた結果、YouTube学習に落ち着きました。

記事という体裁をとっていますが、動画視聴後の復習での振り返り用として主に自分に向けて記事を書いています。

YouTube学習を決めた経緯

YouTubeでは数多のプログラマーの方々が非常に有益な情報を発信してくれています。

そんな多くのチャンネルの中からキノコードさんに辿り着いたのは偶然でした。

動画の解説が自分にとっては分かりやすく、初学者に向けて作成してくれている点も視聴開始のきっかけとなりました。

そのため、YouTube学習はキノコードさんのチャンネルに絞って学習しています。

Youtube:キノコード/プログラミング学習チャンネル

データフレームとは

Pandasが得意なデータ解析

  • データを取得(データフレーム)
  • グループごとに収集
  • 並び替えをする
  • グラフ化

データフレーム

  • Excelの表形式のように行と列で成り立つ
  • データベースも同様に表形式である

データフレーム=ラベル付き2次元配列

配列とは、いくつものデータが集まったものである。

配列が1つなら、1次元配列

A-1A-2A-3A-4A-5
配列が1つなので1次元配列

これが二次元になると縦にデータが広がっていく

A-1A-2A-3A-4A-5
B-1B-2B-3B-4B-5
C-1C-2C-3C-4C-5
縦に3行横に5列なので2次元配列

データフレームの作成方法

1.リスト型の値を持った配列を使う

import pandas as pd
まずはライブラリのpandasをインポートする

2.NumPyの配列を使う

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

np.arrayは、ココから配列を作りますよーという意味で実際にそれ以後にリストを渡している

indexの名前を取得する

df.index

dtype=’object’のobjectは、indexが文字列型ですよってこと

columnsの名前を取得する

df.columns

indexのときと同じようにobject型ということが分かった

3.辞書型を使う

df = pd.DataFrame({‘col01’:[1, 2, 3],
‘col02’:[4, 5, 6],
‘col03’:[7, 8, 9]})
df
辞書型なので{ }を使っている

データフレームを作ることができたが、indexを指定していなかったため、データフレームには0、1、2と表示されている。

ここからindexを指定していく。

①indexを追加する


df = pd.DataFrame({‘col01’:[1, 2, 3],
         ’col02′:[4, 5, 6],
         ’col03′:[7, 8, 9]})
df.index=[‘idx01’, ‘idx02’, ‘idx03’]
df

最初に書いた記述に追加する形でindexを記述する

うまくindexを追加することができた。

②一緒にindexも記述する

df = pd.DataFrame({‘col01’:[1, 2, 3],
‘col02’:[4, 5, 6],
‘col03’:[7, 8, 9],
index=[‘idx01’, ‘idx02’, ‘idx03’])
df
同じコード内に一緒に書いちゃう方法

これもうまくindexを追加することができた。

columnsもindexも指定しないデータフレームを作る

ここまでデータフレームを作る際にcolumnsやindexを指定して作成してきたが、今度はどちらも指定しないデータフレームを作ってみるとどうなるか。

df = pd.DataFrame([[1, 2, 3],
[4, 5, 6],
[7, 8, 9]])
df
columnsもindexどちらも指定しないデータフレーム

このようにcolumnsもindexどちらも指定していないため、0、1、2の数値でデータフレームが作成された。

作成したデータフレームにcolumnsとindexを付け加える

df.columns-[‘col01’, ‘col02’, ‘col03’]
df.index=[‘idx01’, ‘idx02’, ‘idx03’]
df

すると、このような感じでcolumnsとindexが付け加えられた。

columnsの名前を変更する

df.columns=[‘col04’, ‘col05’, ‘col06’]

あとからcolumnsを付け加えたのと同じ方法で、名前の変更も可能。

renameメソッドでcolumnsの名前を変更する

renameメソッドで名前を変更する

renameを使うことで、行名や列名を変更することができる

df = df.rename(columns={‘col04’ : ‘x’})
df
{変更前の名前:変更後の名前}

このように名前をcol4からxに変更することができた

同時に2つ以上の名前を変更する

df = df.rename(columns={‘col05’ : ‘y’, ‘col06’ : ‘z’})
df
辞書型で{ }を使い2つの変更を行う

まとめて2つの名前を変更することができた

renameメソッドでindexの名前を変更する

df = df.rename(index={‘idx01’ : ‘w’})
df
idx01の名前をwに変更するコード

idx01からwに変更できたのが確認できた。

データフレームから1列だけ取り出す方法

df[‘x’]

このように1列だけ取り出すことができた。

dtype:int64というのは取り出した部分が数値ですよーという意味

データフレームから1列取り出したときのデータ型を確認する

type(df[‘x’])

すると、Seriesと表記されていることがわかる。

データフレームから1列取り出すとシリーズになる、ということらしい。

データフレーム型のままデータを取得したい場合

df[[‘x’]]

なんだかわかりにくいが、書き方をちょこっとかえるだけで、データの型が変わるということ

  • df [ ‘ X ‘ ] ( [ ]がひとつだとシリーズになる )
  • df [ [ ‘ x ‘ ] ] ( [ [ ] ] のように2つ使うとデータフレーム型になる )

locメソッドで列を取得する

locメソッドとは

locは行名や列名を指定して、行や列を取得することができる

df.loc[ ‘ w ‘ ]

locメソッドで行と列を指定して取得する

idx01とcol02が交差する数値「2」を取得してみる
df . loc[ ‘ idx01 ‘ , ‘ col02 ‘ ]
loc[ 行、列 ]の順に記述する

しっかりとデータを取り出すことができた。

locメソッドで列全体を取得する

df . loc [ : , ‘ col01 ‘ ]

loc[ : , ]の「:」は全部という意味をもつ

col01の列全体を取得することができた

ilocメソッドで列を取得する

  • locメソッド:indexやcolumnsの「名前」を指定してデータを取得する
  • ilocメソッド:行や列の「番号」を指定して行や列を取得する
df . iloc [ : , 0 ]

locメソッドで一度に複数のデータを変更する方法

df . loc [ : , ‘ col03 ‘ ] = [ ‘ Tokyo ‘ , ‘ Osaka ‘ , ‘ Hokkaido ‘ ]
df
変更後の値をリスト型にして渡す

スライスを使ってデータを取得する方法

スライス:リストや辞書型のようなデータが順番に並べられたものを取り出したいときにつかう操作のこと

df . loc [ : , ‘ col02 ‘ : ‘ col03 ‘ ]
col2とcol3の列のデータ全部という意味

ilocメソッドで複数列を取得する方法

df . iloc [ : , 1 : 3 ]

iloc [ A : C]と記述した場合、対象となるのはAとBになり、Cは含まれないので注意する必要がある

get_locメソッドを使い、行番号を取得する

get_loc( 引数 ):引数に列名を入れると、行番号や列番号を取得することができる

df . index . get_loc ( ‘ idx03 ‘ )

get_locメソッドで列番号を取得する

df . columns . get_loc ( ‘ col02 ‘ )

get_locメソッドで要素を変更する

df. iloc [df .index .get_loc ( ‘ idx03 ‘ ) , df . columns . get_loc ( ‘ col02 ‘ ) ] = 1000
df

データフレームの行数と列数を取得する方法

shapeを使うと行数と列数をまとめて取得することができる

df . shape

このデータフレームが3行3列のデータということがわかる。

indexとcolumnsを入れ替える方法

データフレームの行と列を入れ替える方法

上のデータフレームのindexとcolumnsを入れ替える

df = df . T

うまく入れ替えることができた。

まとめ

今回のデータフレームについては何度か動画視聴して実際にコードも書いてみたものの、あまりしっくりきていない。

前回のように具体的なデータを用いていないからかもしれない。

実際にデータを扱うようになったら、腹落ちするようなことがあるかもしれないが、現時点ではもやもやした感じが残る。

補足

この項はプログラミング言語PythonのライブラリであるPandasの学習復習用に整理したものである。

YouTubeチャンネル/キノコードさんが解説する動画を視聴し、あとで自分で見直しながらコードを書いていけるように内容をまとめたもの。

Pandas入門/04.データフレームとは

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

CAPTCHA