xlsx形式で読み込みしたファイルをcsv形式で出力したい(またはその逆)
Pythonの入出力方法を知りたい
そんなお悩みを、Python歴3年の私ができるだけわかりやすく解説し、解決に導きます。
実行見本
下図のように「input.xlsx」を、「output.csv」として出力できます。
事前準備
- pandasのインストール
pandasのインストール方法
pandasを初めて使用する場合は、下記コードを入力・実行して、インストールしてください。
pip install pandas
※pandasを使用したことがある場合は、このインストール作業は不要です。
インストールができない場合の対処法などは下記記事をご参考ください。
全コード
ひとまず全コードを網羅します。解説は後ほど行います。
import pandas as pd
df = pd.read_excel('input.xlsx')
#df = pd.read_csv('input.csv', encoding='shift-jis')
#任意処理
df.to_csv('output.csv', encoding='shift-jis', index = None)
#df.to_excel('output.xlsx', index = None)
解説
以下4つ解説いたします。
pandasのインポート
1行目の「import pandas as pd」でpandasのインポートを行います。
この記述が無いと、xlsxファイルやcsvファイルの読み込みができません。
「as pd」の部分やインポートの詳細も下記記事で解説しております。
read_excel(read_csv)
3行目の「read_excel」でエクセルファイルを読み込みます。
後ろの()内は読み込むファイル名を記述してください。
dfは変数です。
読み込んだエクセルファイルを、「df」という変数に格納しています。
今回はdataframeを略して「df」という変数名にしていますが、何でも構いません(※一部使えない単語があります)
★dataframeとは★
簡単にいうと、今回のように列が複数ある表のことです。
列が1列のみの表は「series」といいます。
csvファイルを読み込む場合は、4行目のように「read_csv」と記述してください。
read_csvの後ろの「encoding=’shift-jis’」はエンコードです。
日本語で書かれたファイルは基本「encoding=’shift-jis’」で構いません。
この記述が無いと、文字化けが発生したりエラーが出たりする場合があります。
「#」の役割は?
4行目の「#df = pd.read_csv~」についての補足です。
この「#」はコメントアウトです。
コメントアウトとは、実際にプログラムとして実行されることはない、「見えない文字」のようなものです。
説明文などに#をつけて、実際に実行されないようにすることが多いです。
to_csv(to_excel)
8行目の「to_csv」でcsvファイルに書き出します。
後ろの()内は書き出し後のファイル名を記述してください。
※エクセルファイルに書き出す場合は、9行目のように「to_excel」と記述してください。
前項同様エンコード(encoding=’shift-jis’)が必要です。
「index = None」は行番号を書き出さない記述です。
これを書かないと、行番号「0・1・2・3…」が表記されてしまいます。
▼「index = None」を書かなかった場合のサンプル画像
A列に行番号が入ってしまっているのがわかります。
任意の処理
今回のように読み込み・書き出しをおこなうだけの処理は、実務ではほとんどありません。
抽出は並べ替えなど、任意の処理をここに記述してください。
うまく動作しない時
エラーが出る
No such file or directory : ○○
これは、読み込むファイルやフォルダが見つからないというエラーです。
読み込むファイルのファイル名と構文のファイル名が一致しているか確認しましょう。
○○ is not defined
今まで出てきていない変数などを処理しようとした時に出るエラーです。
変数名が間違っていないかチェックしたり、ファイル内の列名と構文が一致しているかを確認しましょう。
その他のエラー
その他のエラーが出た場合は、エラー文をコピーしてNETで検索してみましょう。
まとめ
xlsx形式・csv形式のファイルを入出力する方法を解説いたしました。
読み込みは「read_○○」、書き出しは「to_○○」と覚えてください。
最後までお読みいただき、ありがとうございました。