PythonでCSVファイルを読み書きする方法(CSV, Pandas)
AIや機械学習の分野でこれからの活躍がますます期待されているPythonですが、データ分析の分野でも注目されています。マーケティングや分析をする時に欠かせないのが「データの読み込み」です。Webスクレイピングをした後のデータ保存にCSVファイルが使われていて、これを読み取ったり書き込んだりすることは多いですよね。
この記事ではPythonの学習初心者の方に向けて、CSVファイルの書き込み、読み込み方法をご紹介していきます。
そもそもCSVとは?
CSVとは、Comma Separated Value の略称で、カンマ(,)で区切られた値が含まれているテキストファイルです。
そうは言ってもCSVファイルが具体的にどんなものかイメージできない方もいますよね。具体的には、以下のようにカンマで区切られているファイルのことを指します。
apple, banana, camera, diary, egg・・・
拡張子は「.csv」形式で、テキストエディタや、エクセルで開くことが可能です。
特にスクレイピングをよく行ったりする方は、扱い方などを一通り覚えておくと非常に便利です。
PythonでCSVデータを取り扱うには
CSVモジュール(標準ライブラリ)を用いた方法
CSVモジュールは、Pythonの標準ライブラリに含まれています。そのため、追加のインストールは不要です。
シンプルなCSVデータ処理に適していますが、データの分析や高度な操作をするには制約があります。
CSVファイルの読み込み例
CSVファイルを読み込む時はまずCSVファイルを作成して、そのあとPythonプログラムにコードを書いてそれを実行します。
今回は、エクセルで簡単なCSVファイルを作ってみました。
Googleスプレッドシートでも作成することができるので皆さんもやってみましょう。
sample.csv
apple,banana,camera,diary,egg
上のファイルが、今回読み込むCSVファイルです。そして実行するプログラムは以下の通りです。
sample_csv.py
import csv
with open('sample.csv', encoding='UTF-8') as f:
reader = csv.reader(f)
for line in reader:
print(line)
これら2つを同じ階層のディレクトリに保存して、コマンド(またはターミナル)を開いて、実行してみましょう。
実行結果
CSVファイルへの書き込み例
では、続いてCSVファイルへの書き込み例を見ていきましょう。
sample_csv2.py
import csv
word = 'frog, god'
words = word.split(',')
with open('sample.csv', 'w') as f:
writer = csv.writer(f)
writer.writerow(words)
上のコードでは、書き込む内容をリストに保存して、その後ファイルに書き込む形式にしています。読み込む時との違いは、open関数の引数に、wが追加されている部分です。wと区切ることによって書き込みが可能になっているのです。
コマンド(もしくはターミナル)で実行していきます。
python sample_csv2.py
実行後、ターミナル上ではなにを起こりません。CSVファイルを直接確認して、
apple , banana, camera, diary, eggが、frog, godに上書きされているかどうか確認してみましょう。
実行結果
frog,god
実行結果が以上のように表示されていたら、確実に上書きされている証拠です。
これで上書きが完了しました。
CSVモジュール以外の方法
先程も述べたように、CSVモジュールはシンプルではありますが複雑な処理には適しておらず、コードが長く複雑になってしまいます。
PythonでCSVデータを取り扱う方法は他にPandas、NumPyなどがあり、プロジェクトの要件や目的によって使い分けることがおすすめです。
ここでは、データ解析ライブラリのPandasを紹介します。
Pandas
Pandasはデータ解析に特化したライブラリです。データの読み込み以外にも、フィルタリング、集約、結合、変換など、幅広い操作を提供しています。
CSVファイルの読み込み例
以下のsample2.csvファイルをPandasを使って読み込んでみましょう。
Pandasを用いた読み込みには、read_csv()
という関数を使います。
sample2.csv
name,color,category
apple,red,fruits
banana,yellow,fruits
carrot,orange,vegetable
sample_csv_pandas.py
import pandas as pd
df = pd.read_csv('sample2.csv', index_col=0, encoding='utf-8')
print(df)
実行結果
Pandasを使うと上記のように列名が区別されるため、後々データを取り出すときに行列名を指定することも可能です。
まとめ
今回は、Pythonを使ってCSVファイルの読み込み、書き込みを行う際の基本的な方法についてご紹介しました。Pythonは、色々な場面で利用出来ますが、データ分析で使う際にも非常に優秀です。
学習初心者の方は、本記事を参考にして、PythonでのCSVの読み込み、書き込みを実践してみてくださいね。
この記事のキーワードに関する勉強会・イベントを探す
TECH PLAYでは、ITエンジニア向けの勉強会・イベント情報を提供しています。
興味のある方はぜひご参加ください。