読者です 読者をやめる 読者になる 読者になる

サイエンティストとマーケターのはざま

Pythonとか広告とかデータ分析とかとか


Dataframeを扱う

pandasの扱うデータ構造にDataFrameがあります。DataFrameはテーブル形式のスプレッドシート風のデータ構造を持ち、順序付けられた列を持っています。

このDataFrame型での読み書きをやってみましょう。

In [2]:
 
import pandas as pd
 
 
In [3]:
 
ls
 
 
 
combine2.csv  eurgbp.csv      hourly2004.txt  hourly2009.txt  hourly2014.txt
combine3.csv  eurusd.csv      hourly2005.txt  hourly2010.txt  usdjpy.csv
combine4.csv  hourly2001.txt  hourly2006.txt  hourly2011.txt
combine5.csv  hourly2002.txt  hourly2007.txt  hourly2012.txt
combine.csv   hourly2003.txt  hourly2008.txt  hourly2013.txt
In [7]:
 
data=pd.read_csv("combine2.csv")
 
 
In [8]:
 
data
 
 
Out[8]:
 Unnamed: 0Unnamed: 0.1<TICKER><DTYYYYMMDD><TIME><OPEN><HIGH><LOW><CLOSE>datetime
0 0 0 AUDUSD 20010103 20000 0.5624 0.5636 0.5620 0.5634 2001010320000
1 1 1 AUDUSD 20010103 30000 0.5633 0.5643 0.5620 0.5631 2001010330000

 データを加工している間に不要なカラムが左カラムに2列ほど作成されてしまいました。この2列のカラムを除去してみましょう。

In [10]:
 
del data['Unnamed: 0']
 
 
In [12]:
 
del data['Unnamed: 0.1']
 
 
In [14]:
 
data
 
 
Out[14]:
 <TICKER><DTYYYYMMDD><TIME><OPEN><HIGH><LOW><CLOSE>datetime
0 AUDUSD 20010103 20000 0.5624 0.5636 0.5620 0.5634 2001010320000
1 AUDUSD 20010103 30000 0.5633 0.5643 0.5620 0.5631 2001010330000

delキーワードを使うと列を消去することができます。

次に新しい列を追加します。

In [15]:
 
data['new']=data['<OPEN>']
 
 
In [16]:
 
data
 
 
Out[16]:
 <TICKER><DTYYYYMMDD><TIME><OPEN><HIGH><LOW><CLOSE>datetimenew
0 AUDUSD 20010103 20000 0.5624 0.5636 0.5620 0.5634 2001010320000 0.5624
1 AUDUSD 20010103 30000 0.5633 0.5643 0.5620 0.5631 2001010330000 0.5633

存在しないカラムに代入を行うと新しい列が作成されます。

次にカラムを取得します。

In [17]:
 
data.columns
 
 
Out[17]:
Index([u'<TICKER>', u'<DTYYYYMMDD>', u'<TIME>', u'<OPEN>', u'<HIGH>', u'<LOW>', u'<CLOSE>', u'datetime', u'new'], dtype='object')

カラム名を変更できます。

In [18]:
 
  
data.columns=[u'LET''S', u'Go', u'honey''s', u'House', u'La', u'LALA', u'LALALA', u'LALALALA', u'LALALALALA']
 
 
In [19]:
 
data
 
 
Out[19]:
 LETSGohoneysHouseLaLALALALALALALALALALALALALALA
0 AUDUSD 20010103 20000 0.5624 0.5636 0.5620 0.5634 2001010320000 0.5624
1 AUDUSD 20010103 30000 0.5633 0.5643 0.5620 0.5631 2001010330000 0.5633

指定したカラムのみをcsv形式で書き込み保存します。

In [21]:
 
data.to_csv('honey.csv', index=False, cols=['LETS', 'Go', 'House', 'LALALA'])
 
 
In [22]:
 
dt=pd.read_csv('honey.csv')
 
 
In [23]:
 
dt
 
 
Out[23]:
 LETSGoHouseLALALA
0 AUDUSD 20010103 0.5624 0.5634
1 AUDUSD 20010103 0.5633 0.5631

Index='False'で列の最初に自動でふられていた行番号を書き込まないようにしています。

以上でした。