C# と VB.NET の質問掲示板

ASP.NET、C++/CLI、Java 何でもどうぞ

C# と VB.NET の入門サイト

PythonでのCSVファイルの読み込み代入について

[トピック内 11 記事 (1 - 11 表示)]  << 0 >>

■93955 / inTopicNo.1)  PythonでのCSVファイルの読み込み代入について
  
□投稿者/ さき (1回)-(2020/02/27(Thu) 09:57:25)

分類:[その他の言語] 

import pandas as pd
df = pd.read_csv('読み込むCSVファイルのパス')
print(df)

上のは表示ですが、今回したいのはdfへの代入です。
しかもheaderもないCSVファイルです。

11,12,13,14
21,22,23,24
31,32,33,34

色んなとこ見てるのですがPython初心者でよく分かりません。
よろしくお願いします。


引用返信 編集キー/
■93956 / inTopicNo.2)  Re[1]: PythonでのCSVファイルの読み込み代入について
□投稿者/ Hongliang (965回)-(2020/02/27(Thu) 10:43:10)
https://note.nkmk.me/python-pandas-read-csv-tsv/
ヘッダのないcsvの読み取りについてはここに記述がありますね。

> df = pd.read_csv('読み込むCSVファイルのパス')
> print(df)
> 上のは表示ですが、今回したいのはdfへの代入です。
代入自体はdf =の行で終わっていますが。

読み取ったデータのアクセス方法などは以下のページなど参考になるでしょうか。
https://qiita.com/ysdyt/items/9ccca82fc5b504e7913a
引用返信 編集キー/
■93964 / inTopicNo.3)  Re[2]: PythonでのCSVファイルの読み込み代入について
□投稿者/ さき (2回)-(2020/02/27(Thu) 17:17:59)
No93956 (Hongliang さん) に返信

ありがとうございます。
初心者で説明が下手ですみません。

import pandas as pd
df = pd.read_csv('読み込むCSVファイルのパス')
print(df)

上を実行すると下記のようにはなります。
       11  12  13  14
0      21  22  23  24
1      31  32  33  34

これを元と同じ下記のようにはならないでしょうか?
11,12,13,14
21,22,23,24
31,32,33,34


引用返信 編集キー/
■93965 / inTopicNo.4)  Re[3]: PythonでのCSVファイルの読み込み代入について
□投稿者/ とっちゃん (660回)-(2020/02/27(Thu) 17:50:49)
No93964 (さき さん) に返信
> ■No93956 (Hongliang さん) に返信
>
> ありがとうございます。
> 初心者で説明が下手ですみません。
>
> import pandas as pd
> df = pd.read_csv('読み込むCSVファイルのパス')
> print(df)
>
> 上を実行すると下記のようにはなります。
> 11 12 13 14
> 0 21 22 23 24
> 1 31 32 33 34
>
> これを元と同じ下記のようにはならないでしょうか?
> 11,12,13,14
> 21,22,23,24
> 31,32,33,34
>
>
Hongliang さんがリンクしてくれた最初の記事にそのまんま同じ表示のサンプルがあります。
https://note.nkmk.me/python-pandas-read-csv-tsv/

この記事の中に「headerがないcsvの読み込み」があります。
まずは、その部分を読んでみてください。

それでもわからないという場合は、何がわからないかを改めて説明するとよいと思いますよ。

引用返信 編集キー/
■93970 / inTopicNo.5)  Re[4]: PythonでのCSVファイルの読み込み代入について
□投稿者/ さき (3回)-(2020/02/27(Thu) 21:34:48)
2020/02/27(Thu) 21:37:58 編集(投稿者)
No93965 (とっちゃん さん) に返信

ありがとうございます。

「headerがないcsvの読み込み」は見てもいましたし試しもしてもいます。
しかしそこにも書かれてるように下記のようにしかなりませんよね?
他に方法がないのでしたらまた別ですが。

import pandas as pd
df = pd.read_csv('data/src/sample.csv')
print(df)

   11  12  13  14
0  21  22  23  24
1  31  32  33  34


print(df.columns)

Index(['11', '12', '13', '14'], dtype='object')

引用返信 編集キー/
■93973 / inTopicNo.6)  Re[5]: PythonでのCSVファイルの読み込み代入について
□投稿者/ とっちゃん (661回)-(2020/02/28(Fri) 00:59:55)
No93970 (さき さん) に返信
> 2020/02/27(Thu) 21:37:58 編集(投稿者)
>
> ■No93965 (とっちゃん さん) に返信
>
> ありがとうございます。
>
> 「headerがないcsvの読み込み」は見てもいましたし試しもしてもいます。
> しかしそこにも書かれてるように下記のようにしかなりませんよね?

ちゃんとセンテンスの最後まで読んでいますか?

