筋肉で解決しないために。

日々出会うモノに対する考察をしたり、主に以下のテーマに関して書いています。 データサイエンス/人工知能/AI/機械学習/DeepLearning/Python//数学/統計学/統計処理

pandas入門1_「seriesについて」

こんにちは、ワタルです。

さっと見て、「あぁそうだったそうだった」と確認できるハンドブックのような存在を目指して。

pandas入門第1回目、「seriesについて」です。

pandasとは

pandasとは、データをSeriesやDataframeという型を扱うことができるモジュールのことです。

Seriesは一次元、Dataframeは二次元のデータを収納することができます。

それぞれ、行や列にそれぞれ名前が付けることができたり、多くのメソッドが存在するため、 pythonでデータ分析するときには、pandasを用いることが一般的です。

今回では、以下の関数を使えるようになることが目標です。

Series([ ])(Seriesをつくる)
ser.values(値のみを返す)
ser.index(indexのみを返す)
'index' in Series(Seriesの中に'index'が存在するか判定する)
pd.isnull(null要素の存在を確認する)
pd.notnull(nullじゃない要素の存在を確認する)
ser + ser2 (Seriesの和)
ser.name(Seriesに名前を付ける)
ser.index.name(indexに名前を付ける)

おまじない

import numpy as np
import pandas as pd
from pandas import Series,DataFrame
#pandasからSeriesとDataFrameをインポートしておきます。

Series([ ])(Seriesをつくる)

#Seriesをつくります。numpy.arrayとの違いは、要素にindexがあること
ser = Series([3,6,9,12])
ser

>>>
0     3
1     6
2     9
3    12
dtype: int64

ser.values(値のみを返す)

ser.values#値のみを返す

>>>
array([ 3,  6,  9, 12])

ser.index(indexのみを返す)

ser.index#indexのみを返す

>>>
Int64Index([0, 1, 2, 3], dtype='int64')

indexを指定して、Seriesをつくる

ww2_cas = Series([8700000,4300000,3000000,2100000,400000],index=['USSR','Germany','China','Japan','USA'])
#indexを指定して、Seriesをつくる
#第二次世界大戦の死傷者

ww2_cas

>>>
USSR       8700000
Germany    4300000
China      3000000
Japan      2100000
USA         400000
dtype: int64

indexで要素にアクセスする

ww2_cas['USA']

>>>
400000

条件式を用いて、要素にアクセスする

ww2_cas[ww2_cas>4000000]#400万人以上の死傷者を出したのは国のみ返す

>>>
USSR       8700000
Germany    4300000
dtype: int64

indexを用いて、要素が存在するか確認する

'USSR' in ww2_cas

>>>
True

pd.isnull(null要素の存在を確認する)

#別のSeriesを、先とは違うindexの指定方法でつくってみます

countries = ['China','Germany','Japan','USA','USSR','Argentina']

ser2 = Series(ww2_dict,index=countries)#先のww2_casと比べて、'Argentina'というindexが余分に追加されています。

ser2

>>>
China        3000000
Germany      4300000
Japan        2100000
USA           400000
USSR         8700000
Argentina        NaN
dtype: float64
#null要素の存在を確認します
pd.isnull(obj2)

>>>
China        False
Germany      False
Japan        False
USA          False
USSR         False
Argentina     True
dtype: bool

pd.notnull(nullじゃない要素の存在を確認する)

pd.notnull(obj2)

>>>
China         True
Germany       True
Japan         True
USA           True
USSR          True
Argentina    False
dtype: bool

Seriesの和

#Seriesの中身を確認しておきます
WW2_Series

>>>
China      3000000
Germany    4300000
Japan      2100000
USA         400000
USSR       8700000
dtype: int64
ser2

>>>
China        3000000
Germany      4300000
Japan        2100000
USA           400000
USSR         8700000
Argentina        NaN
dtype: float64
#Seriesを足すと、同じindexの要素が足し算されます
WW2_Series + obj2

>>>
Argentina         NaN
China         6000000
Germany       8600000
Japan         4200000
USA            800000
USSR         17400000
dtype: float64

ser.name(Seriesに名前を付ける)

ser2.name = '第二次世界大戦の死傷者'
ser2

>>>
China        3000000
Germany      4300000
Japan        2100000
USA           400000
USSR         8700000
Argentina        NaN
Name: 第二次世界大戦の死傷者, dtype: float64

ser2.index.name(indexに名前を付ける)

ser2.index.name = 'Countries'
ser2

>>>
Countries
China        3000000
Germany      4300000
Japan        2100000
USA           400000
USSR         8700000
Argentina        NaN
Name: 第二次世界大戦の死傷者, dtype: float64

お疲れ様でした!

次回は、こちら。

watarumon.hatenablog.com

それじゃー、また。