【Python】10分で分かるpandas その1

10分で分かるpandas

はじめに

この記事はpandas公式チュートリアル「10 minutes to pandas」の写経及び解説です

以下のURLを参考にしています https://pandas.pydata.org/pandas-docs/stable/getting_started/10min.html

環境

  • Python3.7
  • Jupyter Lab

とりあえずインポート

import numpy as np
import pandas as pd
np
pd

以下のように各モジュールが表示されればOK

**ModuleNotFoundError: No module named ‘pandas’**と怒られたのでpandasをまず入れます。


---------------------------------------------------------------------------
ModuleNotFoundError                       Traceback (most recent call last)
<ipython-input-1-59ab05e21164> in <module>
      1 import numpy as np
----> 2 import pandas as pd

ModuleNotFoundError: No module named 'pandas'

コマンド python -m pip install pandas

オブジェクトを作る

参考:【10 minutes to pandas - Object creation】

Seriesクラスにリストを入れることで簡単にデータを作ることが出来ます。


# 簡単に一列作る
s = pd.Series(data=[1, 3, 5, np.nan, 6, 8])
s

参考:pandas.Series

date_range()メソッドを使うことで、特定の期間の日付の行を作成出来ます。


# 2020年1月1日から6日間のデータ
dates = pd.date_range("20200101", periods=6)
dates

参考:pandas.date_range()

pandasのDataFrameクラス引数indexを指定することで、行インデックスを指定することが出来ます。

# 行インデックスに2020年1月1日からのデータを指定
# 各値にはランダムな数値を入れる
df = pd.DataFrame(np.random.randn(6, 4), index=dates)
df

また、同じくDataFrameクラスの引数columnsを指定することで列名を設定することが出来ます。

# 列名ABCDを設定
df = pd.DataFrame(np.random.randn(6, 4), index=dates, columns=list("ABCD"))
df

参考:pandas.DataFrame

DataFrameクラスに辞書型のデータを渡すことで、辞書型のキーの部分が列名になります。

df2 = pd.DataFrame(
    {
        "A": 1.,
        "B": pd.Timestamp("20200101"),
        "C": pd.Series(1, index=list(range(4)), dtype="float32"),
        "D": np.array([3] * 4, dtype="int32"),
        "E": pd.Categorical(["test", "train", "test", "train"]),
        "F": "foo",
    }
)
df2

dtypes属性に参照することで各列のデータ属性が分かります。

df2.dtypes

Jupyter Labなどを使っている場合、列名がタブ保管で表示されます。

db2.<TAB>

データを表示する

参考:【10 minutes to pandas - Viewing data】

DataFrameクラスのhead()メソッドを使うことでデータの先頭部を表示できます。

df.head(2)

参考:DataFrame.head()

同じくDataFrameクラスのtrail()メソッドを使うことでデータの後尾部を表示できます。

df.tail(2)

参考:DataFrame.tail()

DataFrameクラスのindex属性を参照することでそのデータの行インデックスを表示出来ます。

df.index
df2.index

参考:DataFrame.index

DataFrameクラスのto_numpy()メソッドを使うことでデータをnumpyで操作しやすいデータに変換できます。

df.to_numpy()
df2.to_numpy()

参考:DataFrame.to_numpy()

DataFrameクラスのdescribe()メソッドを使うことで、データの各列の簡単な統計を取ることができます。

df2.describe()

DataFrameクラスのT属性を参照すると、行列入れ替えたデータにアクセスできます。

df.T

また、DataFrameクラスのtranspose()メソッドでも同じく行列の入れ替えを取得できます。

df.transpose()

参考:DataFrame.T 参考:DataFrame.transpose

DataFrameクラスのsort_index()メソッドを使用することで、行全体もしくは列全体の並び替えを行うことができます。

df.sort_index()

引数axisに0もしくは"index"を設定すると行に、1もしくは"columns"を設定すると、列を軸に並び替えします(デフォルト値0)。また、引数ascendingにFalseを指定すると並び順が降順になります(デフォルト値True)。


df.sort_index(axis=0, ascending=False)
df.sort_index(axis=1, ascending=False)

参考:DataFrame.sort_index()

DataFrameクラスのsort_values()メソッドを使用することで行単位もしくは列単位に並び替えを行うことができます。

df.sort_values(by="B")
df.sort_values(by="2020-01-01", axis=1)

参考:DataFrame.sort_values()

(ここで力尽きる。残り……多くない?10分とは:thinking: )

参考:【10 minutes to pandas - Selection】 参考:【10 minutes to pandas - Missing data】 参考:【10 minutes to pandas - Operations】 参考:【10 minutes to pandas - Merge】 参考:【10 minutes to pandas - Grouping】 参考:【10 minutes to pandas - Reshaping】 参考:【10 minutes to pandas - Time series】 参考:【10 minutes to pandas - Categoricals】 参考:【10 minutes to pandas - Plotting】 参考:【10 minutes to pandas - Getting data in/out】 参考:【10 minutes to pandas - Gotchas】