Pythonライブラリ講座

【Pandas】CSV・Excelファイルを読み書きする方法

前のページ|次のページ

10章ではPandasのDataFrameを用いた『CSV/Excelファイルへの書き込み』および『CSV/Excelファイルからの読み込み』について解説します。

実際に手を動かしながら学べる内容になっていますので、ぜひ最後までご覧ください!

本連載講座【Python ライブラリ編】では、データサイエンスに必要なPythonライブラリやその使い方を基礎から学ぶことができます。

NumPyPandasMatplotlibScipySeabornについて、初学者の方にも分かりやすいよう丁寧に解説しています。

さらに、学習した内容を定着させられるように各章演習問題を用意しています。

・Pythonでデータ分析ができるようになりたい

・Pythonの基礎事項は一通り学んだので、さらに深く学びたい

このように考えている方はTech Teacherが運営する【Python ライブラリ編】で、Pythonによるデータサイエンスの学習をすることをお勧めします!

なお、『Pythonについて全く知らない』・『Pythonの基礎事項がまだ分かっていない』という方は、まずコチラの【Python 基礎編】で基礎を一通り学習してからライブラリ編に取り掛かりましょう!

<ライブラリ編 目次>

<ライブラリの基礎>
1章:ライブラリとは

<NumPy>
2章:NumPyの概要と配列(ndarray)
3章:統計量や次元の取得/ソート
4章:配列のインデックス
5章:numpy.whereによる条件制御
6章:配列の結合/分割
7章:乱数

<SciPy>
8章:SciPyの概要と基本操作

<Pandas>
9章:SeriesDataFrame/統計量の取得
10章:データの読み込み/書き込み
11章:データの取り出し/追加
12章:データのソート
13章:データの結合
14章:階層型インデックス
15章:groupbyによる集計
16章:マッピング処理
17章:欠損値の扱い

<Matplotlib>
18章:Matplotlibの概要
19章:pyplotインターフェース
20章:オブジェクト指向インターフェース

<Seaborn>
21章:Seabornの概要と基本操作

元になるデータの準備

PandasではCSVExcelなどのファイルに対する入出力を簡単に行うことができます。

今回はCSVファイルとExcelファイルに対するDataFrameの入出力を解説します。

本記事ではWindowsJupyter環境を想定しています。

まずは、元になるDataFrameを準備しましょう。

以下のコードを実行してデータを準備してください。

#データ
data = {
    'Name': ['John', 'Alice', 'Bob', 'Emily', 'Michael', 'Samantha', 'David'],
    'Age': [28, 32, 45, 29, 35, 40, 38],
    'Occupation': ['Engineer', 'Doctor', 'Teacher', 'Artist', 'Lawyer', 'Entrepreneur', 'Architect'],
    'Salary': [60000, 80000, 70000, 50000, 90000, 120000, 100000]
}

#DataFrameを作成
df = pd.DataFrame(data)
df
9章DataFrame6

また、カレントディレクトリを確かめるために以下のコマンドを実行してください。

pwd

これを実行することで、現在作業中のフォルダ(カレントディレクトリ)が表示されます。

cdコマンドmkdirコマンドを使用して、今回作成するファイルを保存したいディレクトリにあらかじめ移動しておきましょう。

Pandasでファイルにデータを書き込む方法

CSVファイルに書き込む

to_csv』メソッドを用いてDataFrameの内容をcsvファイルに書き込むことができます。

DataFrame.to_csv(‘書き込むファイルのパス’)

とすることで、DataFrameの内容を指定したファイルに書き込むことができます。

以下の例では、先ほど定義したDataFrameの「df」を新しく作成したCSVファイルに書き込んでいます。

なお、ファイル名は「df_to_csv.csv」、保存するディレクトリカレントディレクトリとします。

df.to_csv('./df_to_csv.csv')

CSVファイルが正しく作られているか確認するために、lsコマンドでカレントディレクトリのファイルを見てみましょう。

ls
2024/02/14  21:36    <DIR>          .
2024/01/24  23:44    <DIR>          ..
2024/02/13  16:56    <DIR>          .ipynb_checkpoints
2023/10/22  17:50    <DIR>          data
2024/02/14  21:36               220 df_to_csv.csv
2024/02/09  20:04            47,390 library_sample.ipynb
2024/02/14  21:34            27,725 pandas_sample.ipynb
2023/10/29  21:53            62,701 sample_notebook.ipynb
2024/02/11  13:00           649,909 test.ipynb

上記はlsコマンドの出力の一部ですが、「df_to_csv.csv」という名前のファイルが新たに追加されていることを確認できました。

