室村日記

日々、試行錯誤したことを備忘録的にまとめていきます

pythonでcsvファイルを読み込む

1 はじめに

いつか集計しようと思って,趣味の麻雀の記録をexcelでとっていたのですが,この度ついに実行に移すことになりました.
とりあえず最初はRでごちゃごちゃとやっていたのですが,せっかくなら勉強中のpythonでやったほうがいいのではないかと思いたち,まずはデータを読み込むところから始めようと思ったわけです.

2 やったこと

exelで集計していたデータをpythonで読み込みます.
使用環境は3系(python3.6.0)でJupyter Notebookを利用しています.

というわけでpandasのread_csv()を利用します.
名前的にもcsvしか読み込んでくれなさそなので,エクセルで作成したファイルを[cmd+shift+s]でファイル形式をcsvに変えて別名保存します.
早速以下のスクリプトを動かすと

pd.read_csv("../Data/mahjong_log.csv")

怒られました.

UnicodeDecodeError: 'utf-8' codec can't decode byte 0x8c in position 1: invalid start byte

初めから蹴つまずきますね.
google恩師に尋ねながら,read_table()を試してみたりしたけど同じエラーを吐きよります.

Rのときと同じように,エディタにコピペしてencoding変えて保存したらうまくいくんでしょうけど,この先データを更新するたびにその作業をするのも面倒ですよね.
そもそもエクセルをcsvに保存し直すのすらめんどいのに.
と考えたところでRのように読み込み時にencoding="sjis"で指定してやったらうまくいくんじゃないかと思ったら一発で読み込んでくれました.

3 サンプルコード

というわけでサンプルコードは以下.

import pandas as pd
pd.read_csv("hoge.csv", encoding="sjis")

次はとりあえず点数を順位に変換して平均順位などを出したいと思います.

それでは.