PythonでのCSVファイルの読み書き徹底解説|モジュールを使用して簡単にCSVファイルを扱おう!
- システム
エンジニア - PythonにおいてのCSVファイルはどのように読み書きをするのでしょうか。
- プロジェクト
マネージャー - csvモジュールやpandasモジュールを使用して読み書きをします。
PythonでのCSVファイルの読み書き徹底解説
今回は、PythonでのCSVファイルの読み書きについて説明します。CSVの読み書きには、csvモジュールやpandasモジュールを使用します。これらを使ったCSVファイルの扱い方について紹介します。
PythonでのCSVファイルの読み書きに興味のある方はぜひご覧ください。
csvモジュールで読み込み
PythonでのCSVファイルの読み込みについて紹介します。csvモジュールを使用します。以下の内容をsample.csvとして保存しておいてください。
1
2
3
4
|
name,age,gender,email
ichiro,20,male,ichiro@email.com
jiro,30,male,jiro@email.com
hanako,40,female,hanako@email.com
|
それでは、実際のソースコードを見てみましょう。
1
2
3
4
5
6
7
8
9
|
import csv
# CSVファイルのオープン
with open ('sample.csv', 'r') as f:
# データの読み込み
reader = csv.reader(f)
# 全ての行を出力
for line in reader:
print(line)
|
実行結果は以下のようになります。
1
2
3
4
|
['name', 'age', 'gender', 'email']
['ichiro', '20', 'male', 'ichiro@email.com']
['jiro', '30', 'male', 'jiro@email.com']
['hanako', '40', 'female', 'hanako@email.com']
|
ヘッダを読み飛ばす場合は以下のように記述します。
1
2
3
4
5
6
7
8
9
10
|
import csv
# CSVファイルのオープン
with open ('sample.csv', 'r') as f:
# データの読み込み
reader = csv.reader(f)
header = next(reader) # ヘッダを読み飛ばす
# 全ての行を出力
for line in reader:
print(line)
|
実行結果は以下のようになります。
1
2
3
|
['ichiro', '20', 'male', 'ichiro@email.com']
['jiro', '30', 'male', 'jiro@email.com']
['hanako', '40', 'female', 'hanako@email.com']
|
CSVファイルを読み込んだ後に、特定のデータにアクセスするには以下のように記述します。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
|
import csv
# CSVファイルのオープン
with open ('sample.csv', 'r') as f:
# データの読み込み
reader = csv.reader(f)
header = next(reader) # ヘッダを読み飛ばす
# 行の取得
line = [row for row in reader]
print(line[0])
print(line[1][1])
# CSVファイルのオープン
with open ('sample.csv', 'r') as f:
# 辞書として取得
dict = [row for row in csv.DictReader(f, ['name','age','gender','email'])]
print(dict[1])
print(dict[2]['age'])
|
実行結果は以下のようになります。
1
2
3
4
|
['ichiro', '20', 'male', 'ichiro@email.com']
30
OrderedDict([('name', 'ichiro'), ('age', '20'), ('gender', 'male'), ('email', 'ichiro@email.com')])
30
|
このようにPythonでは、csvモジュールでCSVファイルの読み込みができます。
csvモジュールで書き込み
PythonでのCSVファイルの書き込みについて紹介します。csvモジュールを使用します。実際のソースコードを見てみましょう。
1
2
3
4
5
6
7
8
9
|
import csv
header = ['name','age','gender','email']
data = [['ichiro',20,'male','ichiro@email.com'],['jiro',30,'male','jiro@email.com']]
with open('sample2.csv', 'w') as f:
writer = csv.writer(f, lineterminator='\n') # 改行コード指定
writer.writerow(header) # listの書き込み
writer.writerows(data) # 2次元配列の書き込み
|
実行すると、sample2.csvが生成されます。catコマンドで中身を確認してみます。
1
2
3
4
5
|
~$ cat sample2.csv
name,age,gender,email
ichiro,20,male,ichiro@email.com
jiro,30,male,jiro@email.com
~$
|
CSVファイルに追記するには以下のように記述します。
1
2
3
4
5
6
7
|
import csv
data = ['hanako',40,'female','hanako@email.com']
with open('sample2.csv', 'a') as f: # 追記モード(a)で書き込み
writer = csv.writer(f, lineterminator='\n')
writer.writerow(data)
|
実行後、catコマンドで中身を確認してみます。
1
2
3
4
5
6
|
~$ cat sample2.csv
name,age,gender,email
ichiro,20,male,ichiro@email.com
jiro,30,male,jiro@email.com
hanako,40,female,hanako@email.com
~$
|
このようにPythonでは、csvモジュールでCSVファイルの書き込みができます。
pandasモジュールで読み込み
PythonでのCSVファイルの読み込みについて紹介します。pandasモジュールを使用します。実際のソースコードを見てみましょう。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
|
import pandas as pd
df = pd.read_csv('sample.csv')
print(df)
# カラム名を表示
print(df.columns)
# Index(['name', 'age', 'gender', 'email'], dtype='object')
# name 列を表示
print(df['name'])
# 0 ichiro
# 1 jiro
# 2 hanako
# Name: name, dtype: object
# 2レコード目を表示
print(df[2:3])
# name age gender email
# 2 hanako 40 female hanako@email.com
|
実行結果は以下のようになります。
1
2
3
4
5
6
7
8
9
10
11
|
name age gender email
0 ichiro 20 male ichiro@email.com
1 jiro 30 male jiro@email.com
2 hanako 40 female hanako@email.com
Index(['name', 'age', 'gender', 'email'], dtype='object')
0 ichiro
1 jiro
2 hanako
Name: name, dtype: object
name age gender email
2 hanako 40 female hanako@email.com
|
このようにPythonでは、pandasモジュールでCSVファイルの読み込みができます。
pandasモジュールで書き込み
PythonでのCSVファイルの書き込みについて紹介します。実際のソースコードを見てみましょう。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
|
import pandas as pd
# データの作成
df =\
pd.DataFrame([["name","age","gender","email"],
["ichiro",20,"male","ichiro@email.com"],
["jiro",30,"male","jiro@email.com"]] )
# CSVの書き込み
df.to_csv('sample3.csv', header=False, index=False)
# CSVの追記
df_add = pd.DataFrame([["hanako",40,"female","hanako@email.com"]])
df_add.to_csv('sample3.csv', mode='a', header=False, index=False)
|
実行後、catコマンドで中身を確認してみます。
1
2
3
4
5
6
|
~$ cat sample3.csv
name,age,gender,email
ichiro,20,male,ichiro@email.com
jiro,30,male,jiro@email.com
hanako,40,female,hanako@email.com
~$
|
このようにPythonでは、pandasモジュールでCSVファイルの書き込みができます。
- システム
エンジニア - csvモジュールを使用した場合とpandasモジュールを使用した場合、それぞれの読み書きの方法がより理解できました。
- プロジェクト
マネージャー - PythonでのCSVファイルの読み書きをより理解するために、実際のソースコードを確認してみましょう。
まとめ
いかがでしたでしょうか。csvモジュールやpandasモジュールを使用した、CSVファイルの読み書きについて説明しました。
ぜひご自身でPythonのソースコードを書いて、理解を深めてください。
FEnet.NETナビ・.NETコラムは株式会社オープンアップシステムが運営しています。
株式会社オープンアップシステムはこんな会社です
秋葉原オフィスには株式会社オープンアップシステムをはじめグループのIT企業が集結!
数多くのエンジニアが集まります。
-
スマホアプリから業務系システムまで
スマホアプリから業務系システムまで開発案件多数。システムエンジニア・プログラマーとしての多彩なキャリアパスがあります。
-
充実した研修制度
毎年、IT技術のトレンドや社員の要望に合わせて、カリキュラムを刷新し展開しています。社内講師の丁寧なサポートを受けながら、自分のペースで学ぶことができます。
-
資格取得を応援
スキルアップしたい社員を応援するために資格取得一時金制度を設けています。受験料(実費)と合わせて資格レベルに合わせた最大10万円の一時金も支給しています。
-
東証プライム上場企業グループ
オープンアップシステムは東証プライム上場「株式会社夢真ビーネックスグループ」のグループ企業です。
安定した経営基盤とグループ間のスムーズな連携でコロナ禍でも安定した雇用を実現させています。
株式会社オープンアップシステムに興味を持った方へ
株式会社オープンアップシステムでは、開発系エンジニア・プログラマを募集しています。
年収をアップしたい!スキルアップしたい!大手の上流案件にチャレンジしたい!
まずは話だけでも聞いてみたい場合もOK。お気軽にご登録ください。
Python新着案件New Job
-
マルチロガーソフト開発/東京都豊島区/【WEB面談可/C#経験者/20代後半~40代の方活躍中/経験年数不問】/在宅勤務
月給41万~50万円東京都豊島区(池袋駅) -
マルチロガーソフト開発/東京都豊島区/【WEB面談可/C#経験者/20代前半の方活躍中/経験1年以上の方活躍中】/在宅勤務
月給29万~34万円東京都豊島区(池袋駅) -
商品化予定の振動センサーの運用保守/Python/東京都都内/【WEB面談可】
月給50万~60万円東京都都内(-駅) -
商品化予定の振動センサーの可視化UI開発のテスター/Python/東京都都内/【WEB面談可】
月給25万~35万円東京都都内(-駅) -
商品化予定の振動センサーの運用保守/Python/東京都都内/【WEB面談可】
月給50万~60万円東京都都内(-駅) -
商品化予定の振動センサーの可視化UI開発のテスター/Python/東京都都内/【WEB面談可】
月給25万~35万円東京都都内(-駅)