Pandas 早見表 (Cheat Sheet)
Pandas ライブラリを使用するための詳細なガイドです。
Pandas のインストール
| コマンド | 説明 |
|---|---|
conda install pandas |
Pandas を取得する最適な方法は conda 経由です |
python3 -m pip install --upgrade pandas |
PyPI 経由 |
pip install pandas |
標準的な pip インストール |
重要な略語とパッケージのインポート
| 略語 | 説明 |
|---|---|
df |
任意の Pandas DataFrame オブジェクト |
s |
任意の Pandas Series オブジェクト |
インポート方法
| コマンド | 説明 |
|---|---|
import pandas as pd |
Pandas を pd というエイリアスでインポート |
import numpy as np |
Numpy を np というエイリアスでインポート |
データの選択
| コマンド | 説明 |
|---|---|
df[col] |
列名に基づいて列を Series として返す |
df[[col1, col2]] |
複数の列を DataFrame として返す |
s.iloc[0] |
位置によってデータを選択 |
s.loc['index_one'] |
インデックスによってデータを選択 |
df.iloc[0,:] |
最初の行を返す |
df.iloc[0,0] |
最初の列の最初の要素を返す |
データのクリーニング
| コマンド | 説明 |
|---|---|
df.columns = ['a','b','c'] |
列名を変更 |
pd.isnull() |
DataFrame 内の null 値をチェックし、Boolean 配列を返す |
pd.notnull() |
DataFrame 内の null でない値をチェックし、Boolean 配列を返す |
df.dropna() |
null 値を含むすべての行を削除 |
df.dropna(axis=1) |
null 値を含むすべての列を削除 |
df.dropna(axis=1, thresh=n) |
非 null 値が n 個未満の行をすべて削除 |
df.fillna(x) |
DataFrame 内のすべての null 値を x で置換 |
s.astype(float) |
Series のデータ型を float に変換 |
s.replace(1, 'one') |
1 に等しいすべての値を ‘one’ で置換 |
s.replace([1,3], ['one', 'three']) |
1 を ‘one’ に、3 を ’three’ に置換 |
df.rename(columns=lambda x: x + 1) |
列名を一括変更 |
df.rename(columns={'old_name': 'new_name'}) |
特定の列名を選択して変更 |
df.set_index('column_one') |
インデックス列を変更 |
df.rename(index=lambda x: x + 1) |
インデックスを一括変更 |
データのインポート
| コマンド | 説明 |
|---|---|
pd.read_csv(filename) |
CSV ファイルからデータをインポート |
pd.read_table(filename) |
区切り文字付きのテキストファイルからデータをインポート |
pd.read_excel(filename) |
Excel ファイルからデータをインポート |
pd.read_sql(query, connection_object) |
SQL テーブル/データベースからデータをインポート |
pd.read_json(json_string) |
JSON 文字列からデータをインポート |
pd.read_html(url) |
URL、文字列、または HTML ファイルからテーブルを抽出 |
pd.read_clipboard() |
クリップボードからコンテンツを取得し、read_table() に渡す |
pd.DataFrame(dict) |
辞書オブジェクトからデータをインポート (Key は列名、Value はデータ) |
データの操作: Filter, Sort, GroupBy
| コマンド | 説明 |
|---|---|
df[df[col] > 0.5] |
列 ‘col’ の値が 0.5 より大きい行を選択 |
df.sort_values(col1) |
列 col1 でデータをソート (デフォルトは昇順) |
df.sort_values(col2, ascending=False) |
列 col2 を降順でソート |
df.sort_values([col1, col2], ascending=[True, False]) |
col1 は昇順、col2 は降順でソート |
df.groupby(col) |
列 ‘col’ でグループ化した GroupBy オブジェクトを返す |
df.groupby([col1, col2]) |
複数の列でグループ化した GroupBy オブジェクトを返す |
df.groupby(col1)[col2].mean() |
col1 の各グループに対する col2 の平均値を返す |
df.pivot_table(index=col1, values=[col2, col3], aggfunc=max) |
col1 でグループ化し、col2 と col3 の最大値を計算するピボットテーブルを作成 |
df.groupby(col1).agg(np.mean) |
col1 でグループ化したすべての列の平均値を返す |
df.apply(np.mean) |
各列に関数 np.mean を適用 |
df.apply(np.max, axis=1) |
各行に関数 np.max を適用 |
テストオブジェクトの作成
| コマンド | 説明 |
|---|---|
pd.DataFrame(np.random.rand(20,5)) |
20行5列の乱数で構成される DataFrame を作成 |
pd.Series(my_list) |
反復可能オブジェクト my_list から Series を作成 |
df.index = pd.date_range('1900/1/30', periods=df.shape[0]) |
日付インデックスを追加 |
データの表示と検査
| コマンド | 説明 |
|---|---|
df.head(n) |
DataFrame の最初の n 行を表示 |
df.tail(n) |
DataFrame の最後の n 行を表示 |
df.shape |
行数と列数を表示 |
df.info() |
インデックス、データ型、メモリ情報を表示 |
df.describe() |
数値列の要約統計を表示 |
s.value_counts(dropna=False) |
Series の一意の値とカウントを表示 |
df.apply(pd.Series.value_counts) |
DataFrame の各列の一意の値とカウントを表示 |
データの結合
| コマンド | 説明 |
|---|---|
df1.append(df2) |
df2 の行を df1 の末尾に追加 |
pd.concat([df1, df2], axis=1) |
df2 の列を df1 の末尾に追加 |
df1.join(df2, on=col1, how='inner') |
df1 と df2 の列間で SQL スタイルの結合 (Join) を実行 |
データ統計
| コマンド | 説明 |
|---|---|
df.describe() |
数値列の要約統計を表示 |
df.mean() |
すべての列の平均値を返す |
df.corr() |
列間の相関係数を返す |
df.count() |
各列の非 null 値の個数を返す |
df.max() |
各列の最大値を返す |
df.min() |
各列の最小値を返す |
df.median() |
各列の中央値を返す |
df.std() |
各列の標準偏差を返す |