pandasの基本

概要

pandasはテーブルデータの分析をする上で非常に便利なモジュール。テーブルデータの可視化もjupyter-notebookと合わせて非常に見やすくなる。自分がよく使うものを並べていきます。

環境

macOS Mojave 10.14.5

インストール

pythonのデフォルトモジュールではないのでインストールが必要。pipcondaでインストールする。

クイックスタート

import pandas as pd
df = pd.read_csv('data.csv', header=None)
df.head()

データの基本情報

  • size : df.shape
  • index : df.index
  • column : df.columns
  • type : df.dtypes
  • unique : df['A'].value_counts()
  • statical info : df.describe()

ユニークな要素

  • ユニークな要素を取得 : unique()
df['A'].unique()
==>
['a', 'aa', 'aaa']
  • ユニークな要素の種類の合計値を取得 : unique()
df['A'].nunique()
==>
3
  • ユニークな要素とその要素の数を取得 : value_counts()
df['A'].value_counts()
==>
a  1
aa  1
aaa 2

抽出

  • ラベルを指定 : locを使う
df.loc[['01', '03'], ['A', 'B']]
df.loc[:, ['A', 'B']]
  • 番号を指定 : ilocを使う
df.iloc[[0, 1], [3, 4]]
df.iloc[[0, 1], :]
  • ラベルと番号 : ixを使えばできるが、公式ではおすすめされていない。
df.ix[['01', '03'], [0, 1]]

要素の文字列に対する条件で抽出

.strを使う

df[df['A'].str.contains('aaa') == True] #文字列にaaaを含む
df[df['A'].str.len() == 3] #文字列が3つ

要素をif文で抽出

np.where(df['A'] == 'a', True, False)

ソート

要素でソート

df = df.sort_values('A')
  • 複数の要素 : リストで指定
  • 昇順降順 : ascending
  • 欠損値Nanの場所 : na_positon
  • 元のオブジェクトを変更 : inplace
df.sort_values(['A', 'B'], ascending=[False, True], na_position='first', inplace=True )

行名でソート

df = df.sort_index()

昇順降順、元のオブジェクトの変更は要素のときと同じ。列名でソートする時はaxis=1とするとできる。

便利機能

ダミー行列の作成

get_dummiesを使う

df_dummies = pd.get_dummies(df['A'])