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

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

新規登録して質問してみよう
ただいま回答率
85.48%
Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

Q&A

解決済

2回答

8887閲覧

pandasでデータを読み込むと列がずれてしまう

run1

総合スコア19

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

0グッド

0クリップ

投稿2019/01/07 07:50

編集2019/01/07 12:57

前提・実現したいこと

以下のようなデータ(Excelで作成しcsvファイルとして保存)を読み込みたいのですが1行目が
[-1 nan nan nan...]のようになってしまいます

読み込みたいデータ

-13,-11,-8,-9,-9,-6,-7,-6,,,,,,,, 5,0,1,-4,3,1,1,8,,,,,,,, -4,-7,-9,-5,-9,-15,-14,-19,,,,,,,, -11,-10,-13,-17,-14,-10,-13,-12,,,,,,,, -8,-9,-8,-6,-8,-4,-6,-6,,,,,,,, -4,-6,-7,-9,-14,-14,-15,-17,,,,,,,, 3,1,-3,0,-1,2,8,14,,,,,,,, -7,-7,-9,-8,-8,0,5,7,,,,,,,, -11,-13,-14,-11,-11,-12,-6,-1,,,,,,,, 2,6,4,8,9,3,-2,-8,,,,,,,,

該当のソースコード

#カラム名 col_names = ['c{0:02d}'.format(i) for i in range(13)] #読みこみ data_pd=pd.read_csv( 'test.csv',names=col_names,header=None,\ engine='python') data = data_pd.as_matrix() print(data)

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

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

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

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

can110

2019/01/07 08:06

通常ExcelでCSV保存するとカンマ区切りとなるはずですが、そうなっていないようです。 test.csvをメモ帳などのテキストエディタで開いた結果を貼り付けていますか? あるいは、区切り文字は何でしょうか(カンマ?タブ?複数の空白?)
run1

2019/01/07 08:21

atomで開いていたのですが、なぜかカンマ区切りになっていませんでした。 今もう一度データを保存し直しatomで開いたらカンマ区切りになりましたが、1行目は読み込めないままでした。。
can110

2019/01/07 08:24

col_names変数を定義している部分のソースコードも提示ください。 データ保存しなおしても1行目は[-1 nan~]のままでしょうか? また、2行目以降は正常に読み込めているでしょうか?
run1

2019/01/07 08:55

col_names = ['c{0:02d}'.format(i) for i in range(25)]です 先ほど試した時はそのままでした。 2行目以降は読み込めています。
can110

2019/01/07 09:08

提示された結果が再現できません。 少なくともc17列目までは全行数値として読み込めます。
guest

回答2

0

ベストアンサー

提示された現象が再現できませんが、'c19'列目が文字列(object)として認識されているので、数値列に変換することで、以下のような結果を得ることができます。
なお、行列中のnan.fillnaで任意の数値に変換できます。

Python

1import pandas as pd 2 3col_names = ['c{0:02d}'.format(i) for i in range(25)] 4data_pd=pd.read_csv( 'test.csv',header=None,names=col_names, engine='python') 5 6# c19列目が文字列(object)として認識されているので、数値列に変換 7data_pd['c19'] = data_pd['c19'].convert_objects(convert_numeric=True) 8 9#print(data_pd.info()) 10data = data_pd.as_matrix() 11print(data) 12""" 13[[ -1. -2. -2. -6. 1. -2. -2. -5. -7. -3. -1. 5. -2. -4. 14 -2. -3. 7. 0. 1. nan nan nan nan nan nan] 15 [-10. -8. -7. -10. -17. -1. -6. -3. -4. -6. -1. -2. -4. 6. 16 -8. -2. -4. -6. -2. nan nan nan nan nan nan] 17 [ -3. 0. -4. -5. -3. -2. -3. -1. -1. -1. 8. -6. -3. -5. 18 -8. 8. 2. 1. 7. nan nan nan nan nan nan] 19 [ -7. -1. -2. 3. 1. -2. -5. 2. 0. -1. 0. 5. 9. -1. 20 1. -3. 5. 4. 6. nan nan nan nan nan nan] 21 [ -4. -2. -2. -2. -6. -3. 0. -10. -3. -8. -1. 5. 2. 0. 22 6. 2. 10. 10. 1. 2. nan nan nan nan nan] 23 [ -8. -4. 0. -2. -13. -6. -6. -3. -11. 1. -4. 5. -3. 2. 24 2. -4. -3. 5. -2. 1. nan nan nan nan nan] 25 [ -1. 0. 5. -8. -1. -5. -14. -5. -3. -13. -2. 9. -7. -4. 26 1. 7. 3. 5. 3. -6. nan nan nan nan nan] 27 [ -9. -7. -2. 4. 3. -2. -2. -2. 3. -8. 3. -2. -1. 9. 28 0. 11. 6. 7. 4. 4. nan nan nan nan nan] 29 [ -4. -4. -7. -3. -3. -5. -4. -7. -3. 0. 0. 0. -4. 1. 30 -1. 6. 6. 1. 6. 8. nan nan nan nan nan] 31 [ -7. 1. -5. -9. -5. 0. 1. -5. 6. -1. -3. -7. -5. 1. 32 2. 8. 4. 2. 1. nan nan nan nan nan nan] 33 [ -2. -7. -6. 0. -6. -1. -4. -4. 0. -5. -2. -7. -3. 4. 34 -4. 6. 7. 4. 4. nan nan nan nan nan nan] 35 [ 2. -3. -2. 0. -8. -5. -5. -2. -4. -5. 5. -4. -4. -4. 36 -7. 1. 6. 0. 8. nan nan nan nan nan nan] 37 [ -2. 0. -8. -7. 2. 5. -3. -3. -2. -3. -5. 4. -4. -7. 38 6. 4. -2. 2. nan nan nan nan nan nan nan] 39 [ 8. 1. 3. 13. 0. -7. -7. 1. 4. 1. -4. -7. -7. -5. 40 -7. 3. 5. 8. nan nan nan nan nan nan nan] 41 [ -3. 0. 0. -1. 4. 5. 0. 4. -1. -3. -3. 6. 7. 2. 42 5. 15. 0. 6. 1. nan nan nan nan nan nan] 43 [ 2. 2. 2. 5. -3. -1. -1. 1. -3. -7. 8. -4. -3. 4. 44 -1. -4. 0. 0. nan nan nan nan nan nan nan] 45 [ -2. 6. 7. 2. 6. -2. -2. 3. 2. -1. -5. -3. -1. -1. 46 0. 1. 4. -2. nan nan nan nan nan nan nan] 47 [ 5. -2. 1. 2. 5. 4. -2. 1. 2. 8. 2. 2. 2. 3. 48 3. 2. 7. 15. nan nan nan nan nan nan nan] 49 [-10. 4. 0. 1. 3. -4. 0. 4. 1. -3. 8. -1. 1. 0. 50 0. 4. -1. -5. nan nan nan nan nan nan nan] 51 [ 0. -5. -4. -2. 1. 3. 5. 0. 0. 8. 5. -6. 8. 7. 52 -2. -2. 2. 0. nan nan nan nan nan nan nan]] 53""" 54

