質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

ただいまの
回答率

90.35%

  • Python 3.x

    8412questions

    Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

  • Excel

    1741questions

    Excelは、マイクロソフト社が開発しているデータ集計や分析を行う表計算ソフトの一つです。文書作成や表計算、資料作成などの多彩な機能を備えており、統合パッケージであるMicrosoft Officeに含まれています。

  • CSV

    773questions

    CSV(Comma-Separated Values)はコンマで区切られた明白なテキスト値のリストです。もしくは、そのフォーマットでひとつ以上のリストを含むファイルを指します。

pythonでexcelで作成したcsvファイルをNumpyモジュールで読み込みたいのだがerrorが出てしまう。

解決済

回答 2

投稿

  • 評価
  • クリップ 0
  • VIEW 761

kum

score 10

python
コード

import numpy as np
dat=np.loadtxt('test.csv',delimiter=',',dtype=float)
||||###前提・実現したいこと
excelで作成した文字のみのcsvファイルをfloat型の数値リストをdatに格納したいと思っていまうすが、errorがでてしまいます。

実装中に以下のエラーメッセージが発生しました。

発生している問題・エラーメッセージ

C:\Anaconda3\python.exe "C:/Users//PycharmProjects/test/Package1/read csv file of excel.py"
Traceback (most recent call last):
File "C:/Users//PycharmProjects/test/Package1/read csv file of excel.py", line 3, in <module>
dat=np.loadtxt('C:/Users/beam20170526/てst.csv',delimiter=',',dtype=int)
File "C:\Anaconda3\lib\site-packages\numpy\lib\npyio.py", line 985, in loadtxt
items = [conv(val) for (conv, val) in zip(converters, vals)]
File "C:\Anaconda3\lib\site-packages\numpy\lib\npyio.py", line 985, in <listcomp>
items = [conv(val) for (conv, val) in zip(converters, vals)]
File "C:\Anaconda3\lib\site-packages\numpy\lib\npyio.py", line 697, in <lambda>
return lambda x: int(float(x))
ValueError: could not convert string to float: 

読み込もうとしているexcelファイルは以下のものです。
0    0    23    27    0    157    221    0
0    0    0    0    324    0    0    0
0    0    0    130    0    0    0    109
0    0    0    218    0    111    0    84
198    154    10    0    0    0    0    0
12    0    0    0    0    0    0    0
0    0    0    0    0    0    0    0
0    0    0    61    4    0    12    96
80    0    0    130    156    0    0    0
53    0    26    74    0    0    91    0
0    0    0    38    0    0    0    138
0    0    0    0    34    0    0    0
0    59    0    0    100    0    0    0
94    27    0    0    0    21    0    0
0    0    24    0    0    0    0    0
0    0    0    0    0    0    0    0
0    0    0    0    0    0    0    0
0    0    96    45    0    172    0    0
0    0    0    57    34    0    0    0
0    0    0    0    0    0    0    0
24    0    0    0    0    0    0    44
0    0    0    0    77    57    0    0

  • 気になる質問をクリップする

    クリップした質問は、後からいつでもマイページで確認できます。

    またクリップした質問に回答があった際、通知やメールを受け取ることができます。

    クリップを取り消します

  • 良い質問の評価を上げる

    以下のような質問は評価を上げましょう

    • 質問内容が明確
    • 自分も答えを知りたい
    • 質問者以外のユーザにも役立つ

    評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

    質問の評価を上げたことを取り消します

  • 評価を下げられる数の上限に達しました

    評価を下げることができません

    • 1日5回まで評価を下げられます
    • 1日に1ユーザに対して2回まで評価を下げられます

    質問の評価を下げる

    teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

    • プログラミングに関係のない質問
    • やってほしいことだけを記載した丸投げの質問
    • 問題・課題が含まれていない質問
    • 意図的に内容が抹消された質問
    • 広告と受け取られるような投稿

    評価が下がると、TOPページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

    質問の評価を下げたことを取り消します

    この機能は開放されていません

    評価を下げる条件を満たしてません

    評価を下げる理由を選択してください

    詳細な説明はこちら

    上記に当てはまらず、質問内容が明確になっていない質問には「情報の追加・修正依頼」機能からコメントをしてください。

    質問の評価を下げる機能の利用条件

    この機能を利用するためには、以下の事項を行う必要があります。

回答 2

checkベストアンサー

0

'test.csv'はカンマではなくタブで区切られているようです。
であればdelimiter=','ではなくdelimiter='\t'を指定すれば読み込めます。

