ノート/ノート
ノート/R
訪問者数 1627      最終更新 2014-08-04 (月) 08:30:54

RとPythonを行き来する (2014-07-31)

元はといえば、Rで相関行列を求めたい? なのだが、入力データを整形するのに、Pythonの方が慣れていそう、という理由。

整形が必要な理由は、文字データが含まれたフィールドがあると、関数corがエラーを返すから。

>>> x <- read.csv("s.csv")
>>> > cor(x)
  以下にエラー cor(x) : 'x' は数値でなければなりません

今対象とするデータには、たとえば学部の欄に「理学部」と書かれたり、選択肢A/Bに対して文字「A」や「B」が書かれているので、こういうところがエラーになるのだろう。これらの部分は、corを用いるには適当なる整形を必要とする(特にA/Bのフィールドなど)。

参考にしたサイト

整形の手段は、

Pythonに、PypeR(連携インタフェースパッケージ)と、更に同時に Pandas(データ解析用パッケージ)を導入する。

参考にしたサイト

いずれも、

pip install <パッケージ名>       <パッケージ名>はpyperとpandas

で終り。但し、pyperは大した処理をしないのに比べて、pandasはコンパイルをするので警告メッセージが出たりした。

Pandasのread_csvを使う

参考書 Pythonによるデータ分析入門

参考ページ

Pandasのread_csvを使ってみる

>>> import pandas
>>> x = pandas.read_csv('s.csv')

要素の取り出し

xに対してixを使い、要素のインデックスで指定。二次元なので

print x.ix[1:, 0:2]
  基本情報 Unnamed: 1
1  NaN        NaN
2   10    4432341
3   10    4432131
4   10    4434780
5   10    4432094
6   10    4432072
7   10    4432352
8   10    4432083

範囲指定は、普通はコロンを使うが、複数範囲を結合することはそのままでは出来ない。 それで、rangeジェネレータとリストの'+'演算を使って、こんなことをやってみる。

print x.ix[:, range(0,2)+range(7,12)]
   基本情報 Unnamed: 1 Unnamed: 7 Unnamed: 8 Unnamed: 9 Unnamed: 10 Unnamed: 11
0  検査ID     回答用紙番号      学部コード      学科コード      漢字大学名       漢字学部名       漢字学科名
1   NaN        NaN        NaN        NaN        NaN         NaN         NaN
2    10    4432341         51        523         東邦           理           化学
3    10    4432131         51        523         東邦           理          化学
4    10    4434780         51        523         東邦           理          化学
5    10    4432094         51        523         東邦           理          化学
6    10    4432072         51        523         東邦           理          化学
7    10    4432352         51        523         東邦           理          化学
8    10    4432083         51        523         東邦           理          化学

よしこれで、不要の欄は削ることができる。


トップ   編集 凍結 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS
Last-modified: 2014-08-04 (月) 08:30:54 (1172d)