それでは、作成したCSVファイルをテキストエディタで確認してみましょう。

CSVファイルのテキスト""

DataFrameの内容がコンマ区切りのCSV形式に変換されていることが分かると思います。

Excelでファイルを開いた場合も、以下のようにDataFrameの内容がしっかり保存されていることが分かります。

CSVファイル Excel

Excelファイルに書き込む

to_excel』メソッドを用いると、DataFrameの内容をExcelファイルに書き込むことができます。

DataFrame.to_excel(‘書き込むファイルのパス’)

とすることで、DataFrameの内容を指定したファイルに書き込むことができます。

CSVファイルと同じように、「df」の内容をExcelファイルに書き込んでみましょう。

なお、ファイル名は「df_to_excel.xlsx」とします。

df.to_excel('./df_to_excel.xlsx')

こちらもlsコマンドでファイルが作成されていることを確認してみましょう。

2024/02/14  21:59    <DIR>          .
2024/01/24  23:44    <DIR>          ..
2024/02/14  21:40    <DIR>          .ipynb_checkpoints
2023/10/22  17:50    <DIR>          data
2024/02/14  21:36               220 df_to_csv.csv
2024/02/14  21:59             5,207 df_to_excel.xlsx
2024/02/09  20:04            47,390 library_sample.ipynb
2024/02/14  21:40            28,913 pandas_sample.ipynb
2023/10/29  21:53            62,701 sample_notebook.ipynb
2024/02/11  13:00           649,909 test.ipynb

たしかに「df_to_excel.xlsx」という名前のExcelファイルが追加されていますね。

このファイルをExcelで開いてみましょう。

Excelファイル 確認

DataFrameの内容が正しく書き込まれていることが確認できました。

Pandasでファイルからデータを読み込む方法

続いてPandasCSV・Excelファイルからデータを読み込み、DataFrameに格納する方法を説明します。

今回は、先ほど作成した「df_to_csv.csv」と「df_to_excel.xlsx」の2つのファイルをそれぞれDataFrameに読み込みます。

CSVファイルから読み込む

pd.read_csv()』関数を用いて、CSVファイルの内容をDataFrameにコピーすることができます。

pd.read_csv(‘読み込むファイルのパス’)

このように書くと、パスで指定されたCSVファイルの内容をコピーしたDataFrameが返されます。

それでは先ほど作成した「df_to_csv.csv」を読み込み、DataFrameとして表示してみましょう。

なお、以下のコードは読み込むCSVファイルがカレントディレクトリにあることを仮定しています。

#CSVファイルから読み込み
df_csv = pd.read_csv('./df_to_csv.csv')

df_csv
DataFrame1

「Unnamed: 0」という不要なカラムが作られてしまっています。

これは、以下の画像から分かる通り、元のCSVファイルの最初の列としてインデックスが書き込まれているためです。

CSVファイル インデックス

CSVファイルの最初の行をインデックスとしてファイルを読み込むには、引数の『index_col』を0に設定します。

#CSVファイルから読み込み(最初の列をインデックスに指定)
df_csv = pd.read_csv('./df_to_csv.csv', index_col=0)

df_csv
DataFrame2

不要なカラムが追加されずに、正しくデータを読み込むことができました。

Excelファイルから読み込む

pd.read_excel()』関数を用いることで、Excelファイルの内容をDataFrameに読み込むことができます。

pd.read_excel(‘読み込むファイルのパス’)

のように書くことで、パスで指定されたExcelファイルの内容を格納したDataFrameが返されます。

CSVファイルの読み込みと同じように、カレントディレクトリから「df_to_excel.xlsx」という名前のファイルを読み込んでみましょう。

なお、先ほどと同じようにExcelファイルの最初の列をインデックスとして読み込んでいます。

#Excelファイルから読み込み(最初の列をインデックスに指定)
df_excel = pd.read_excel('./df_to_excel.xlsx', index_col=0)

df_excel

DataFrame2

CSVファイルの読み込みと同じ結果が得られました。

まとめ

いかがだったでしょうか。

本記事では、『DataFrameからCSV/Excelファイルへの書き込み』、『CSV/ExcelファイルからDataFrameへの読み込み』について解説しました。

次回からは、Pandasを用いたデータの加工に関する様々な知識を網羅的に学んでいきます。

一緒にPythonによるデータ分析をマスターしていきましょう!

次のページへ

loc・ilocを徹底解説!Pandasでデータを取り出し・追加する方法 前のページ|次のページ 11章ではPandasにおける『行や列の取り出し』『loc』『iloc』『行や列の追加』『ブールインデッ...