« ゲームセンター嵐による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 聞き取ってみる »

しろののツイッタータイムライン

  • ツイッターは5つ目も凍結されました。6つ目での復活も不可能。なのでnoteに注力しています。

    と思ったら、イーロン・マスクの買収が公になってアカウントが復活できました。ありがとうマスク。

    トランプ関連記事の一覧リスト

オススメたち

2024年12月
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 31        

はてブ

無料ブログはココログ