pandasとは?機能、メソッドチートシート【Pythonによるデータ解析】

pandasとは

Pythonにおける、データ解析に必要な機能を集めたライブラリ。
元々は金融データを処理するために生まれたもので、我々に馴染みのある、CSVやExcelなどの形式に近いデータ型(DataFrame)で処理することができ、データの入出力や加工が容易にできるのが大きな特徴である。

pandasの特徴

DataFrameオブジェクトにより、データ操作と解析をより簡単にしている。
各種スプレッドシートの柔軟なデータ連携が可能(CSV、Excel、SQLデータ)
欠損データの補修など、データの前処理を行う機能が揃っている。(このようなツールをETLツール※と呼ぶ。)

※ETLツール

・Extract – 外部の情報源からデータを抽出
・Transform – 抽出したデータをビジネスでの必要に応じて変換・加工
・Load – 最終的ターゲット(すなわちデータウェアハウス)に変換・加工済みのデータをロード

— Wikipediaより引用

インストールと呼び出し

インストールは以下のコマンドで行う。

pip install pandas

呼び出す際は慣例的に以下のように呼び出す。

import pandas as pd

データ型

DataFrame
Series
GroupBy

重要なメソッド

メソッドの説明で具体例を示すために、Koggleのタイタニック号生存モデル予測のデータを中心に話を進める。
Titanic: Machine Learning from Disaster

データはここからダウンロードできる。

データ入出力

取り込んだデータはdataframeという意味のdfに格納する。

df = pd.read_csv("data.csv") #csvデータのインポート

データの確認

df.head() # 先頭の5行を表示
df.tail() # 最後の5行を表示

# データの行列の形を確認する
df.shape # (891, 12) 

# データのカラム(ヘッダ行)を確認する
df.columns 
# Index(['PassengerId', 'Survived', 'Pclass', 'Name', 'Sex', 'Age', 'SibSp',
#       'Parch', 'Ticket', 'Fare', 'Cabin', 'Embarked'],
#      dtype='object')

# 各列のデータ型を確認
df.dtypes 
#PassengerId      int64
#Survived         int64
・・・
#Cabin           object
#Embarked        object
#dtype: object

データの取得

メソッド一覧

df[n:,m]
df.mean()
df['name'].mean()
df.median()
df['name'].median()

df['Age'] # 1列を取り出す。取り出したデータはSeries型
df['Age'].isnull() # 欠損値をbooleamで表示、欠損値がTrue

# 5行目から10行目を取り出す
df[5:10] 
#    PassengerId  Survived  Pclass    ...      Fare Cabin  Embarked
# 3            4         1       1    ...     53.10  C123         S
# 4            5         0       3    ...      8.05   NaN         S

# 平均値を取得する。欠損値は除外
df.mean() 
#df.mean()
#PassengerId    446.000000
#Survived         0.383838
#Pclass           2.308642
#Age             29.699118
#SibSp            0.523008
#Parch            0.381594
#Fare            32.204208

# 中央値を取得する。欠損値は除外
df.median() 
#PassengerId    446.0000
#Survived         0.0000
#Pclass           3.0000
#Age             28.0000
#SibSp            0.0000
#Parch            0.0000
#Fare            14.4542

# Ageの中央値を取得する。
df['Age'].median()
# 28.0

# Ageが欠損値であるDataFrameを取得
df[df['Age'].isnull()]
#     PassengerId  Survived  Pclass    ...         Fare  Cabin  Embarked
#5              6         0       3    ...       8.4583    NaN         Q
#17            18         1       2    ...      13.0000    NaN         S
#19            20         1       3    ...       7.2250    NaN         C
#・・・

データ操作

fillna():欠損値の穴埋め、置換

pandas.Series.fillna
df.fillnan()

例)

# 欠損値を0で埋める
df.fillna(0)

# 欠損値をAgeの中央値で置換する。
df['Age'].fillna(df.Age.median(), inplace=True)
df.fillna(df.mean())

# 欠損値を列ごとに置換する。
df.fillna({'Age': '20', 'SibSp': 0, 'Parch': 0})

dropna():欠損値を削除

pandas.DataFrame.dropna
df.dropna()

例)

# 欠損値が一つでも含まれている行が削除される。 デフォルトでこの動作
df.dropna(how='any') 

# 欠損値が一つでも含まれている列が削除される。 
df.dropna(how='any', axis=1) 

# すべての行が欠損値の行が削除される。
df.dropna(how='all') 

# すべての列が欠損値の列が削除される。
df.dropna(how='all' axes=1) 

# 欠損値が3個以上含まれている行が削除される。
df.dropna(thresh=3)

# 特定の行をキーで指定して削除する。
df.dropna(subset=['age'])
df.dropna(subset=['name', 'age'])

参考書籍:

参考サイト
pandasのドキュメント