NumPyのndarray その8 型がいろいろ混ざっているCSVファイルをndarrayに読み込んでみよう
昨日はndarrayに整数のみのCSVファイルを読みこむというのをまとめました。
ここで1つ疑問が。
型を混ぜてndarrayに入力しようとした場合、どうなるんだろう?
なんでこのような疑問が出たの?
上の記事でやってみましたが、
型を混ぜて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 投稿