[
トップ
] [
新規
|
一覧
|
単語検索
|
最終更新
|
ヘルプ
]
開始行:
[[ノート/ノート]]~
[[ノート/R]]~
訪問者数 &counter(); 最終更新 &lastmod();
*RとPythonを行き来する (2014-07-31) [#j44c3a1d]
元はといえば、[[Rで相関行列を求めたい>Rで相関行列]] なのだが、入力データを整形するのに、Pythonの方が慣れていそう、という理由。
整形が必要な理由は、文字データが含まれたフィールドがあると、関数corがエラーを返すから。
>>> x <- read.csv("s.csv")
>>> > cor(x)
以下にエラー cor(x) : 'x' は数値でなければなりません
今対象とするデータには、たとえば学部の欄に「理学部」と書かれたり、選択肢A/Bに対して文字「A」や「B」が書かれているので、こういうところがエラーになるのだろう。これらの部分は、corを用いるには適当なる整形を必要とする(特にA/Bのフィールドなど)。
>参考にしたサイト
-[[バイオスタティスティクス基礎論第1回講義テキスト:http://lecture.ecc.u-tokyo.ac.jp/~aiwata/biostat_basic/text4lec1.pdf]](11ページ付近)
-[[統計ソフトRについて、wilcox.testで「Xは数値でなければなりません」と表示され...:http://detail.chiebukuro.yahoo.co.jp/qa/question_detail/q14103203824]]
整形の手段は、
-もちろん、Rのコードを書いて整形してもいいし(まあ大したことはなさそう)
-Pythonなどで整形してから一旦CSVファイルに出力して、それをRで読んでもいいし、
-相関行列をPythonで計算してもいいし、
なのである。ただ手を抜きたいだけ。 というか、連携を試してみたいだけ。
**Pythonに、PypeR(連携インタフェースパッケージ)と、更に同時に Pandas(データ解析用パッケージ)を導入する。 [#v3487b8c]
>参考にしたサイト
-[[Python と R で連携する:http://qiita.com/ynakayama/items/f84dc659f1337d71dd9e]]~
-[[データ分析ライブラリPandasの使い方:http://librabuch.jp/2013/12/pandas_python_advent_calendar_2013/]]
いずれも、
pip install <パッケージ名> <パッケージ名>はpyperとpandas
で終り。但し、pyperは大した処理をしないのに比べて、pandasはコンパイルをするので警告メッセージが出たりした。
**Pandasのread_csvを使う [#p60cc4bc]
>参考書 [[Pythonによるデータ分析入門:http://www.amazon.co.jp/Python%E3%81%AB%E3%82%88%E3%82%8B%E3%83%87%E3%83%BC%E3%82%BF%E5%88%86%E6%9E%90%E5%85%A5%E9%96%80-%E2%80%95NumPy%E3%80%81pandas%E3%82%92%E4%BD%BF%E3%81%A3%E3%81%9F%E3%83%87%E3%83%BC%E3%82%BF%E5%87%A6%E7%90%86-Wes-McKinney/dp/4873116554]]
>参考ページ
-[[pandasメモ:http://qiita.com/airtoxin/items/d66a22c5c7074e23be17#2-1]]
-[[pandas + matplotlib による多彩なデータプロッティング:http://qiita.com/ynakayama/items/68eff3cb146181329b48]]
-[[5. 【pandas】関連:http://oceanmarine.sakura.ne.jp/sphinx/group/group_pandas.html]]
-[[Pythonデータ解析ライブラリpandasと遊ぶ:クロス集計〜検定・残差分析まで:http://web-analytics-or-die.org/2013/07/pandas/]]
-[[大元のドキュメント:http://pandas.pydata.org/pandas-docs/stable/dsintro.html]]
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 東邦 理 化学
よしこれで、不要の欄は削ることができる。
終了行:
[[ノート/ノート]]~
[[ノート/R]]~
訪問者数 &counter(); 最終更新 &lastmod();
*RとPythonを行き来する (2014-07-31) [#j44c3a1d]
元はといえば、[[Rで相関行列を求めたい>Rで相関行列]] なのだが、入力データを整形するのに、Pythonの方が慣れていそう、という理由。
整形が必要な理由は、文字データが含まれたフィールドがあると、関数corがエラーを返すから。
>>> x <- read.csv("s.csv")
>>> > cor(x)
以下にエラー cor(x) : 'x' は数値でなければなりません
今対象とするデータには、たとえば学部の欄に「理学部」と書かれたり、選択肢A/Bに対して文字「A」や「B」が書かれているので、こういうところがエラーになるのだろう。これらの部分は、corを用いるには適当なる整形を必要とする(特にA/Bのフィールドなど)。
>参考にしたサイト
-[[バイオスタティスティクス基礎論第1回講義テキスト:http://lecture.ecc.u-tokyo.ac.jp/~aiwata/biostat_basic/text4lec1.pdf]](11ページ付近)
-[[統計ソフトRについて、wilcox.testで「Xは数値でなければなりません」と表示され...:http://detail.chiebukuro.yahoo.co.jp/qa/question_detail/q14103203824]]
整形の手段は、
-もちろん、Rのコードを書いて整形してもいいし(まあ大したことはなさそう)
-Pythonなどで整形してから一旦CSVファイルに出力して、それをRで読んでもいいし、
-相関行列をPythonで計算してもいいし、
なのである。ただ手を抜きたいだけ。 というか、連携を試してみたいだけ。
**Pythonに、PypeR(連携インタフェースパッケージ)と、更に同時に Pandas(データ解析用パッケージ)を導入する。 [#v3487b8c]
>参考にしたサイト
-[[Python と R で連携する:http://qiita.com/ynakayama/items/f84dc659f1337d71dd9e]]~
-[[データ分析ライブラリPandasの使い方:http://librabuch.jp/2013/12/pandas_python_advent_calendar_2013/]]
いずれも、
pip install <パッケージ名> <パッケージ名>はpyperとpandas
で終り。但し、pyperは大した処理をしないのに比べて、pandasはコンパイルをするので警告メッセージが出たりした。
**Pandasのread_csvを使う [#p60cc4bc]
>参考書 [[Pythonによるデータ分析入門:http://www.amazon.co.jp/Python%E3%81%AB%E3%82%88%E3%82%8B%E3%83%87%E3%83%BC%E3%82%BF%E5%88%86%E6%9E%90%E5%85%A5%E9%96%80-%E2%80%95NumPy%E3%80%81pandas%E3%82%92%E4%BD%BF%E3%81%A3%E3%81%9F%E3%83%87%E3%83%BC%E3%82%BF%E5%87%A6%E7%90%86-Wes-McKinney/dp/4873116554]]
>参考ページ
-[[pandasメモ:http://qiita.com/airtoxin/items/d66a22c5c7074e23be17#2-1]]
-[[pandas + matplotlib による多彩なデータプロッティング:http://qiita.com/ynakayama/items/68eff3cb146181329b48]]
-[[5. 【pandas】関連:http://oceanmarine.sakura.ne.jp/sphinx/group/group_pandas.html]]
-[[Pythonデータ解析ライブラリpandasと遊ぶ:クロス集計〜検定・残差分析まで:http://web-analytics-or-die.org/2013/07/pandas/]]
-[[大元のドキュメント:http://pandas.pydata.org/pandas-docs/stable/dsintro.html]]
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 東邦 理 化学
よしこれで、不要の欄は削ることができる。
ページ名: