地層を剥がす

声を失った人間の発声練習です

【松尾研データサイエンティスト育成講座】第2章・練習問題を解いてみた:Pandas編

松尾研「データサイエンティスト育成講座」の第2章では、データ操作に欠かせないライブラリの基礎を学びます。本日はそのうちの一つ、Pandasの練習問題を解いてみました。

2.1.3 Pandasの基礎  

<練習問題 1>
以下のデータに対して、Moneyが500以上の人を絞り込んで、レコードを表示させてください。

from pandas import Series,DataFrame
import pandas as pd
attri_data1 = {'ID':['1','2','3','4','5']
    ,'sex':['F','F','M','M','F']
    ,'Money':[1000,2000,500,300,700]
    ,'name':['Saito','Horie','Kondo','Kawada','Matsubara']}
attri_data_frame1 = DataFrame(attri_data1)

<練習問題 1の答え>

attri_data_frame1[attri_data_frame1['Money']>=500]

「attri_data_frame1」と名付けられたDataFrameから、条件に合うデータのみ抽出する問題です。初めてPandasにふれた時、記法に抵抗感がありました。ブラケット([ ])の中にブラケットが登場するブラケット地獄。「そんなにカッコをいっぱい使われたら、よくわかんなくなっちゃうよ!」と最初は泣きたくなりました。でも、落ち着けば簡単ですね。演算子を使って条件を記述すればいいだけです。

<練習問題 2>
上記のデータに対して、男女別(MF別)の平均Moneyを求めてください。

<練習問題 2の答え>

attri_data_frame1.groupby('sex')['Money'].mean()

Pandasによる集計には欠かせないgroupby()を使う問題です。何を軸に集計するかを指定(今回は男女別)→集計する対象を指定(今回はお金)→計算方法を指定(今回は平均)……の順に考えていけばOK。

<練習問題 3>
上記のデータに対して、以下のデータの同じIDの人をキーとして、データをマージしてください。そして、MoneyとMathとEnglishの平均を求めてください。

attri_data2 = {'ID':['3','4','7']
        ,'Math':[60,30,40]
        ,'English':[80,20,30]}
<200b>
attri_data_frame2 = DataFrame(attri_data2)

<練習問題 3の答え>

pd.merge(attri_data_frame1,attri_data_frame2)

merge()を使って2つのDataFrameをガッチャンコする問題です。今回の場合は何も指定しなくても、重複するIDを認識してデータをマージしてくれます。

Pandasは表形式のデータを扱うにあたって欠かせないライブラリであり、慣れてくれば非常に心強い味方ともなる存在。けれど、最初はとっつきにくい気がします。ひととおりの文法を押さえたら、あとは適当なCSVをいじってみるのが手っ取り早い攻略法かもしれません。