« ゲームセンター嵐によるPythonで統計検定できるウェブサイト | トップページ | My Blackberry Is Not Working! - The One Ronnie 聞き取ってみる »

2011年4月25日 (月)

エクセルからデータをDreampieに貼っつけてリストにする

追記)後々もう少しスマートな解決法に挑戦しました。

エクセルからデータをDreampieに貼っつけて統計検定できたらいいなぁとおもったんだけど、カンマ区切りを手で入れないといけないのが気になる。MATLABだったら、コンソールにa=[]と書いてからカーソルをカッコのなかにいれてCtrl+Vではっつければ簡単なんだけどDreampieではおんなじ感じにはできない。csvファイルにしてしまえば標準のcsvモジュールが使えて簡単だけども中間ファイルをつくるその一手間を避けるために10倍の時間をかけてでも、楽をする方法をさがすべき。あと10回つかったらもとをとれる。そうだそうだ。

ぐぐってもあまり、解決策がない、iPythonでPyReadlineがあるとスマートペーストとかあってできるらしいが、DreampieをWin32で使いたいので、自力でがんばってローテクでとりあえず解決。DreampieでPyreadlineを使えたら一番いいんだが、そっちはめんどそうなので挫折。

4.24
2.91
-0.22

みたいなデータがあるとして

Dreampieの入力窓に
a=''''''
と書き、6つあるクォーテーションマークの真ん中にデータをコピペする。
いきなり[]でリストにしようとしてもだめなので、トリプルクォーテーションをつかってデータを整形積みテキストとしていれてしまうのが味噌じゃ。

あとは
a.splitlines()
で改行ごとに要素として扱うように変換すればリストになる。これではまだ文字列なので、どうせscipyのstatを使うのでNumpyにしてしまって

import numpy as np
してから

b = np.array(a.splitlines(), dtype=np.float)

これでbには文字列データのリストだったaがフロートになって変換されたNumpy arrayになる。dtypeは適時に変えてください。

もっとスマートな方法がありそうだが、とりあえずcsvの中間ファイルなしでできた。

問題はデータがカラム一列ならこれでOKだが、複数のカラムになるとこれは破綻する。2列くらいしかなければ一列ならづつやればいいんだが、増えてくると問題。
もっといい方法があるはずだとは思うけどpythonでのstringの扱いにあまり慣れてないためあまり鮮やかではないチカラ技のモジュールをつくってC:\Python26\libにおいてimportして使うことにした。

import numpy as np

def string2np(string, dtype=np.float32):
    '''
    Simple multiple column csv data parser into numpy array
    Accept only formatted text, not file or file-like object.
    If any, trading and leading \n will be eliminated.
    '''
   
    string = string.lstrip('\n')
    string = string.rstrip('\n')
   
    raw = string.count('\n') + 1
    b = string.split('\n')
    col = b[0].count('\t') + 1
    c = [str.split('\t') for str in b]
    d = np.zeros((raw, col), dtype=dtype)
   
    for y in range(raw):
        for x in range(col):
            d[y, x] = c[y][x]
   
    return np.array(d, dtype=dtype)

if __name__ == '__main__':
    a='\n4.24\t10\n2.91\t9\n-0.22\t8\n'
    print a
    b = string2np(a, np.float64)
    print b

« ゲームセンター嵐によるPythonで統計検定できるウェブサイト | トップページ | My Blackberry Is Not Working! - The One Ronnie 聞き取ってみる »

Python」カテゴリの記事

コメント

コメントを書く

コメントは記事投稿者が公開するまで表示されません。

(ウェブ上には掲載しません)

トラックバック


この記事へのトラックバック一覧です: エクセルからデータをDreampieに貼っつけてリストにする:

« ゲームセンター嵐によるPythonで統計検定できるウェブサイト | トップページ | My Blackberry Is Not Working! - The One Ronnie 聞き取ってみる »

やっつけタイムライン

オススメたち

  • Librem One

    LibremOneでプライバシーを取り戻せ!VPN、eメール、チャット、ソーシャルメディア詰め合わせサービス

    follow us in feedly

    かなり更新が不定期なため、RSSリーダーをオススメします。RSSを表示

    超安定なLinux Mintを応援中



    超かっこいいジャズピアノ岩瀬章光

    Jenny Mayhem超おすすめ

    今読んでいる

2019年9月
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30          

はてブ

無料ブログはココログ