🦚

[Python] CSVファイルを読み込む2パターン

2023/06/30に公開

はじめに

CSV ファイルを読み込む処理を一度書いたらその関数を使いまわすので、
忘れがちなので、備忘録として執筆します。

項目 内容
対象者 ・Python 初学者
伝えたい内容 ・Python で CSV ファイルを読み込む方法
前提条件 ・Python 3.9.10
・pandas 1.5.2

対象の CSV ファイル

sample.csv
No,name,age,gender
1,ito,15,male
2,suzuki,14,female
3,sakai,18,male
No name age gender
1 ito 15 male
2 suzuki 14 female
3 sakai 18 male

ファイル構成

 .
 ├── csv
 │   └── sample.csv
 ├── csv_reader001.py
 ├── csv_reader002.py
 └── csv_reader003.py

それぞれの違い

ライブラリー インストール コード量 返り値
標準ライブラリー 不要 多め リスト型
pandas ライブラリー 必要 少ない データフレームオブジェクト
  • Q: データフレーム(DataFrame)オブジェクトとは?
    • A: DataFrame は、行と列からなる 2 次元のデータ構造です。

標準ライブラリーで読み込む方法

1. 各行を 1 行ずつ出力するパターン

サンプルコード

csv_reader001.py
# csvライブラリーのインポート
import csv

# csvファイルのファイルパスを引数に渡す
# 読み込んだファイル情報を`f`として扱う
with open('csv/sample.csv') as f:
    # readerでCSVファイルとして呼び出す
    reader = csv.reader(f)
    # reader: 2次元配列
    for row in reader:
        print(row)

出力結果を確認します

$python csv_reader001.py
['No', 'name', 'age', 'gender']
['1', 'ito', '15', 'male']
['2', 'suzuki', '14', 'female']
['3', 'sakai', '18', 'male']

2. 各行を 1 行ずつを配列の要素として出力するパターン

サンプルコード

csv_reader002.py
from pprint import pprint
# csvライブラリーのインポート
import csv

# csvファイルのファイルパスを引数に渡す
# 読み込んだファイル情報を`f`として扱う
with open('csv/sample.csv') as f:
    # readerでCSVファイルとして呼び出す
    reader = csv.reader(f)
    reader_list = [row for row in reader]
    pprint(reader_list)

出力結果を確認します

$python csv_reader002.py
[['No', 'name', 'age', 'gender'],
 ['1', 'ito', '15', 'male'],
 ['2', 'suzuki', '14', 'female'],
 ['3', 'sakai', '18', 'male']]

pandas ライブラリーで読み込む方法

  • Q: Python の pandas とは?
    • A: Python のデータ解析ライブラリの一つであり、表形式のデータを効率的に扱う事が出来ます。
  • Q: pandas のメリットは?
    • A: 行と列からなる表形式のデータの読み込み、加工、分析、可視化などを簡単に行う事が可能です。

pandas ライブラリーをインストールする

pip install pandas

サンプルコード

csv_reader003.py
# pandasライブラリーのインポート
import pandas as pd

# csvファイルのファイルパスを引数に渡す
df = pd.read_csv('csv/sample.csv')
# 出力する
print(df)

出力結果を確認します

$python csv_reader002.py
     name  age  gender
0     ito   15    male
1  suzuki   14  female
2   sakai   18    male

おわりに

VSCode の拡張機能にRainbow CSVという便利な拡張機能があり、
色鮮やかなイメージをして 🦚 の emoji にしました。

GitHubで編集を提案

Discussion