プログラミング

【Python】pandasでファイルを読み書きする手法【チートシート】

pandasのチートシートです。

pandasのファイルの読み書きに関するコマンドをまとめてみました。

CSV、Excel、JSONファイルをpandasを使って読み込みます。その他htmlやsql等も読み込めますがあまり使用経験がないので書いていません。もし使用機会が増えたら追記していきます。

今回紹介する関数は代表的な使い方を紹介しています。

その他の引数やデータ型などについては公式ドキュメントをご参考ください。

pandas documentation Version: 1.2.2

CSVファイルの読み書き

pd.read_csv()

pd.read_csv()はCSVファイルを読み取る関数です。
サンプルデータは以下のようにカンマ区切りのデータを使用します。

商品,値段,グレード
りんご,100,A
みかん,150,B
メロン,400,S
スイカ,250,C

import pandas as pd
df = pd.read_csv('sample.csv')
print(df)

>>>
    商品   値段 グレード
0  りんご  100    A
1  みかん  150    B
2  メロン  400    S
3  スイカ  250    C

データ解析のコンペなどはcsvファイルでデータが提供されることが多いので一番使うと思います。

よく使う引数

引数が多いのでよく使うものだけピックアップしました。

引数 デフォルト 概要
filepath_or_buffer strもしくはファイルパス 省略不可 対象のファイルを読み込む
header int, もしくはintのリスト infer ファイルを読み始める行を指定、リストの場合はMultiIndexとなる。
names 配列 None 列の名前を指定する
index_col str, int, もしくはそれらのシーケンス, False None インデックスとなる列を指定
usecols リストもしくは呼び出し可能なもの None 使用する列を選択する

df.to_csv()

df.to_csv()はデータフレームをCSVファイルに書き込むことができます。

df.to_csv('output.csv', encoding='utf-8-sig')

日本語を使用している場合、encodingの引数を’utf-8-sig’にしないと文字化けします。’utf-8’でも大丈夫ですが、特にこだわりなければ’utf-8-sig’が無難です。

’utf-8’と’utf-8-sig’の違いについての詳細はこちらに詳しく書いてあります。

よく使う引数

こちらも引数が多いのでよく使うものだけピックアップしています。

 

引数 デフォルト
path_or_buf str, ファイルパス None DataFrame, Seriesをcsvファイルに保存する
header boolもしくはstrのリスト True ヘッダーの指定
index bool True インデックスを入れるか否か
index_label strもしくはシーケンス, False None インデックスのラベル名
encoding str None 文字コードの指定。日本語を使用しているなら’utf-8-sig’を推薦

 

Excelファイルの読み書き

pd.read_excel()

pd.read_excel()はExcelファイルを読み込みます。csvとは違い、読み取るシートを指定できるのが特徴です。自宅でネットワークのスピードを測ったエクセルデータを読み込んでみました。

df = pd.read_excel('sample.xlsx', usecols=[2,4,6,7], sheet_name='ネット速度')
print(df)

>>>
        日付      ネットワーク  下り(Mbps)  上り(Mbps)
0  2020/12/9   Wifi(5GHz)     86.90    110.20
1  2020/12/15  Wifi(5GHz)     85.50    105.35
2  2020/12/16  Wifi(5GHz)     71.44     83.53

よく使う引数

こちらも引数が多いのでよく使うものだけピックアップしています。

引数 デフォルト 概要
io str, ファイルパス, URLなど 省略不可 対象のファイルを読み込む
sheet_name str, int, list or None 0 シートの名前を読み込むintの場合は左から0, 1, 2の順で読み込む
header int, もしくはintのリスト infer ファイルを読み始める行を指定、リストの場合はMultiIndexとなる。
names 配列 None 列の名前を指定する
index_col str, int, もしくはそれらのシーケンス, False None インデックスとなる列を指定
usecols リストもしくは呼び出し可能なもの None 使用する列を選択する

sheet_name以外は基本的にread_csv()と同じです。

df.to_excel()

df.to_excel()はデータフレームをExcelファイルに書き出すことができます。

df.to_excel('output.xlsx')

なぜかわかりませんがExcelファイルに書き込みをすると勝手に罫線が引かれています。

よく使う引数

こちらも引数が多いのでよく使うものだけピックアップしています。

引数 デフォルト 概要
excel_writer パスライク, ファイルライクな文字列 省略不可 データフレーム, シリーズをxlsxファイルに保存する
sheet_name 文字列 ’Sheet1′ シートの名前を指定する
header boolもしくはstrのリスト True ヘッダーの指定
index bool True インデックスを入れるか否か
index_label strもしくはシーケンス, False None インデックスのラベル名
encoding str None 文字コードの指定。日本語を使用しているなら’utf-8-sig’を推薦

JSONファイルの読み書き

JSONファイルは階層構造を表現できるデータ形式です。NoSQLのデータベースによく用いられます。今回は以下のように記述されている’sample.json’を扱います。

{"row 1":{"col 1":"a","col 2":"b"},"row 2":{"col 1":"c","col 2":"d"}}

pd.read_json()

pd.read_json()は上記のようなJSONファイルを読み込みます。

df = pd.read_json('sample.json')
print(df)
>>>
       row 1 row 2
col 1     a     c
col 2     b     d

よく使う引数

こちらも引数が多いのでよく使うものだけピックアップしています。以下のふたつくらいかなと考えています。

引数 デフォルト 概要
path_or_buf 文字列(ファイルパスのような) 省略不可 対象のファイルを読み込む
orient 文字列 None key, valueどちらをindex, columnにするか指定する

orient引数を使うことでkey, valueのどちらをindex, columnにするかを指定できます。

df = pd.read_json('sample.json', orient='index')
print(df)
>>>
       col 1 col 2
row 1     a     c
row 2     b     d

リストタイプのJSONを読み込む時はorient='records'を使ってたりもします。

df.to_json()

df.to_json()はデータフレームをJSONファイルに書き出します。

df.to_json('sample.json')

よく使う引数

読み込みと同様以下のふたつくらいかなと考えています。

引数 デフォルト 概要
path_or_buf 文字列, ファイルパス, json形式のもの 省略不可 JSONファイルに書き込む
orient 文字列 None データの形式を選択する。

Seriesならorientはデフォルトで’index’, DataFrameなら’columns’になります。
’split’を選択すると辞書形式に、’records’を選択するとリスト形式で保存します。
‘split’と’records’は[ と{ が逆転している関係になります。

まとめ

ポイント

データ解析にpandasを使う場合ファイルの読み書きは登竜門!

ファイルを読み込まないとデータの解析は始まりません!

COMMENT

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です