4.5. 課題#
4.5.1. 課題1#
次のDataFrame df
はある電化製品店のパソコンコーナーの受注情報の一部です。
column |
description |
---|---|
id |
顧客番号 |
name |
顧客名 |
date |
来店日 |
laptop |
購入または修理に持ち込んだパソコンの種類 |
fix |
修理受注であればTrue、購入であればFalse |
import numpy as np
import pandas as pd
def make_df():
df = pd.DataFrame({'id':[100, 100, 101, 101, 101, 102, 103, 104, 104, 105],
'name': ['Max', 'Max', 'Bob', 'Bob', 'Bob', 'Alice', 'Chris','Emma', 'William','Jacob'],
'gender':['m', 'm', 'm', 'm', 'm', 'f', np.nan, 'f', 'm', 'm'],
'date':['2019/3/4','2019/2/5','2018/10/3','2017/12/6','2016/9/3','2019/7/4','2017/1/1','2019/5/3','2018/2/18', '2015/12/30'],
'laptop':['mac','mac','windows','windows','mac', 'mac', 'windows', 'windows', 'mac', 'others'],
'fix': [True, False, True, False, False, False, False, True, True, True],
'price': [10000, 230000, 5400, 15000, 300000, 240000, 180000, 150000, 100000, 3000]})
return df
make_df()
df
に関して以下の問いに答えてください。
4.5.1.1. 課題1.0(回答例)#
このDataFrame(df)は何行ありますか?
一つのint型の値を返します。
# 課題の回答は関数(引数無し)の中に全て書いてください。
def answer_zero():
# どのようなフォーマットで回答すべきか問題文に従ってください。
df = make_df()
ans = df.shape[0]
return int(ans)
# 回答を確認するためには、次のような1行で回答を記入した関数を呼び出すことで確認できます。
answer_zero()
次のcellを実行して回答を確認してください。
print(answer_zero()==10)
4.5.1.2. 課題1.1#
DataFrame(df)のprice
列の平均値、中央値を求めてください。
1つのlistを返し、listの0番目の要素にfloat型の平均値を、1番目の要素にfloat型の中央値を与えてください。
def answer_one():
df = make_df()
...
return "YOUR ANSWER"
answer_one()
次のセルを実行して回答を確認してください
import datetime
print(round(answer_one()[0],0) == 123340)
print(round(answer_one()[1],0) == 125000)
4.5.1.3. 課題1.2#
df
のなかで最も受注回数が多い顧客は誰ですか?name
列の最頻値を求めてください。
1つのstr型の値を返します。
def answer_two():
df = make_df()
...
return "YOUR ANSWER"
answer_two()
次のセルを実行して回答を確認してください
print(answer_two() == 'Bob')
4.5.1.4. 課題1.3#
df
のprice
列の頻度分布図(Histogram)を描いてください。bin数などは自由に設定しても良いとします。
回答は1つの頻度分布図(Histogram)を示します。
import matplotlib.pyplot as plt
%matplotlib inline
def answer_three():
df = make_df()
...
plt.show()
answer_three()
次のセルを実行して回答を表示させてください。
4.5.1.5. 課題1.4#
df
のprice
列の四方位範囲を示す箱ひげ図を描いてください。
回答は1つの箱ひげ図を示します。
def answer_four():
df = make_df()
...
plt.show()
次のセルを実行して回答を表示させてください。
answer_four()
4.5.1.6. 課題1.5#
課題1.4に関連して、df
のうちlaptop
列の種類別のprice
の四分位範囲を示す箱ひげ図を描いてください。
回答は箱ひげ図を示します。。
def answer_five():
df = make_df()
...
plt.show()
次のcellを実行して回答を確認してください。
answer_five()
4.5.1.7. 課題1.6#
平均値を求める関数を自分で作ってください(mean()は使わずに)。 引数として数値計算可能な1つのSeriesを受け取ります。
def answer_six(series):
...
return "YOUR ANSWER"
次のcellを実行して回答を確認してください。
test_series = pd.Series([10,20, 3, 1,5,40, 39,89])
print(answer_six(test_series) == test_series.mean())
4.5.1.8. 課題1.7#
分散を求める関数を自分で作ってください(var()やvariance()などは使わずに)。 引数として数値計算可能な1つのSeriesを受け取ります。 ここでの分散は\( s^2 = \frac{\sum_i(x_i-\bar{X})^2}{n} \)とします。
def answer_seven(series):
mean = answer_six(series)
...
return "YOUR ANSWER"
次のcellを実行して回答を表示させてください
print(answer_seven(test_series) == np.var(test_series))