ひとりでのアプリ開発 - fineの備忘録 -

ひとりでアプリ開発をするなかで起こったことや学んだことを書き溜めていきます

Python -「Python初学者のためのPandas100本ノック」やってみた①

初めに

 「Python初学者のためのPandas100本ノック」に挑戦してみる過程をまとめています。本記事は始め方と第1問から第13問までについて、書いています。

始め方

リンク先

qiita.com

 上のリンク先に始め方やダウンロード先などの説明が記載されています。

手順

 次の手順で始めることができます。

  1. Github でCode > Download ZIP をクリック
  2. ダウンロードしたZIPファイルを展開し、notebool > 01_Pandas_100_Knocks_for_Begginer.ipynb を開く


  3. 先頭のセルを実行し、回答ファイル、問題で使用するデータセットを読み込む

    必要なパッケージをインストールするように表示されるので、インストールする

  4.  先頭のセルの実行が終了したら、開始できます。各セルに直接、回答を入力し、実行していきます。実行はセル左上の三角ボタンをクリックするか、Shift + Enter で可能です。

回答例の確認

 回答例の確認は、コメント化されている "pring(ans[])" の前にある # を削除し、実行すると確認できます。

#print(ans[1]) #回答表示

Pandas基礎(1 - 13)

1(最初の5行を表示)

 指示がコメントで記述してあるので、その指示通り実行されるように入力していきます。

 今回は、最初の5行を表示したいので、head 関数を使い、実行します。実行すると次のように結果が表示されます。


2(最後の5行を表示)
df.tail()
3(DataFrameサイズの確認)

 DataFrameの要素数を表示したい場合は、size を使います。

df.size

 DataFrame の次元を表すタプルを確認する場合は、shape を使います。

df.shape

 この場合、14 個の要素を持つタプルが1309 個あることを表しています。1309 × 14 = 18326 (size)になります。

4(フォルダ内のcsvファイルを読み込み, 最初の5行を表示)

 csvファイルを読み込むには, read_csv() 関数を用います. 引数でフォルダを指定します。

df2 = pd.read_csv("../input/data1.csv")
df2.head()
5(指定した列を昇順に並び替えて表示)

 sort_values() 関数を用いて、要素をソートします。デフォルトでは昇順、ascending=False を指定すると、降順になります。

 複数要素を指定する場合は、次のように記述します。

df.sort_values(["fare", "age"])
6(DataFrame をコピーする)

 copy() 関数を用いて、DataFrame をコピーすることができます。

df_copy = df.copy()
df_copy.head()

 次の2つは挙動が異なるため、注意が必要です。

# dfを参照, dfを変更するとdf_copyの値も変更される
df_copy = df


#dfをコピー, dfを変更しても, df_copyには反映されない
df_copy = df.copy()
7(データ型の確認)

 DataFrame の各列のデータ型は dtypes で確認できます。また、series のデータ型は dtype で確認できます。

df = initialize1() #初期化
print(df.dtypes)
print("--------------") #出力したときにわかりやすいように勝手についかしました
print(df["cabin"].dtype)
8(データ型の変換と確認)

 列のデータ型は astype で変更することができます。初めのデータ型を dtype で確認し、str 型(文字列型)に変換して、再度 dtype で確認します。

df = initialize1() #初期化
print(df["pclass"].dtype)
df["pclass"] = df["pclass"].astype(str)
print(df["pclass"].dtype)

 str 型は object と出力されます。

9(レコード数(行数)の確認)

 len() 関数を使って、DataFrame の行数を確認します。引数は DataFrame です。

df = initialize1() #初期化
len(df)
10(レコード数(行数)、各列のデータ型、欠損値の有無の確認)

 DataFrame の情報を確認するには、info() 関数を用います。RangeIndex が行数、Data columns が列数、Non-Null Count がレコードが入っている数。

df = initialize1() #初期化
df.info()
11(要素の確認)

 列の要素は unique() 関数で確認できます。

df = initialize1() #初期化
print(df["sex"].unique())
print(df["cabin"].unique())


12(列名一覧を list 形式で表示)

 列名一覧を表示するには、columns を使用します。columns ではデータフレームの列ラベルが取得できます。

print(df.columns)

 これを list 形式に変換するには、tolist() 関数を使います。

print(df.columns.tolist())

 list 形式ではなく、ndarray 形式にしたい場合は、values を使用します。

 DataFrame と ndarray と list の基本的な違いは、利用するライブラリです。DataFrame は Pandas、ndarray は Numpy、list は Python 標準のものになります。

 細かい違いもあります。ラベルを使えるものは DataFrame だけであったり、計算に特化したものが Numpy だったりします。下記リンク先で使い分けについて、説明されています。

www.so-wi.com

13(インデックス一覧を ndarray 形式で表示)

 index でインデックスの初期値、末項、項ごとの間隔を取得します。values を使い、ndarray 形式にして表示します。

df = initialize1() #初期化#
print(df.index)

#回答
print(df.index.values)