どうも!僕です!
つか〇です!
「データフレーム作ったのはいいけど,何をどうすればいいのかわからん!」
って悩みにこたえたいと思います.
データフレームについての便利グッズ的なものを紹介していきますので,「こんなんあるんだ~」くらいで覚えていただければ幸いです.
データフレームの特徴と作成については,「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をマスターして世界を豊かにしていきましょう!!
コメント