Edited at

[Python] pandasの使い方まとめ

More than 1 year has passed since last update.

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について)


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