import numpy as np
dat=np.loadtxt('test.csv',delimiter='\t',dtype=float)
print(dat)
s = "    " # ついでに検証。""内はタブ文字。teratailにアップ後もタブ文字か?
[[   0.    0.   23.   27.    0.  157.  221.    0.]
 [   0.    0.    0.    0.  324.    0.    0.    0.]
 [   0.    0.    0.  130.    0.    0.    0.  109.]
 [   0.    0.    0.  218.    0.  111.    0.   84.]
 [ 198.  154.   10.    0.    0.    0.    0.    0.]
 [  12.    0.    0.    0.    0.    0.    0.    0.]
 [   0.    0.    0.    0.    0.    0.    0.    0.]
 [   0.    0.    0.   61.    4.    0.   12.   96.]
 [  80.    0.    0.  130.  156.    0.    0.    0.]
 [  53.    0.   26.   74.    0.    0.   91.    0.]
 [   0.    0.    0.   38.    0.    0.    0.  138.]
 [   0.    0.    0.    0.   34.    0.    0.    0.]
 [   0.   59.    0.    0.  100.    0.    0.    0.]
 [  94.   27.    0.    0.    0.   21.    0.    0.]
 [   0.    0.   24.    0.    0.    0.    0.    0.]
 [   0.    0.    0.    0.    0.    0.    0.    0.]
 [   0.    0.    0.    0.    0.    0.    0.    0.]
 [   0.    0.   96.   45.    0.  172.    0.    0.]
 [   0.    0.    0.   57.   34.    0.    0.    0.]
 [   0.    0.    0.    0.    0.    0.    0.    0.]
 [  24.    0.    0.    0.    0.    0.    0.   44.]
 [   0.    0.    0.    0.   77.   57.    0.    0.]]

 追記:teratail書込時に元文字列のタブ文字がどうなるか検証した結果

teratailへの書込時、タブ文字は4個のスペースに置換されてしまうようです。
質問文の提示CSVは4個のスペースで区切られているので元CSVはタブ区切りと推測しましたが、実際に4個のスペースで区切られている場合は、delimiter='    'と指定してください。

投稿

編集

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2017/09/08 15:25

    回答ありがとうございます。
    バックスラッシュは\と置き換えて入力してもいいのでしょうか?
    \で置き換えて実行してもうまく行きませんでした。
    dtype=str と置き換えて実行するとうまくいくようです。

    キャンセル

  • 2017/09/08 15:37

    「delimiter='\t'」をそのままコピペして(バックスラッシュのまま)でよいです。
    ただ、それでも同じエラーになるのであれば、区切り文字はタブでない可能性があります。
    よって区切りが(何個の)スペースなのかタブなのかを確認すべきです。
    >dtype=str と置き換えて実行するとうまくいくようです。
    これだと単に文字列(str)として読み込んでいるので、区切り文字に関係なく成功します。
    数値(float)として読み込みたければ正しい区切り文字を指定しないといけません。

    ちなみにteratailへの書込み時、タブ文字は4個のスペースに置換されてしまうようなので、元CSVはタブ区切りと推測しました。
    そこで、こちらでは提示されたCSV内容の4個のスペースをタブに置換したうえで検証しています。

    キャンセル

  • 2017/09/09 12:34

    メモ帳で開くとデリミタは','であることが分かりました。
    ですが、errorは解消されませんでした。genfromtxtを使用することでなんとか読み込むことができているのでこのまま進めていきます。
    ありがとうございました。

    キャンセル

0

提示されたファイルはカンマ区切りでなくスペース3個区切りのようですので、

delimiter=',' の代わりに delimiter='   ' (''の中はスペース3個)とすれば読めると思いますよ。

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2017/09/08 15:16

    タブでしたか・・・コピペしたら空白3個だったのですが、それはこちら側のどこかでタブから変換されたものだったのでしょうかね。

    キャンセル

  • 2017/09/08 15:57

    おそらくteratailに書込み時にタブ→スペースに置換されるようです。
    元CSVの区切り文字が何かは、質問者様の環境で確認しないと分からないですね。。。

    キャンセル

15分調べてもわからないことは、teratailで質問しよう!

  • ただいまの回答率 90.35%
  • 質問をまとめることで、思考を整理して素早く解決
  • テンプレート機能で、簡単に質問をまとめられる

同じタグがついた質問を見る

  • Python 3.x

    8412questions

    Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

  • Excel

    1741questions

    Excelは、マイクロソフト社が開発しているデータ集計や分析を行う表計算ソフトの一つです。文書作成や表計算、資料作成などの多彩な機能を備えており、統合パッケージであるMicrosoft Officeに含まれています。

  • CSV

    773questions

    CSV(Comma-Separated Values)はコンマで区切られた明白なテキスト値のリストです。もしくは、そのフォーマットでひとつ以上のリストを含むファイルを指します。

  • トップ
  • CSVに関する質問
  • pythonでexcelで作成したcsvファイルをNumpyモジュールで読み込みたいのだがerrorが出てしまう。