一通り市販の教科書を読むとscikit-learnの
サンプルプログラムでとりあえず機械学習出来るようになります。
あっさりと。ね。
ではExcelからマイCSVファイルをPythonに読み込ませようと・・・
フォントエンコードエラーが出ます。
Excelの仕様です。
ググれば沢山のブログ記事にあたって教えてもらえます。
誰もが最初にぶつかる壁なのでブログに残しておきます。
●Excelのエンコード問題
機械学習ではCSVファイルが良いよ、なんてよく言われますが
実際にエクセルのマイCSVファイルを読み込ませようと本を読むと
何故かまともな記載は殆どありません。
さらっと流してある程度です。不思議です。
PythonでエクセルCSVを読み込ませようとするとエラーが出ます。
「UnicodeDecodeError: 'utf-8' codec can't decode byte 0x83 in position 0: invalid start byte」
実はExcel側にこんな問題が・・・
・Excel2010と2013にはエンコードを指定して保存する機能がない
・UTF-8とShift-JIS、CP932の複数のエンコードがエクセルCSVファイルに混在する
・Byte Order Markファイルが入ってUTF-8などが見えない所に残ってしまう。
などがあり、単純にCSVと言ってもエクセルの仕様で
Pandasのエンコードエラーが多発します。
つまりPandasでエンコード指定しても別のエンコードエラーが出るというw
解決法としては、
・xlsxファイルを直接Pythonに読み込む
・Pandasじゃなくてcsv.reader(CSVファイル)を使う(文字化けする)
・一旦メモ帳などテキストエディタで開いてエンコード指定して保存w
が考えられます。
文字化けしたら修正するかエンコードします。
そうすればPandasでも読み込み出来るはずです。
実はこんなやりとりもw
Excel で UTF‐8 の CSV を作成したい
手元の PC で確認したところ、Excel 2010、2013 で [名前を付けて保存] >
[ファイルの種類 : CSV (カンマ区切り) (*.csv)] で保存する時に、
文字コードを選択することは出来ないようです。
そのため、Excel の通常の操作だけで、文字コードが UTF-8 の
CSV ファイルを作成するのは難しいかもしれません。
Windows XP のメモ帳で [名前を付けて保存] で、ファイルを保存する時に
文字コードを選択することが出来ます。
ちょ、ちょっと。
MSサポートさんマジですか!?
と思ってしまいました。冗談じゃなく本当の記事です。
●単純に読み込むには
import csvしてcsv.reader()を使います。
こちらとか参考に。
PythonでCSVファイルを読み書きする方法
import csv
csvfile = 'csv1.csv'
f = open(csvfile, "r")
reader = csv.reader(f)
# header = next(reader)
for row in reader:
print row[1]
などなどでしょうか・・・
でも一部フォントが文字化けしますw
文字化けしたらエンコードを変換して修正しましょう。
そうすればPandasでも読める様になります。
教科書を読むと大抵pandasを使いたいですが・・・
●まとめ
色々なサイトにこの手の記事は沢山あるので
是非一通り読んでみましょう。
大抵似たような問題に当たっています。
エクセルとPandasの問題ですが、驚きます。
こんなの基本だよ、とは言わないで・・・勉強中です・・・
まずはエラーが出た際に落ち着いてググってみましょう。
ヤバイな。
【機械学習の最新記事】