In [2]:
import numpy as np
import pandas as pd
from pandas import Series,DataFrame
In [3]:
# numpy.arrayに似たSeriesをつくります。違いは、データにラベルがあるところ
obj = Series([3,6,9,12])
obj
Out[3]:
0     3
1     6
2     9
3    12
dtype: int64
In [4]:
# valuesで、値が返ってくる
obj.values
Out[4]:
array([ 3,  6,  9, 12])
In [5]:
# indexを表示
obj.index
Out[5]:
Int64Index([0, 1, 2, 3], dtype='int64')
In [6]:
#index付きのデータを作る
#第二次世界大戦の死傷者
ww2_cas = Series([8700000,4300000,3000000,2100000,400000],index=['USSR','Germany','China','Japan','USA'])
ww2_cas
Out[6]:
USSR       8700000
Germany    4300000
China      3000000
Japan      2100000
USA         400000
dtype: int64
In [7]:
# 文字列のindexでアクセスできる。
ww2_cas['USA']
Out[7]:
400000
In [8]:
# 400万人以上の死傷者を出したのは?
ww2_cas[ww2_cas>4000000]
Out[8]:
USSR       8700000
Germany    4300000
dtype: int64
In [9]:
# 普通の辞書のように扱えます。
# USSR があるか?
'USSR' in ww2_cas
Out[9]:
True
In [10]:
# 辞書型に変換できます。
ww2_dict = ww2_cas.to_dict()
ww2_dict
Out[10]:
{'China': 3000000,
 'Germany': 4300000,
 'Japan': 2100000,
 'USA': 400000,
 'USSR': 8700000}
In [11]:
# 辞書をもとに、Seriesを作ることができます。
WW2_Series = Series(ww2_dict)
In [12]:
WW2_Series
Out[12]:
China      3000000
Germany    4300000
Japan      2100000
USA         400000
USSR       8700000
dtype: int64
In [13]:
# indexを明示的に与えることができます。たとえば・・・
countries = ['China','Germany','Japan','USA','USSR','Argentina']
In [14]:
# 別のSeriesを作ります
obj2 = Series(ww2_dict,index=countries)
In [15]:
obj2
Out[15]:
China        3000000
Germany      4300000
Japan        2100000
USA           400000
USSR         8700000
Argentina        NaN
dtype: float64
In [16]:
# nullデータがあるかどうかを確認できます
pd.isnull(obj2)
Out[16]:
China        False
Germany      False
Japan        False
USA          False
USSR         False
Argentina     True
dtype: bool
In [17]:
# 逆のこともできます。
pd.notnull(obj2)
Out[17]:
China         True
Germany       True
Japan         True
USA           True
USSR          True
Argentina    False
dtype: bool
In [18]:
# もとのデータに戻りましょう。
WW2_Series
Out[18]:
China      3000000
Germany    4300000
Japan      2100000
USA         400000
USSR       8700000
dtype: int64
In [19]:
# 
obj2
Out[19]:
China        3000000
Germany      4300000
Japan        2100000
USA           400000
USSR         8700000
Argentina        NaN
dtype: float64
In [20]:
# 両方のデータを足すと、pandasが自動的に、indexでまとめてくれます。
WW2_Series + obj2
Out[20]:
Argentina         NaN
China         6000000
Germany       8600000
Japan         4200000
USA            800000
USSR         17400000
dtype: float64
In [23]:
# Seriesに名前を付けられます。
obj2.name = '第二次世界大戦の死傷者'
# Python2の場合は、uが必要です。
In [22]:
obj2
Out[22]:
China        3000000
Germany      4300000
Japan        2100000
USA           400000
USSR         8700000
Argentina        NaN
Name: 第二次世界大戦の死傷者, dtype: float64
In [24]:
# indexに名前を付けることも可能
obj2.index.name = 'Countries'
In [26]:
obj2
Out[26]:
Countries
China        3000000
Germany      4300000
Japan        2100000
USA           400000
USSR         8700000
Argentina        NaN
Name: 第二次世界大戦の死傷者, dtype: float64