データ分析実践
上級問題チェック
問題 30 /40
pandasの時系列データを処理するメソッドや関数に関して、誤った説明はどれか。
選択 1
rollingメソッドを使って移動平均を算出できる。
選択 2
diffメソッドは一つ上の行との差分を取得する。
選択 3
shiftメソッドは行をずらす。
選択 4
min関数は最新の日時を返す。
解説
選択肢4が正解です。
次のDataFrameで解説します。
df = pd.DataFrame(
{'データ': range(10)},
index=pd.date_range('2024-01-01', periods=10))
▶︎
【選択肢1】
rollingメソッドを使って移動平均を算出できる。
正しい説明です。
rollingメソッドは、データ区間をずらしながら関数を適用できます。rollingメソッドの返り値はwindow.Rolling型のオブジェクトで、そのオブジェクトに対してmeanメソッドやsumメソッドなどで集計します。
例えば3日間ずつの移動平均を求める場合は、次のように記述します。
df.rolling(3).mean()
▶︎
1/3は1/1〜1/3の平均、1/4は1/2〜1/4の平均となっています。
1/1と1/2は3行分のデータがないのでNaNになります。
【選択肢2】
diffメソッドは一つ上の行との差分を取得する。
正しい説明です。
df.diff(1)
▶︎
1/2は1/1のデータとの差分、1/3は1/2とのデータとの差分になっています。
1/1は比較対象がないためNaNになります。
diffメソッドの引数は間隔を指定します。例えばdiff(2)であれば、1/3は1/1のデータとの差分になります。
【選択肢3】
shiftメソッドは行をずらす。
正しい説明です。
データを一行ずつ下にずらす場合は、次のように記述します。
df.shift(1)
▶︎
例えば1日前との差分を求める場合、選択肢2のdiffメソッドを使う方法もありますが、shiftメソッドでずらして差分を計算することもできます。
df_shift = df.shift(1)
df - df_shift
▶︎
【選択肢4】
min関数は最新の日時を返す。
誤った説明です。
最新の日付を返すのはmax関数で、min関数は最古の日付を返します。
df.index.min()
▶︎
Timestamp('2024-01-01 00:00:00')
df.index.max()
▶︎
Timestamp('2024-01-10 00:00:00')
【選択肢1】
rollingメソッドを使って移動平均を算出できる。
正しい説明です。
rollingメソッドは、データ区間をずらしながら関数を適用できます。rollingメソッドの返り値はwindow.Rolling型のオブジェクトで、そのオブジェクトに対してmeanメソッドやsumメソッドなどで集計します。
例えば3日間ずつの移動平均を求める場合は、次のように記述します。
df.rolling(3).mean()
▶︎
1/3は1/1〜1/3の平均、1/4は1/2〜1/4の平均となっています。
1/1と1/2は3行分のデータがないのでNaNになります。
【選択肢2】
diffメソッドは一つ上の行との差分を取得する。
正しい説明です。
df.diff(1)
▶︎
1/2は1/1のデータとの差分、1/3は1/2とのデータとの差分になっています。
1/1は比較対象がないためNaNになります。
diffメソッドの引数は間隔を指定します。例えばdiff(2)であれば、1/3は1/1のデータとの差分になります。
【選択肢3】
shiftメソッドは行をずらす。
正しい説明です。
データを一行ずつ下にずらす場合は、次のように記述します。
df.shift(1)
▶︎
例えば1日前との差分を求める場合、選択肢2のdiffメソッドを使う方法もありますが、shiftメソッドでずらして差分を計算することもできます。
df_shift = df.shift(1)
df - df_shift
▶︎
【選択肢4】
min関数は最新の日時を返す。
誤った説明です。
最新の日付を返すのはmax関数で、min関数は最古の日付を返します。
df.index.min()
▶︎
Timestamp('2024-01-01 00:00:00')
df.index.max()
▶︎
Timestamp('2024-01-10 00:00:00')