らふのプログラミングメモ

プログラミングメモです。

NumPyのndarray その8 型がいろいろ混ざっているCSVファイルをndarrayに読み込んでみよう

昨日はndarrayに整数のみのCSVファイルを読みこむというのをまとめました。

rafu.hatenablog.jp

ここで1つ疑問が。 型を混ぜてndarrayに入力しようとした場合、どうなるんだろう?

なんでこのような疑問が出たの?

rafu.hatenablog.jp

上の記事でやってみましたが、
型を混ぜてndarrayに入力しようとした場合、
自動で型変換されていました。

ということは、今回も型変換されてしまうのか? 試してみたいと思います。

まずは以前と同じテストファイルを使ってみよう

前回と同じファイル(test.csv)を使ってみたら
どのように読み込まれるかをやってみたいと思います。
このファイルは文字列・日付・数値(int)が入ったものです。

例:
今回もtest.csvというCSVファイルを読み込んでみます。
CSVファイルの配置場所は、Pythonの実行環境と同じ場所においてみます。

python/
 ├ NNN.py(今回実行するファイル)
 ├ test.csv(読み込みたいCSVファイル)

test.csv(文字コード:Shift-JIS)の中身 (1行目にはインデックスを入れてあります。)


名前,日付,テスト
Ito,2021/08/10,85
Suzuki,2021/08/10,80
Tanaka,2021/08/10,75


実際にデータを取り込んでみよう!

NNN.py

import numpy as np

# loadtxtを使って区切り文字を使ったファイルの読み込みを行う。
# encoding:shift_JISのファイルなので指定します。
# delimiter:デフォルトは空白なので、カンマの指定をします。
# skiprows:1行目にインデックスがあるので、これを除外します。
n_array = np.loadtxt("test.csv", encoding = "shift_JIS" ,delimiter = "," , skiprows = 1 )
print(n_array)

結果:エラーが出ました。
内容:could not convert string to float: "Ito"

どうやら文字列が入っているものはダメなようです。

次に、名前を除外したCSVファイル(test3.csv)を作ってみます。

test3.csv


日付,テスト
2021/08/10,85
2021/08/10,80
2021/08/10,75


このtest3.csvを読み込むように変更して実行してみます。

n_array = np.loadtxt("test3.csv", encoding = "shift_JIS" ,delimiter = "," , skiprows = 1 )

すると、先ほどと同じようなエラーが出ました。
エラー内容:could not convert string to float: "2021/08/10"

これより、文字列はloadtxt()では読み込めないことがわかりました。


<最終更新日:2021/09/15>
2021/09/15 投稿