Python, pandasの基礎⑤ ~データフレームの基本操作① head(), 列の参照,代入編~

記事内に広告が含まれています。

どうも!僕です!
つか〇です!

「データフレーム作ったのはいいけど,何をどうすればいいのかわからん!」

って悩みにこたえたいと思います.
データフレームについての便利グッズ的なものを紹介していきますので,「こんなんあるんだ~」くらいで覚えていただければ幸いです.

データフレームの特徴と作成については,「Python, pandasの基礎④ ~データフレームの特徴と作成,基本操作編~」で紹介していますので,ぜひ参考にしてください.

基本操作① head()

では,データフレームの基本操作について見てみましょう.
最初に,pandasと次項以降で使うであろうnumpyとシリーズ,データフレームをインポートします.

import pandas as pd
import numpy as np
from pandas import Series, DataFrame

では,「Python, pandasの基礎④ ~データフレームの特徴と作成,基本操作編~」でも用いたデータフレームを以下のように作成します.

data = {"City": ["Hikone", "Hikone", "Kusatsu", "Kusatsu", "Kusatsu", "Hikone"],
       "year": [2010, 2011, 2012, 2013, 2014, 2015],
       "data": [3.2, 4.3, 2.1, 3.4, 5.6, 2.5]}                #ディクショナリを作成
frame = pd.DataFrame(data)                                    #データフレーム作成
frame


        City	year	data
0	Hikone	2010	3.2
1	Hikone	2011	4.3
2	Kusatsu	2012	2.1
3	Kusatsu	2013	3.4
4	Kusatsu	2014	5.6
5	Hikone	2015	2.5

上記のように表形式になり,6つの行があることがわかります.
おそらくデータサイエンスなどの分野では,上記のような少ないデータだけでなく,膨大なデータを取り扱うと思います.
そんな時.

「あ~このデータ,どんなデータが入ってるかわからへんわ!」
「最初だけでもいいから見たいわ!」

ってなるときがいずれ来ると思います.
そんな時は「head()」を使いましょう!
上記のframeについて,見てみましょう.

frame.head()

        City	year	data
0	Hikone	2010	3.2
1	Hikone	2011	4.3
2	Kusatsu	2012	2.1
3	Kusatsu	2013	3.4
4	Kusatsu	2014	5.6

最後の行だけ消えました.
少ないデータなのでわかりにくいかもしれませんが,この「head()」,何を行っているかというと,指定したデータフレームの最初の5行だけを取り出して見ています.

これで,初めて見るデータでもどんなデータが入っているかがわかりますね.

基本操作② 列の参照

上記で用いたデータについて,「City」だけ見たいな~とか「data」だけ見たいな~って思ったとします.
てか,必ずその時が来ると信じましょう!!

そんなときは,以下の2パターンで見ることができます.
まずは,「City」について見てみましょう.

frame["City"]
0     Hikone
1     Hikone
2    Kusatsu
3    Kusatsu
4    Kusatsu
5     Hikone
Name: City, dtype: object

うまく,取り出すことができましたね!
こちらの場合は,ディクショナリと同様の取り出し方をしていることがわかります.

では,別の方法で,「data」を見てみましょう.

frame.data
0    3.2
1    4.3
2    2.1
3    3.4
4    5.6
5    2.5
Name: data, dtype: float64

こちらも同様に列だけ取り出すことができました.
こちらは属性指定で取り出すことができます.

これらのように,列を指定して取り出すことができましたが,シリーズとして取り出されていることがわかります.
このシリーズは元のデータフレームが持っていたインデックスと同じインデックスを持っており,name属性もちゃんと設定されています.
(下の方に「Name: City」だったり,「Name: data」だったり書かれていますよね.これがnameです.)

基本操作③ 値の代入

「列の値,変えたいわ~.これじゃわかりにくいわ」

ってときは,列の値を代入して変えることができます.

まず,上記のデータフレームに欠損値のみの列を追加します.
これは,以下のように,元のデータフレームに含まれていないデータを追加するだけで作成できます.
今回は「data2」を追加します.

frame2 = pd.DataFrame(data, columns=["year", "City", "data", "data2"])
frame2

        year	City	data	data2
0	2010	Hikone	3.2	NaN
1	2011	Hikone	4.3	NaN
2	2012	Kusatsu	2.1	NaN
3	2013	Kusatsu	3.4	NaN
4	2014	Kusatsu	5.6	NaN
5	2015	Hikone	2.5	NaN

少し順番も変えてみました(笑).

で,本題の値の代入をしてみます.
「data2」のNaN値に適当な数値を以下のように入れてみます.

frame2["data2"] = 500
frame2

        year	City	data	data2
0	2010	Hikone	3.2	500
1	2011	Hikone	4.3	500
2	2012	Kusatsu	2.1	500
3	2013	Kusatsu	3.4	500
4	2014	Kusatsu	5.6	500
5	2015	Hikone	2.5	500

data2にはすべて「500」が入りましたね.
このように,ディクショナリでの参照のように指定して,値を代入することができます.

以下のようにすることもできます.

frame2["data2"] = np.random.randn(6, 1)
frame2

        year	City	data	data2
0	2010	Hikone	3.2	0.128530
1	2011	Hikone	4.3	0.019976
2	2012	Kusatsu	2.1	0.286749
3	2013	Kusatsu	3.4	0.492650
4	2014	Kusatsu	5.6	-2.148791
5	2015	Hikone	2.5	-0.140094

このように乱数での配置もできます.

また,以下のようにもできます.

frame2["data2"] = np.arange(6.)
frame2

        year	City	data	data2
0	2010	Hikone	3.2	0.0
1	2011	Hikone	4.3	1.0
2	2012	Kusatsu	2.1	2.0
3	2013	Kusatsu	3.4	3.0
4	2014	Kusatsu	5.6	4.0
5	2015	Hikone	2.5	5.0

このように順番に値を代入していくことも可能です.

まとめ

データフレームについての基本操作を紹介していきました.
つか〇もすべてを暗記しているわけではありませんが,理解して,頭の片隅に置いておくことで,使いたいときに調べて使えることを目指して勉強しています.

また,Pythonでのデータ分析をもっと早く勉強したい!って方には,「Pythonによるデータ分析入門」がおすすめです.
体系立てられているので,とてもわかりやすいです!

一緒にPythonをマスターして世界を豊かにしていきましょう!!

コメント

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