[Python] pandasの使い方まとめ

  • 61
    いいね
  • 0
    コメント

pandasによるデータ処理メモ
pandasに関する情報ページはわりと豊富なので、主にリンクのまとめです。

実行環境

実行環境は、Jupyter(IPython) Notebook を使うのが良いと思います。

Windowsにpython3とJupyter Notebook(旧: ipython notebook)をインストールする - Qiita

pandasのインストールとインポート

$ pip install pandas
import pandas as pd

DataFrameの作成

データの新規作成

pd.DataFrame で DataFrame の作成ができる。注意点として、各列ごとのデータ数は一致している必要がある。

DataFrameの作成
df = pd.DataFrame({
        'A' : [1, 2, 2, 3, 3, 3, 4, 4, 4, 4, 5, 5, 5, 5, 5, 6, 6, 7, 8, 9, 10],
        'B' : [1, 1, 2, 2, 3, 3, 4, 4, 5, 5, 6, 6, 6, 7, 7, 8, 8, 8, 8, 8, 8]
    })

既存データの読み込み

CSV, TSV を開く

データを読み込んでDataFrameの作成
# CSV
csv_data  = pd.read_csv('./path/to/hoge.csv')

# TSV
tsv_data  = pd.read_csv('./path/to/hoge.csv', delimiter='\t')

pandasでcsv/tsvファイルの読み書き | mwSoft
pandasでカラムサイズが一定でないcsv/tsvを読み込む : mwSoft blog
Pythonコーディング備忘録 ~その3~(pandasのread_csvを使いこなす) - 自調自考の旅

データを抽出する

Python pandas データ選択処理をちょっと詳しく <前編> - StatsFragments
Python pandas データ選択処理をちょっと詳しく <中編> - StatsFragments
Python pandas データ選択処理をちょっと詳しく <後編> - StatsFragments
Pandasでデータフレームを条件指定で参照する - Qiita

列(column)抽出

ラベル名から抽出カラムの指定

data = data[['column1', 'column2']]

行(row)抽出

条件を指定して抽出

data = data[data.column1 == 'hoge']

正規表現での検索による抽出

data = data[data.column1.str.contains(regex)]

Python pandas:正規表現を使いDataFrameを検索 - Qiita
データフレーム文字列検索 - ねこゆきのメモ

欠測値(NaN)の除去

欠測値の一つでも存在する行を除去
df = df.dropna()
項目を指定
df = df.dropna(subset=['項目1', '項目2'])

DataFrameの結合

Python pandas 図でみる データ連結 / 結合処理 - StatsFragments
Merge, join, and concatenate — pandas 0.18.1 documentation

DataFrameの加工

データのソート

数値でのソート

データのソート
# 1種類の場合
df = df.sort_values(['データ種別'])

# 1 -> 2の順で昇順にソート
df = df.sort_values(['データ種別1', 'データ種別2'])

pandas.DataFrame.sort_values — pandas 0.18.1 documentation
pandas でソート - Qiita

行/列名の変更

df.rename(columns={'A': 'a'}, index={'ONE': 'one'}, inplace=True)

pandas.DataFrame.rename — pandas 0.18.1 documentation
pandas DataFrameの行名・列名の変更 | nkmk log

現在のデータ順でindexの振り直し

df = df.reset_index(drop=True)

python - How to reset index in a pandas data frame? - Stack Overflow
pandas.DataFrame.reset_index — pandas 0.18.1 documentation

データの型の変更

浮動小数点型として扱う
df = df.astype(float)

行列の反転

行列の反転
df = df.T

無題.png

DataFrameから別形式への変換

DataFrame から List への変換

df.values.tolist()

python - Pandas DataFrame to list - Stack Overflow

CSV, TSV での書き出し

# CSV
data.to_csv('./path/to/output.csv')

# TSV
data.to_csv('./path/to/output.csv', sep='\t')

pandasでcsv/tsvファイルの読み書き | mwSoft

pandas <=> DB 間連携

Microsoft Access (mdb)

[Linux][Python][Pandas] Microsoft Accessのデータベース(*.mdb)をPandasで読み込む - Qiita

データプロット/グラフ出力

pandas での plot の基本仕様

pandasは matplotlib を薄くラップしています。ある程度のグラフまでは pandas の plot で出力可能です。
pandasでのグラフの出力方法の基本については以下などを参照してください。

Visualization — pandas 0.18.1 documentation

pandas の plot をもう少し操作

Python pandas プロット機能を使いこなす - StatsFragments
PythonでPandasのPlot機能を使えばデータ加工からグラフ作成までマジでシームレス - Qiita

欠損値/外れ値/離散化の処理

Python pandas 欠損値/外れ値/離散化の処理 - StatsFragments

パフォーマンスについて

Python pandas パフォーマンス維持のための 3 つの TIPS - StatsFragments

書籍

pandasの作者による解説本
O'Reilly Japan - Pythonによるデータ分析入門

参考(Pandasについて)

参考(データ処理について)