投稿2019/01/07 09:14

can110

総合スコア38266

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

run1

2019/01/07 09:36

先ほどもう一度、このページから読み込みデータをAtomにコピペしてプログラムを回して見たところ上手く読み込めました。他のファイルで試して見ても出来ました。 原因がいまいち分からないのですが、元データがエクセルなのでそれを保存するときにそのままcsvファイルとして保存していましたが、一度コピペして保存し直すと読み込めるようになるみたいです…。
run1

2019/01/07 10:34

すみません。先ほどとは違う問題が生じてしまったのでお伺いしたいのですが、今度は読み込むと3列目までが上手く読み込めず4列目から読み込むようになってしまったのですが、なぜなのでしょうか…。
guest

0

以下のような形ではどうでしょうか。
header=Noneはなくても問題ないと思います。

python

1import pandas as pd 2 3 4col_names =['1','2','3','4','5','6','7','8','9','10','11', 5 '12','13','14','15','16','17','18','19','20'] 6data_pd=pd.read_csv( 'test.csv',names=col_names) 7 8data = data_pd.as_matrix() 9print(data)
[[-1 -2 -2 -6 1 -2 -2 -5 -7 -3 -1 5 -2 -4 -2 -3 7 0 1.0 nan] [-10 -8 -7 -10 -17 -1 -6 -3 -4 -6 -1 -2 -4 6 -8 -2 -4 -6 -2.0 nan] [-3 0 -4 -5 -3 -2 -3 -1 -1 -1 8 -6 -3 -5 -8 8 2 1 7.0 nan] [-7 -1 -2 3 1 -2 -5 2 0 -1 0 5 9 -1 1 -3 5 4 6.0 nan] [-4 -2 -2 -2 -6 -3 0 -10 -3 -8 -1 5 2 0 6 2 10 10 1.0 '2'] [-8 -4 0 -2 -13 -6 -6 -3 -11 1 -4 5 -3 2 2 -4 -3 5 -2.0 '1'] [-1 0 5 -8 -1 -5 -14 -5 -3 -13 -2 9 -7 -4 1 7 3 5 3.0 '-6'] [-9 -7 -2 4 3 -2 -2 -2 3 -8 3 -2 -1 9 0 11 6 7 4.0 '4'] [-4 -4 -7 -3 -3 -5 -4 -7 -3 0 0 0 -4 1 -1 6 6 1 6.0 '8'] [-7 1 -5 -9 -5 0 1 -5 6 -1 -3 -7 -5 1 2 8 4 2 1.0 nan] [-2 -7 -6 0 -6 -1 -4 -4 0 -5 -2 -7 -3 4 -4 6 7 4 4.0 nan] [2 -3 -2 0 -8 -5 -5 -2 -4 -5 5 -4 -4 -4 -7 1 6 0 8.0 nan] [-2 0 -8 -7 2 5 -3 -3 -2 -3 -5 4 -4 -7 6 4 -2 2 nan nan] [8 1 3 13 0 -7 -7 1 4 1 -4 -7 -7 -5 -7 3 5 8 nan nan] [-3 0 0 -1 4 5 0 4 -1 -3 -3 6 7 2 5 15 0 6 1.0 nan] [2 2 2 5 -3 -1 -1 1 -3 -7 8 -4 -3 4 -1 -4 0 0 nan nan] [-2 6 7 2 6 -2 -2 3 2 -1 -5 -3 -1 -1 0 1 4 -2 nan nan] [5 -2 1 2 5 4 -2 1 2 8 2 2 2 3 3 2 7 15 nan nan] [-10 4 0 1 3 -4 0 4 1 -3 8 -1 1 0 0 4 -1 -5 nan nan] [0 -5 -4 -2 1 3 5 0 0 8 5 -6 8 7 -2 -2 2 0 nan ' ']]

投稿2019/01/07 08:38

iktm

総合スコア18

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問