pandas0.40の使い方メモ

pythonでデータをR言語の時のように扱いたい。行列演算がしたいなどのような望みを叶えてくれるpandasというpythonのライブラリーについて、初歩的な使い方についてのメモ

  • インストールに必要な物
    • バージョン1.40以上のNumpy
    • バージョン1.5のpython-dateutil

ubuntu10.04の方は、そのままの状態でapt-get等によるインストールを行うと、バージョンが1.30のnumpyがインストールされるので、ソースからなど、他の手段より別途にインストールする必要があります。

  • オプションで必要になるもの
    • Scipy
    • PyTables
    • matplotlib
    • scikits.statsmodels
    • pytz

以降に例で示すものは、事前に

import pandas as pd
import numpy as np

をしておくとする。

  • 一次元データの取り扱い
>>> s = pd.Series([1,2,3,4,5], index=['a', 'b', 'c', 'd', 'e'])
>>> s
a    1
b    2
c    3
d    4
e    5
>>> data = {'a' : 1, 'b' : 2 , 'c': nan}
>>> pd.Series(data, index=['b', 'c', 'a'])
b    2.0
c    NaN
a    1.0

条件を加えてデータを取りだしたり、データ全体に対して計算を行うことが出来る。

>>> s[:2]
a    1
b    2
>>> s['a']
1
>>> s[ s > s.mean()]
d    4
e    5
>>> np.log(s)
a    0.0
b    0.69314718056
c    1.09861228867
d    1.38629436112
e    1.60943791243
>>> s * s
a    1
b    4
c    9
d    16
e    25
  • 二次元データの取り扱い
>>> d = {'one' : Series([1., 2., 3.], index=['a', 'b', 'c']),
... 'two' : Series([1., 2., 3., 4.], index=['a', 'b', 'c', 'd'])}
>>> df = pd.DataFrame(d, index=['d', 'b', 'a'], columns=['one', 'two', 'three'])
>>> df
     one            two            three          
d    NaN            4              NaN            
b    2              2              NaN            
a    1              1              NaN

次のようにして、データの加工をすることができる。

>>> df['two'][:2]
d    4.0
b    2.0
>>> df['flag'] = df['one'] > 1
>>> df
     flag           one            two            three          
d    False          NaN            4              NaN            
b    True           2              2              NaN            
a    False          1              1              NaN
>>> del df['flag']
>>> df
     one            two            three          
d    NaN            4              NaN            
b    2              2              NaN            
a    1              1              NaN
>>> df.pop('three')
d    NaN
b    NaN
a    NaN
>>> df
     one            two            
d    NaN            4              
b    2              2              
a    1              1   
  • データの入力と出力
>>> df = pd.io.parsers.read_csv('input.csv')
>>> df.toCSV("output.csv",nanRep='',header=True,index=True) #データの出力