目次
DataFrameで行数・列数を確認する方法
今回はshapeを利用してDataFrameの行数・列数を確認する方法をご紹介します
Pythonでは大量のデータを高速で処理できる反面、どのくらいデータが入っているか分かりにくいという欠点があります
また集計や結合の処理を実施していくと、行数や列数はどんどん増えていきます
思わぬ形でデータが増減する場合もあるため、注意が必要になります
ミスを防ぐという意味でもshapeを活用し、データの行数・列数を確認しましょう
「column:カラム」や「index:インデックス」は対象外となるのでご注意してください
事前準備
Seabornというライブラリから、タイタニック号のデータを取得しておきます
またPandasも合わせてインポートしておきます
import seaborn as sns
import pandas as pd
df = sns.load_dataset('titanic')
df.head()
shapeの使い方
shapeを利用することで、行数・列数を簡単に取得することができます
事前準備で設定した変数(df)に対して実施します
df.shape
行数(891)と列数(15)が表示されました
行数→列数の順にデータが表示されるため、順番は覚えておきましょう
データ処理前後で行数・列数を取得する
printを利用することで、処理の途中でも行数・列数を表示させることができます
この機能を利用して複雑なデータ処理の前後で、行数・列数が変化したかどうかを把握しましょう
※タイタニック号のデータを「男性」「女性」で分割した後に、改めて結合します
#変数(df)の行数・列数を取得
print(df.shape)
#男性と女性を分ける
male = df.query('sex=="male"')
female = df.query('sex=="female"')
#変数(male/female)の行数・列数を取得
print('男性'+str(male.shape))
print('女性'+str(female.shape))
「男性」「女性」ごとに変数を用意し、printを使ってそのタイミングでの行数・列数を取得しています
891行あったデータを2分割して、「男性=577」「女性=314」に分かれたことが分かります
「男性」「女性」という文字列と同時にprintで出力するため、strを利用し文字列型へ変換しています
単体の数値として取得する
shapeで取り出した行数・列数は、単体の数値として利用することができます
列数を取得するには[0]を付けて、行数を取得するには[1]を付けましょう
male.shape[0]
ilocを組み合わせて利用する
この行・列の数値のみをilocと組み合わせて、データを自在に取得することができるのでご紹介します
「行の始めから終わり」と「列の始めから終わり」までを指定することで、DataFrameからデータを取得することができます
まずはconcatを使って「男性:male」と「女性:female」を縦に結合します
そしてilocとshapeを組み合わせて、男性の行数だけ取得します
#男性と女性を結合する
df_2 = pd.concat([male,female])
#男性の行数をshapeを使い取得する
df_2.iloc[:male.shape[0],:]
機械学習の前処理で活用する
最後に機械学習の前処理において、shapeが活躍するのでご紹介します
訓練データ(train)とテストデータ(test)を同時にダミー変数処理を実施する流れを実施します
図のように「A~D」が入っている列をget_dummiesを使い列を増やします
もちろん訓練データ(train)とテストデータ(test)を別々にダミー変数処理することも可能です
ただし、それぞれにしかない項目がある場合、カラム数が異なってしまい、モデル学習の際にエラーが発生してしまいます
一度まとめて処理した後に、ilocとshapeを使って分割する方法を実施してください
まとめ
今回はshapeを利用してDataFrameの行数・列数を確認する方法をご紹介してきました
簡単に行数・列数を把握することができるのでぜひ活用してみてください
また機械学習の前処理にも活用できるので、自然に使えるようにしてください