こんにちは。
この記事はおぎーが担当します。
今回はCSVファイルについて学習を進めていきましょう。
Google Colaboratoryを開いて準備をしてください。
CSVファイル
CSVファイルとは
さて、CSVファイルとは何でしょう。
聞いたことあるけど詳しくは知らないといった方もここで理解しておきましょう。
実はCSVは略語であり、
正式には、
Comma Separated Values
といいます。
日本語に訳すと、「カンマで区切られた値」です。
カンマで区切って何が得なんですか?
という疑問があるかもしれません。
実際にソフトウェアをいじった経験がある方でないと、
しっくりこないかもしれませんが、
おぎーは実験装置で測定した結果を、エクセルでCSVファイルとして保存して、
解析用のソフトウェアにインポートしたことがあります。
CSVファイルではなかったらインポートができませんでした。
つまり、CSVファイルにすることで、転送したいデータを様々なソフトウェアを行き来できる形にしているといった解釈でよいと思います。
さきほど説明したように、みなさんも使用経験があるであろうエクセルでも、
データの保存形式としてCSVを選択することができるようになっているので、
興味のあるひとはぜひ確認してみてください。
さきほど、CSVファイルでは、データがカンマで区切られていると説明しました。
いまいちイメージがしっくりこないといった方は、
エクセルを思い浮かべてみてください。
セルがたくさんありますよね。
そのセル内の値が、カンマとカンマの間にあるデータそのものを表しています。
もし、PythonでCSVファイルを作ったとします。
そのファイルの中では、
1,2,3
とデータが保存されていた場合、
そのファイルをエクセルで開こうとすると、
エクセルの1行目に左から1、2、3と各セルに値が入力されています。
このことからも、カンマで区切られていることと、エクセルのセルの関係がイメージできますね。
次の段落では実際のコードをみていきます。
CSVファイルのコード例
これまで学習してきたファイルに関する学習での知識が必要です。
過去記事も復習しながらまずは頑張って解読してみましょう。
パターン①
まずはこちらのコードを見て何を操作しているのか考えてみましょう。
import csv
with open("french.csv", "w") as x:
y = csv.writer(x, delimiter=",")
y.writerow(["un", "doux", "trois"])
y.writerow(["quatre", "cinq", "six"])
このコードを出力してみましょう。
出力すると、画面左側のファイルエリアに、
「french.csv」という名前のファイルが出てくるので、
クリックしてみましょう。
そうすると画面右側に、
エクセルのような縦2マス・横3マスのマス目の中に上の段が、
un, doux, troisの3つがそれぞれ1マスずつ、
下の段は、quarte, cinq, sixの3つがそれぞれ1マスずつ記されて出力されたのではないかと思います。
どのような内容のコードか分かりましたか?
答えは、CSVファイルを作成し、データを追加して閉じるといったコードでした。
まずは1行目、importでcsvと入力してcsvを呼び出します。
次に、with文を使用してファイルの書き出しを行います。
with文って何だっけとなった方は下記の記事を読んでください。
2行目では、french.csvというファイルを書き出すためにwのモードを使用しています。
3行目では、writerメソッドというものを使用して、csvファイルのデータの区切りをコンマと指定しています。
このような各データを区切るための記号を、デリミタと呼び、カンマ以外にも、
バー(|)も使用することができます。
writerメソッドは、このデリミタとファイルオブジェクトを受け取り、
csvオブジェクトにします。
さらにcsvオブジェクトは、writerowメソッドというもので、
引数としてリストを受け取り、
リストの内容をCSVファイルに書き出します。
その書き出し作業を行っているのが、4行目と5行目で、
ここまでで操作は完了です。
念のため確認しておきますが、
4行目と5行目で、なぜリストの角カッコにさらに波カッコで
囲んでいるのかが分からないといった方もいるかもしれません。
あくまでリストを作成するための角カッコと、
メソッドを適用させるための波カッコは別扱いですので、
その辺はキチンと理解しておいてください。
パターン②
ここまでの学習を踏まえれば、何となくコードの内容が分かるはずです。
それではこちらのコードを解読してみてください。
import csv
with open("french.csv", "r") as x:
y = csv.reader(x, delimiter=",")
for z in y:
print(",".join(z))
こちらのコードは、さきほど紹介したコードを実行させ、
french.csvが保存されている状態で実行できるコードです。
このコードを出力すると、
un, doux, trois
quatre, cinq, six
と出てくるのではないでしょうか。
こちらのコード全体で行いたかったことは、
さきほど作成したfrench.csvのファイルのデータを読み込み、文字列にして出力することです。
1行目は大丈夫ですね。
2行目では、rのモードを用いて読み込んでいます。
3行目では、ファイル内のデータを、
readerメソッドを用いてcsvオブジェクトに変換して読み込んでいます。
4行目、5行目が一工夫されたポイントですが、
なつかしのforループを用いて各データにカンマで連結させています。
その結果、カンマで区切られた文字列を出力することができます。
まとめ
今回はCSVファイルについて学習しました。
覚えることが多く、一回では理解しきれていない可能性もあります。
忘れたらすぐに読み返して定着を図りましょう。
それでは確認事項へ移ります。
・CSVファイルとは何?
・自分の好きな単語を3つCSVファイルに書き込み、カンマで区切った文字列として出力してみよう。
今回のコードはGitHubの方に載せておきますので、
ぜひ活用してください。
GitHubの使用法が分からなければ以下の記事を参考にしてください。
それではまた次回お会いしましょう。
おぎー