【Python】pandasのこと

pandasの基本やよく使うメソッド等について備忘録としてまとめています。

pandas

データ分析ライブラリの一つ。
Excelのようにテーブルデータを読み込んでデータ処理をすることができるライブラリで、その時に読み込んだデータは、データフレームと呼ばれる型で格納される。
データフレームは行と列で構成される表形式のデータ構造であり、各列は異なるデータ型(数値、文字列、日付など)を持つことができる。

# pandasのインポート
import pandas as pd

# データの読み込み
df = pd.read_csv('dataset.csv')

# infoメソッド_各列のデータ型を確認できる
print(df.info())

dropメソッド

データフレームの行や列を指定して除外する。

# オプションのaxis=1は列を削除するためのオプション(デフォルトはaxis=0で、行を削除する)
df.drop("除外したいカラム名", axis=1)

# 除外したいカラムが複数ある場合は、のように、除外対象のカラムをリストで用意します。

df.drop(["除外カラム1", "除外カラム2", ...], axis=1)

dropnaメソッド

欠損値を含むサンプルを除外する。
デフォルトでは欠損値を含む行が除外される。

# dfの欠損値を含む行を除外する場合
df.dropna()

concatメソッド

データフレーム同士を結合する。
オプションのaxis=1は横方向(列同士)のデータ結合を表している。
デフォルトはaxis=0で、縦方向(行同士)のデータ結合。

pd.concat([データフレーム①, データフレーム②], axis=1)

fillnaメソッド

欠損値への代入はfillnaメソッドを使う。

# inplace=Trueはもとのデータフレームに上書きするの意
# Falseの場合は新規にデータフレームが作られる(デフォルト)
シリーズ名①.fillna(シリーズ名②, inplace=True)

duplicatedメソッド

サンプルの重複の有無を確認する。上の行から順番に確認して、カラムの値が重複していればTrue、重複していなければFalseを返す。

df.duplicated()

# 重複部分の個数を確認したい場合
print(df.duplicated().sum())

# 重複部分のサンプルを確認したい場合
print(df[df.duplicated()])

# 重複部分のサンプルを削除する場合(inplace=Trueを指定することで、元のデータフレームを直接書き換えている。)
df.drop_duplicates(inplace=True)

reset_indexメソッド

サンプルを削除した場合、データフレームの順序整理およびインデックスを新たに作成する必要がある。

df.reset_index(drop=True, inplace=True)

# オプションのdropとinplaceは、ともにデフォルト値はFalseとなっている。
# drop=Trueと指定することで、新しいインデックスを振り直しと、元のインデックスの削除を同時に行う。
# また、fillnaの時と同様に、inplace=Trueと指定することで、元のデータフレームを直接書き換える。

describeメソッド

基本統計量の確認に使う。df.describe(include=’all’)でされる統計量は下記の通り。
count: 欠損値NaNではない要素の個数
unique: ユニークな要素の数(重複を除いた件数)
top: 最頻値(mode)
freq: 最頻値の頻度(出現回数)
mean: 算術平均
std: 標準偏差
min: 最小値
max: 最大値
50%: 中央値(median)
25%, 75%: 1/4分位数、3/4分位数

# デフォルトでは数値型の変数(infoメソッドで出てきたint64やfloat64の型の変数)に対しての統計量だけを表示する。
df.describe()

# 数値型以外の変数も合せて見たい場合は、include='all'のオプションを使う。
df.describe(include='all')

value_countsメソッド

変数に入っている値(カテゴリも含む)ごとに、データの個数がいくつあるのかをカウントしてくれる。

# 例えばdfのGender列に入っているカテゴリ(Male, Female)ごとにデータ数をカウントする場合
print(df.value_counts())

# 出力結果
Male      100
Female    150
Name: Gender, dtype: int64

queryメソッド

データフレームから任意の条件を満たす行を抽出する。
比較演算子や文字列による条件指定、複数条件の組み合わせなどを簡潔に記述できる。

# 例えばdiseaseが0である行を抽出する場合
df.query("disease == 0")

plotメソッド

pandasのplot関数は、内部的にはmatplotlibライブラリのplotを呼び出している。
その為、表示するためにはmatplotlibのライブラリのpyplotモジュールもインポートしておく必要がある。

kindはグラフの種類を指定するオプション(kind=’〇〇’で種類を指定)
‘line’ : 折れ線グラフ(デフォルト)
‘bar’ : 棒グラフ
‘barh’ : 水平棒グラフ
‘hist’ : ヒストグラム
‘box’ : 箱ひげ図
‘kde’ : カーネル密度推定
‘density’ : same as ‘kde’
‘area’ : 面積プロット
‘pie’ : パイチャート
‘scatter’ : 散布図
‘hexbin’ : 六角形ビニング図

# matplotlibライブラリのpyplotモジュールのインポート
import matplotlib.pyplot as plt

# 棒グラフを表示したい場合
df.plot(kind='bar')

corrメソッド

変数の相関係数を確認する際に使う。
相関係数の絶対値が1に近いほど相関が強く、0に近いほど相関が弱い。

# "〇〇"、"✕✕"の相関係数を確認する場合
df[["〇〇", "✕✕"]].corr()

ヒートマップ図


複数の変数の相関係数を確認することもできるが、数字ばかりで相関関係が見づらくなる場合がある。
そこで、一括で計算した相関係数を、seabornライブラリのheatmap関数を使って可視化できる。
ヒートマップ図を使うと、各変数間の相関の強さが色で表現でき、相関の強さが一目瞭然となる。
vmin, vmaxオプションは、最小値と最大値を指定している。
annot=Trueオプションは、色付きのセルの中に相関係数の数値を表示するためのもの。
cmap, linewidthsオプションは、見た目を調整するために、それぞれ塗り色のパターンとセル間の線の太さを指定する。

sns.heatmap(df.corr(), vmin=-1.0, vmax=1.0, annot=True, cmap='coolwarm', linewidths=0.1)

コメントする

メールアドレスが公開されることはありません。 が付いている欄は必須項目です