2.4.dataの操作
2.5.indexの操作
2.6.columunsの操作
3.データの読み書き
引数 | 概要 |
---|---|
data | 格納するデータを指定します(下図青枠)。 |
index |
data一つ一つに対応するlabelを指定します(下図赤枠)。
指定しない場合は連番[0, 1, 2, …]が自動的に入ります。 |
dtype |
指定したdata(下図青枠)のデータ型(int, float, str等)を指定します。
指定しない場合は、dataから自動的に設定されます (dataに文字列が含まれると、数値もstr型になります)。 |
name |
Seriesの名前を指定します(下図橙枠)。
名前はDataFrameに変換する際用いられます。 |
>>> pd.Series( [1, 2, 3] ) #リストで指定 >>> pd.Series( (1, 2, 3) ) #タプルで指定 >>> pd.Series( np.array([1, 2, 3]) ) #Numpy配列で指定 #結果はどれも同じ 0 1 1 2 2 3 dtype: int64
>>> ls = [1, 2, 3] #例えばリストの場合 >>> pd.Series( ls ) 0 1 1 2 2 3 dtype: int64
>>> pd.Series( {'a':1, 'b':2, 'c':3} ) a 1 b 2 c 3 dtype: int64
>>> dic = {'a':1, 'b':2, 'c':3} >>> pd.Series( data = dic ) a 1 b 2 c 3 dtype: int64
>>> ID = ['a', 'b', 'c'] #リストで指定 >>> ID = ('a', 'b', 'c') #タプルで指定 >>> ID = np.array(['a', 'b', 'c']) #Numpy配列で指定 #結果はどれも同じ >>> pd.Series( [1, 2, 3], index = ID ) a 1 b 2 c 3 dtype: int64
>>> pd.Series( [1,2,3], index = ['a', 'a', '']) #1, 2行目は同じ、3行目は空白 a 1 a 2 3 dtype: int64
>>> dic = {'a': 1, 'b': 2, 'c': 3} >>> pd.Series(dic) a 1 b 2 c 3 dtype: int64
>>> dic = {'a':1, 'b':2, 'c':3} >>> pd.Series( dic, index = ['x', 'b', 'c'] ) #'a'と'x'が異なる x NaN b 2.0 c 3.0 dtype: float64
>>> dic = {'a':1, 'b':2, 'c':3} >>> pd.Series(dic, index = ['c', 'b', 'a']) c 3 b 2 a 1
#name設定なしの場合 >>> pd.Series([1,2,3]) 0 1 1 2 2 3 dtype: int64 #nameを設定した場合 >>> pd.Series([1,2,3], name = 'Array') 0 1 1 2 2 3 Name: Array, dtype: int64
>>> ser1 = pd.Series( [1, 2, 3 ], name = 'Array' ) >>> ser2 = pd.Series( [ 2, 4, 6], name = 'Array2' ) #indexラベルとして使用される >>> pd.DataFrame([ser1, ser2]) 0 1 2 Array 1 2 3 Array2 2 4 6 #columnsラベルとして使用される >>> pd.concat([ser1, ser2], axis = 1) Array Array2 0 1 2 1 2 4 2 3 6
>>> ser1 = pd.Series( [ 1, 2, 3], name = 'Array' ) >>> ser2 = pd.Series( [ 2, 4, 6], name = 'Array2' ) #nameが異なる場合 >>> pd.concat( [ser1, ser2] ) 0 1 1 2 2 3 0 2 1 4 2 6 dtype: int64 #nameが同じ場合 >>> ser2 = pd.Series( [2, 4, 6], name = 'Array') >>> pd.concat( [ser1, ser2] ) ・・・(省略)・・・ Name: Array, dtype: int64
#float型を指定 >>> pd.Series([1,2,3], dtype=float) 0 1.0 1 2.0 2 3.0 dtype: float64
>>> pd.Series( [1 ,2 , 3 ], dtype = str ) 0 1 1 2 2 3 dtype: object #←ここに注目 >>> type( ser[1] )
#要素の型を調べる >>> type( ser[1] ) <class 'str'> #計算してみる >>> ser + ser 0 11 # 1+1=11で文字の追加になっている 1 22 2 33 dtype: object
#指定しない場合 → リストの中身からint型が割り当てられる >>> pd.Series([1,2,3]) 0 1 1 2 2 3 dtype: int64
>>> ls = [1, 2, 3.0] >>> ser = pd.Series( ls ) >>> ser 0 1.0 1 2.0 2 3.0 dtype: float64
>>> ls = ['a', 2, 3.0 >>> ser = pd.Series(ls) >>> type(ser[0]) <class 'str'> >>> type(ser[1]) <class 'int'> >>> type(ser[2]) <class 'float'>
>>> ser + ser 0 aa 1 4 2 6 dtype: object
>>> ls = ['1', 2, 3.0] >>> ser = pd.Series( ls ) >>> ser 0 1 1 2 2 3 dtype: object >>> type(ser[0]) <class 'str'> >>> type(ser[1]) <class 'int'> >>> type(ser[2]) <class 'float'> >>> ser + ser 0 11 #str型のため文字連結となっている 1 4 #int型のため数値の足し算 2 6 #float型のため数値の足し算 dtype: object
>>> pd.Series() __main__:1: DeprecationWarning: The default dtype for empty Series will be 'object' instead of 'float64' in a future version. Specify a dtype explicitly to silence this warning. Series([], dtype: float64)
>>> pd.Series( [1, 2, 3], index = [ 'a', 'b' ] ) Traceback (most recent call last): File "<stdin>", line 1, in <module> ***** 省略 ***** ValueError: Length of passed values is 3, index implies 2