----
> import pandas as pd
> df = pd.read_csv('data/src/sample.csv')
> print(df)
>
> 11 12 13 14
> 0 21 22 23 24
> 1 31 32 33 34
>
>
> print(df.columns)
>
> Index(['11', '12', '13', '14'], dtype='object')
>
----
この部分の次に

「header=Noneとすると連番が列名columnsに割り当てられる。」
という部分があります。

これでは役に立ちませんか?

また、さらに後ろには「任意の値を列名として設定することもできる。」
という部分もあります。

この形でもいいかもしれません。

引用返信 編集キー/
■93978 / inTopicNo.7)  Re[6]: PythonでのCSVファイルの読み込み代入について
□投稿者/ さき (4回)-(2020/02/28(Fri) 12:10:00)
No93973 (とっちゃん さん) に返信

ありがとうございます。

>ちゃんとセンテンスの最後まで読んでいますか?
まだ足りないかもしれませんが、読んでもいる積りですしこれぞと思うものは試してもいる積りです。

>この形でもいいかもしれません。
これも試してはみましたが、やはりこのように元と同じには成らなかったです。

11,12,13,14
21,22,23,24
31,32,33,34
引用返信 編集キー/
■93979 / inTopicNo.8)  Re[7]: PythonでのCSVファイルの読み込み代入について
□投稿者/ とっちゃん (662回)-(2020/02/28(Fri) 12:38:45)
No93978 (さき さん) に返信
> >この形でもいいかもしれません。
> これも試してはみましたが、やはりこのように元と同じには成らなかったです。
>
> 11,12,13,14
> 21,22,23,24
> 31,32,33,34

もしかして、print( df ) で上記のように何も飾りがないものを表示されると
期待しているということでしょうか?

だとすると、1行目をヘッダーにされないようにする問題とは別のものですよね?

現状だと read_csv に、header=None オプションを追加することで(pd.read_csv( 'csvファイル', header=None )とする)
下記のような感じで print されるようになると思います。

# 0 1 2 3
# 0 11 12 13 14
# 1 21 22 23 24
# 2 31 32 33 34

この、上と左につくおまけデータを表示されないようにしたいということでしょうか?

pandas は使ったことがないので、整形表示があるかどうかわかりません。
ということで、自分でできるのはリファレンスの入り口を提示する程度なので載せておきますね。

https://pandas.pydata.org/pandas-docs/stable/

引用返信 編集キー/
■93980 / inTopicNo.9)  Re[8]: PythonでのCSVファイルの読み込み代入について
□投稿者/ さき (5回)-(2020/02/28(Fri) 14:56:33)
No93979 (とっちゃん さん) に返信

> もしかして、print( df ) で上記のように何も飾りがないものを表示されると
> 期待しているということでしょうか?

その通りで、読み込んだのと同じ仕様での出力(表示)にはならないもか? との期待をしています。

引用返信 編集キー/
■93982 / inTopicNo.10)  Re[9]: PythonでのCSVファイルの読み込み代入について
□投稿者/ Hongliang (966回)-(2020/02/28(Fri) 15:43:28)
ヘッダなしでの読み込みは成功したということでいいんですかね。

まず、そもそもcsvの各行各フィールドにアクセスしたりする必要がないのであれば、
read_csvのようなcsvとして読み込む必要がありません。
f = open(ファイルパス)
fd = f.read()
print(fd)
だけで十分です。

一旦read_csvで読み取ったのを、ヘッダも行番号もなしで文字列化するのであれば、
fd = pd.read_csv(ファイルパス, ...)
txt = fd.to_csv(index=False, header=False)
print(txt)
のように記述できます。
しかしこれは本当に元のファイル通りに表示できる保証はありません。
(元ファイルに引用符が含まれてたりする場合など)

元ファイルの形式を保持しなければならないのなら、
一旦ファイルから全部文字列として読み取り、その読み取った文字列からread_csvする方法もあります。
# import ioが必要
f = open(ファイルパス)
txt = f.read()
fd = pd.read_csv(io.StringIO(txt), ...)
print(txt)
print(fd)

引用返信 編集キー/
■93987 / inTopicNo.11)  Re[10]: PythonでのCSVファイルの読み込み代入について
□投稿者/ さき (6回)-(2020/02/28(Fri) 17:18:56)
No93982 (Hongliang さん) に返信

ありがとうございます。

ヘッダなしでの読み込みは成功しています。

>まず、そもそもcsvの各行各フィールドにアクセスしたりする必要がないのであれば、
>read_csvのようなcsvとして読み込む必要がありません。
そのようなことにもなるのですね。
気付きませんでした。

まだサンプルでしか試してはいませんが、希望通りにはなりましたので恐らくこの上段のと中段のとで十分です。

お教えありがとうございました。
解決済み
引用返信 編集キー/

このトピックをツリーで一括表示


トピック内ページ移動 / << 0 >>

このトピックに書きこむ