Pandasでcsvおよびexcelデータについて、読み込みと書き込みをする。
環境はPython 3.6.3、Pandas 0.20.3。
やり方
pythonでcsvの読み書きにはcsvモジュールがあるし、excelファイルの読み込みにはxlrd、書き込みにはxlsxwriterなどがある。が、その後のデータの扱いなども考えると、pandasを使うのがやりやすい(内部的に何を使っているかは置いといて)。
特に速度のことは考えない。まぁ速度を考えるならそもそもexcel形式のファイルなんて使わないだろうし。
読み込み
まずデータの読み込み。
df = pd.read_csv('hoge.csv', index=False, dtype='object', encoding='utf-8', skipinitialspace=True, escapechar='\\')
df = pd.read_excel('hoge.xlsx', index=False, dytpe='object')
read_csvメソッドでcsvを読み込み、read_excelメソッドでxlsxを読み込む。読み込む際、インデックスの列がなければindex=Falseを指定する(勝手に連番で割り振られる)。また、勝手に型を判定されると不都合な場合(電話番号とか、数値判定されて頭の0が消されると困るようなやつ)は、dtype='object'でとりあえず全部文字列として扱うとやりやすい。encodingは必要に応じて。utf-8ならあえて指定する必要はない。skipinitialspaceは、Trueにすると,の後の余分なスペースを無視してくれる。デフォルトではダブルクォーテーションがquotecharとしてセットされているが、\でエスケープしたい時はescapechar='\\'。エスケープシーケンスをさらにエスケープする。
そのほかのオプションは公式ドキュメント。
それと、以下の記事がわかりやすかった。
- Pandas で CSV ファイルやテキストファイルを読み込む – Python でデータサイエンス
- Pythonでコンマの後に空白があるcsvを読むときは注意 | Python / note.nkmk.me
書き込み
データフレームを書き込む。
df.to_csv('hoge.csv', index=False, encoding='utf-8')
df.to_excel('hoge.xlsx', index=False)
to_csvメソッドでcsvファイルを書き込み、to_excelメソッドでxlsxファイルを書き込む。
そのほかのオプションは公式ドキュメント。
コメント
コメント一覧 (1件)
[…] https://hack-le.com/pandas-csv-xlsx/ […]