目次

Pandas入門


この記事は執筆中です。今後加筆される予定です。

記事の目的
Pandasでの作業の流れを示し、初学者が安心してPandasを使い始められるようにする。
使用環境
環境はGoogle Colabを想定している。

Pandasでの作業の流れ

  1. csvファイル等を読み込む
  2. 読み込んだデータを加工して分析
  3. 加工したデータ・分析した結果を、図やcsvとして出力

というのがよくある流れだと思います。この記事では、まずは、1と3の入出力の方法について紹介します。

なお、以下のコードは、

1
2
3
import pandas as pd
import matplotlib.pyplot as plt
import numpy as np

のようにライブラリをimportしてあることを前提に書いてあります。

入出力

csvファイル等の読み込み

基本

1
2
df = pd.read_csv("読み込みたいcsvファイルのpath")
df.head()  # 読み込んだデータの先頭を表示してみる

より良い方法

読み込みたいデータの内容がわかっている場合には、必要な列とその型を指定した方が読み込みが早いようです(参考)。

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
csv_path = "読み込みたいcsvファイルのpath"
usecols = ["col_name0", "col_name1", "col_name2"]
df = pd.read_csv(
    csv_path,
    usecols=usecols,
    dtype={
        "col_name0": int,
        "col_name1": str,
        "col_name2": "category"  # 集計(後述)のkeyにするならこの型にすると良い
    }
)
df.head()  # 読み込んだデータの先頭を表示してみる

もっと詳しく知りたい場合はこの記事を見ると良いです(Excel・JSON・pickleについても記事内にリンクがあります): https://note.nkmk.me/python-pandas-read-csv-tsv/

csvファイル等の書き出し

1
df.to_csv("保存先のpath")

一部の列だけ保存したい場合:

1
2
columns = ["col0", "col1", "col2"]
df.to_csv("保存先のpath", columns=columns)

もっと詳しく知りたい場合はこの記事を見ると良いです(Excel・JSON・pickleについても記事内にリンクがあります): https://note.nkmk.me/python-pandas-to-csv/

図のプロット

折れ線グラフなら:

1
df.plot("figure_path")

グラフの種類変更

グラフの種類を棒グラフや円グラフにしたい場合は:

1
2
df.plot("figure_path", kind="bar")  # 棒グラフ
df.plot("figure_path", kind="pie")  # 円グラフ

他に用意されているグラフの種類を知りたい場合は、ドキュメント参照。

軸のラベル設定

x軸, y軸のラベル名を変えたい場合は、

1
df.plot("figure_path", xlabel="some_label", ylabel="some_label")

のように指定する。

図の保存

1
2
df.plot("figure_path")  # この図を保存したい
plt.savefig("保存先path")

保存した画像を見てみて、文字が見切れている場合は、

1
2
df.plot("figure_path")  # この図を保存したい
plt.savefig("保存先path", bbox_inches="tight")

とすればいい感じになる。

詳細

pandasのplotについてもう少し詳しく知りたい場合には以下を参照: https://note.nkmk.me/python-pandas-plot/

凝った図を作りたい場合はmatplotlibを直接使うと良い。参考: https://qiita.com/nkay/items/d1eb91e33b9d6469ef51

データ構造の種類:DataFrameとSeries

Pandasのデータ構造としては、DataFrameとSeriesの2つがあります。

DataFrame

DataFrameは、数学の行列に列名(header)と行名(index)をつけたものをイメージするとわかりやすいと思います。

1
2
3
4
5
# DataFrameの例(下記note.nkmk.meから引用)
#       col0  col1 col2
# row0     0   0.0    a
# row1     1   0.1    b
# row2     2   0.2    c

csvやExcelからread_csvでデータを読み込むコードで、

1
df = pd.read_csv("読み込みたいcsvファイルのpath")

dfと書いたのは、DataFrameの略でした。read_csvの返り値は基本的にDataFrameです(ドキュメント: read_csv)。

Series

Seriesは、DataFrameから1列抜き出したものと考えるとわかりやすいと思います。

1
2
3
4
5
# Seriesの例
#       col0
# row0     0
# row1     1
# row2     2

実際、DataFrameから例えば以下のようにSeriesを抜き出すことができます。

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
print(df)
# このようなDataFrameがあったとします。
#       col0  col1 col2
# row0     0   0.0    a
# row1     1   0.1    b
# row2     2   0.2    c

s0 = df["col0"]
print(s0)
#       col0
# row0     0
# row1     1
# row2     2

DataFrameとSeriesの変換

DataFrame→Series

列を抜き出す場合は前述の通り:

1
s = df["col_name"]

行を抜き出したい場合はこの記事を参照。

Series→DataFrame

SeriesのListからDataFrameを作れると便利な時がある。 各Seriesを列にしたい場合は:

1
df = pd.DataFrame([s1, s2, s3])

各Seriesを行にしたい場合は:

1
df = pd.concat([s1, s2, s3], axis=1)

詳細

もっと詳しく知りたい場合はこの記事を見ると良い: https://note.nkmk.me/python-pandas-dataframe-series-conversion/

行・列・要素の参照の仕方

結合の仕方

要素の参照の仕方

前処理:NaNの処理など

新しい列を追加する操作

データ型の確認・変更

集計:groupby