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のドキュメント