pythonなどプログラミング言語では、ライブラリと呼ばれる誰かが作ったプログラムのまとまりをインポートすることで、その機能を使えるようになる。
pandasはpythonでは最も有名な多機能なデータ処理のライブラリ。
ライブラリはパッケージとも言う(厳密には違う意味かも)。プログラムはコード、モジュールなどとも言う。
In [2]:
import pandas as pd#pandasはpdとしてインポートすることが通例。
リストは複数の値をまとめて持つことができる基本的なデータ構造。
In [3]:
list_a = [3,5,9,2,5]
list_a
Out[3]:
数値以外でもリストとして持つことができる。文字列型(String型)は''または""で囲む。なお、上記リストの数値は整数型(int型)であり、数値には小数を表現できる浮動小数点数型(float型)がある。
In [4]:
list_b = ['b','r','g','y','k']
list_b
Out[4]:
pandasには1次元のデータを扱うSeries型がある。
In [5]:
series_a = pd.Series(list_a)
series_a
Out[5]:
Series型はインデックスを持つ1次元データである。デフォルトでは0から順に整数のインデックスが振られる。なお、pythonのインデックスは指定しない限りどの型でも1ではなく0から始まる。
In [6]:
series_a.index
Out[6]:
In [7]:
series_a.values
Out[7]:
Seriesの各要素をインデックスで取り出すことができる。
In [8]:
series_a[3]
Out[8]:
データの型はデータ処理をする上で、非常に重要。データ処理のエラーはデータの型によって起こりやすい。型エラーの際には、もしくは事前に、型を確認する。
In [9]:
type(series_a)
Out[9]:
Seriesの各要素の型を調べるにはインデックスで指定する。
In [10]:
type(series_a[3])
Out[10]:
pythonにはnumpyという数値処理を扱うライブラリがあり、pandasでもnumpyを使っている。numpyは専用の数値の型をもっている。
RangeIndexもpandasのRangeIndex型のオブジェクトである。
In [11]:
import numpy as np
他のシーケンスと同じように抽出することができる。printすると型をdtypeとして確認できる。
In [12]:
series_a[:3]
Out[12]:
インデックスは名前をつけて指定することができる。
In [14]:
series_b = pd.Series(list_a,index=list_b)
series_b
Out[14]:
Series自体に名前をつけることができる。デフォルトでは名前はない。
In [15]:
series_b = pd.Series(list_a,index=list_b,name='color')
series_b
Out[15]:
rangeインデックスと同じようにインデックスで抽出できる。
In [16]:
series_b['g']
Out[16]:
In [17]:
series_b['r':'y']
Out[17]:
インデックスに名前をつけた場合もrangeインデックスでの抽出も可能。
In [18]:
series_b[2]
Out[18]:
インデックスを混ぜることはできない。
In [19]:
series_b[1:'y']
*に対し、listは同じリストが連結され、Seriesはvaluesが2倍される。
In [8]:
print(list_a * 2)
print(series_a * 2)
In [11]:
print(3 in list_a)
print(3 in series_a)
In [27]:
series_a.unique()
Out[27]:
DataFrame型はデータ処理で最もよく使うオブジェクト。
In [20]:
lists = [list_a,list_b]
lists
Out[20]:
In [21]:
pd.DataFrame(lists)
Out[21]:
データフレームの行と列は次のように呼ばれる。
In [22]:
df1 = pd.DataFrame(lists)
df1 = df1.T#転置
print(df1)
列名や行名を調べる。
In [23]:
print(df1.columns)
print(df1.index)
列名、行名をつける。
In [24]:
df1.columns = ['数値','色']
df1.index = range(1,6)
df1
Out[24]:
In [26]:
print(range(1,6))
print(type(range(1,6)))
print(list(range(1,6)))
print(range(5))
print(list(range(5)))
DataFrameの詳細は別の.ipynbで。