Rによるコーディング
Rパッケージdplyrを用いて、以下の設問の表示結果と同じになるように、 Rチャンクを挿入しコーディングせよ。
要約統計量を計算するときはsummarize()関数を使う。
if (!require(data.table)) install.packages("data.table")
if (!require(dplyr)) install.packages("dplyr")
Pythonによるコーディング
Pythonパッケージpolarsを用いて、以下の設問の表示結果と同じになるように、 Pythonチャンクを挿入しコーディングせよ。
積集合は(論理式1) & (論理式2)のようにする(括弧が必要)。
例)カラムAで値が1,カラムBで値が2の積集合: (pl.col(“A”) == 1) &
(pl.col(“B”) == 2)
要約統計量を計算するときはselect(), group_by().agg()関数を使う。
import pandas as pd
import polars as pl
高校のデータを用いて,設問に答えよ。
d <- data.frame(
name = c("Taro", "Hanako", "Saburo",
"Yoshiko", "Jiro", "Sakurako",
"Shiro", "Matsuko", "Aiko"),
school = c("南", "南", "南", "南", "南", "東", "東", "東", "東"),
teacher = c("竹田", "竹田", "竹田", "竹田", "佐藤", "佐藤", "佐藤", "鈴木", "鈴木"),
gender = c("男", "女", "男", "女", "男", "女", "男", "女", "女"),
math = c(4, 3, 2, 4, 3, 4, 5, 4, 5),
reading = c(1, 5, 2, 4, 5, 4, 1, 5, 4) )
d
fwrite(d, file = "highschool.csv", sep = ",")
df = pd.read_csv("highschool.csv")
#df = pl.DataFrame(r.d)
df = pl.read_csv("highschool.csv")
データのカラム名を取得せよ。
【Rヒント】names
## [1] "name" "school" "teacher" "gender" "math" "reading"
【Pythonヒント】names
## ['name', 'school', 'teacher', 'gender', 'math', 'reading']
先生(teacher)と学生(name)とのデータを取得せよ。
name | math |
---|---|
str | i64 |
"Taro" | 4 |
"Hanako" | 3 |
"Saburo" | 2 |
"Yoshiko" | 4 |
"Jiro" | 3 |
"Sakurako" | 4 |
"Shiro" | 5 |
"Matsuko" | 4 |
"Aiko" | 5 |
学校(school)以外のデータを取得せよ。
name | teacher | gender | math | reading |
---|---|---|---|---|
str | str | str | i64 | i64 |
"Taro" | "竹田" | "男" | 4 | 1 |
"Hanako" | "竹田" | "女" | 3 | 5 |
"Saburo" | "竹田" | "男" | 2 | 2 |
"Yoshiko" | "竹田" | "女" | 4 | 4 |
"Jiro" | "佐藤" | "男" | 3 | 5 |
"Sakurako" | "佐藤" | "女" | 4 | 4 |
"Shiro" | "佐藤" | "男" | 5 | 1 |
"Matsuko" | "鈴木" | "女" | 4 | 5 |
"Aiko" | "鈴木" | "女" | 5 | 4 |
1~3番目のレコードを取得せよ。
name | school | teacher | gender | math | reading |
---|---|---|---|---|---|
str | str | str | str | i64 | i64 |
"Taro" | "南" | "竹田" | "男" | 4 | 1 |
"Hanako" | "南" | "竹田" | "女" | 3 | 5 |
"Saburo" | "南" | "竹田" | "男" | 2 | 2 |
2, 4, 6番目のレコードを取得せよ。
name | school | teacher | gender | math | reading |
---|---|---|---|---|---|
str | str | str | str | i64 | i64 |
"Hanako" | "南" | "竹田" | "女" | 3 | 5 |
"Yoshiko" | "南" | "竹田" | "女" | 4 | 4 |
"Sakurako" | "東" | "佐藤" | "女" | 4 | 4 |
名前がアルファベット順になるようにレコードをソートせよ。
name | school | teacher | gender | math | reading |
---|---|---|---|---|---|
str | str | str | str | i64 | i64 |
"Aiko" | "東" | "鈴木" | "女" | 5 | 4 |
"Hanako" | "南" | "竹田" | "女" | 3 | 5 |
"Jiro" | "南" | "佐藤" | "男" | 3 | 5 |
"Matsuko" | "東" | "鈴木" | "女" | 4 | 5 |
"Saburo" | "南" | "竹田" | "男" | 2 | 2 |
"Sakurako" | "東" | "佐藤" | "女" | 4 | 4 |
"Shiro" | "東" | "佐藤" | "男" | 5 | 1 |
"Taro" | "南" | "竹田" | "男" | 4 | 1 |
"Yoshiko" | "南" | "竹田" | "女" | 4 | 4 |
国語の点数を高い方から低い順(降順: descending order)になるようにソートせよ。
name | school | teacher | gender | math | reading |
---|---|---|---|---|---|
str | str | str | str | i64 | i64 |
"Hanako" | "南" | "竹田" | "女" | 3 | 5 |
"Jiro" | "南" | "佐藤" | "男" | 3 | 5 |
"Matsuko" | "東" | "鈴木" | "女" | 4 | 5 |
"Yoshiko" | "南" | "竹田" | "女" | 4 | 4 |
"Sakurako" | "東" | "佐藤" | "女" | 4 | 4 |
"Aiko" | "東" | "鈴木" | "女" | 5 | 4 |
"Saburo" | "南" | "竹田" | "男" | 2 | 2 |
"Taro" | "南" | "竹田" | "男" | 4 | 1 |
"Shiro" | "東" | "佐藤" | "男" | 5 | 1 |
数学、国語の点数を高い方から低い順(降順: descending order)になるようにソートせよ。 なお、国語の順位を最優先とする。
name | school | teacher | gender | math | reading |
---|---|---|---|---|---|
str | str | str | str | i64 | i64 |
"Matsuko" | "東" | "鈴木" | "女" | 4 | 5 |
"Hanako" | "南" | "竹田" | "女" | 3 | 5 |
"Jiro" | "南" | "佐藤" | "男" | 3 | 5 |
"Aiko" | "東" | "鈴木" | "女" | 5 | 4 |
"Yoshiko" | "南" | "竹田" | "女" | 4 | 4 |
"Sakurako" | "東" | "佐藤" | "女" | 4 | 4 |
"Saburo" | "南" | "竹田" | "男" | 2 | 2 |
"Shiro" | "東" | "佐藤" | "男" | 5 | 1 |
"Taro" | "南" | "竹田" | "男" | 4 | 1 |
名前(name)と数学(math)の列のみを抽出せよ。
name | math |
---|---|
str | i64 |
"Taro" | 4 |
"Hanako" | 3 |
"Saburo" | 2 |
"Yoshiko" | 4 |
"Jiro" | 3 |
"Sakurako" | 4 |
"Shiro" | 5 |
"Matsuko" | 4 |
"Aiko" | 5 |
国語(reading)の平均値を計算せよ。
## [1] 3.444444
## 3.4444444444444446
先生(teacher)ごとに国語(reading)の平均値を計算せよ。 reading_mean = mean(reading)
teacher | reading_mean |
---|---|
str | f64 |
"竹田" | 3.0 |
"鈴木" | 4.5 |
"佐藤" | 3.333333 |
学校(school)ごとの学生数を計算せよ。
school | n |
---|---|
str | u32 |
"東" | 4 |
"南" | 5 |
カウント関数を使用して, 性別(gender)ごとの学生数を計算せよ。
gender | count |
---|---|
str | u32 |
"女" | 5 |
"男" | 4 |
count関数を使用して, 男女(gender)ごとの先生別学生数を計算せよ。
【Rヒント】count
【Pythonヒント】group_by, agg, len, (sort)
gender | teacher | len |
---|---|---|
str | str | u32 |
"女" | "竹田" | 2 |
"女" | "佐藤" | 1 |
"女" | "鈴木" | 2 |
"男" | "佐藤" | 2 |
"男" | "竹田" | 2 |
男子の数学(math)と国語(reading)の点数を取得せよ。
【Rヒント】filter, select
【Pythonヒント】 filter, col, select
name | gender | math | reading |
---|---|---|---|
str | str | i64 | i64 |
"Taro" | "男" | 4 | 1 |
"Saburo" | "男" | 2 | 2 |
"Jiro" | "男" | 3 | 5 |
"Shiro" | "男" | 5 | 1 |
東高校の女子の数学(math)の点数を取得せよ。
【Rヒント】filter
【Pythonヒント】filter, col, () & ()
name | math |
---|---|
str | i64 |
"Sakurako" | 4 |
"Matsuko" | 4 |
"Aiko" | 5 |
学生数が4名以上の先生(teacher)のデータを取得せよ。
【Rヒント】group_by, filter, n():行数取得関数
【Pythonヒント】(難)2文で実行。group_by, agg, filter, col, select, is_in
name | school | teacher | gender | math | reading |
---|---|---|---|---|---|
str | str | str | str | i64 | i64 |
"Taro" | "南" | "竹田" | "男" | 4 | 1 |
"Hanako" | "南" | "竹田" | "女" | 3 | 5 |
"Saburo" | "南" | "竹田" | "男" | 2 | 2 |
"Yoshiko" | "南" | "竹田" | "女" | 4 | 4 |
数学(math)と国語(reading)の平均点(mean)を作成せよ。
【Rヒント】mutate
【Pythonヒント】with_columns, col, alias
name | school | teacher | gender | math | reading | mean |
---|---|---|---|---|---|---|
str | str | str | str | i64 | i64 | f64 |
"Taro" | "南" | "竹田" | "男" | 4 | 1 | 2.5 |
"Hanako" | "南" | "竹田" | "女" | 3 | 5 | 4.0 |
"Saburo" | "南" | "竹田" | "男" | 2 | 2 | 2.0 |
"Yoshiko" | "南" | "竹田" | "女" | 4 | 4 | 4.0 |
"Jiro" | "南" | "佐藤" | "男" | 3 | 5 | 4.0 |
"Sakurako" | "東" | "佐藤" | "女" | 4 | 4 | 4.0 |
"Shiro" | "東" | "佐藤" | "男" | 5 | 1 | 3.0 |
"Matsuko" | "東" | "鈴木" | "女" | 4 | 5 | 4.5 |
"Aiko" | "東" | "鈴木" | "女" | 5 | 4 | 4.5 |
国語(reading)を100点満点に換算(新カラム名:reading100)せよ。
【Rヒント】mutate
【Pythonヒント】with_columns, col, alias
name | school | teacher | gender | math | reading | reading100 |
---|---|---|---|---|---|---|
str | str | str | str | i64 | i64 | i64 |
"Taro" | "南" | "竹田" | "男" | 4 | 1 | 20 |
"Hanako" | "南" | "竹田" | "女" | 3 | 5 | 100 |
"Saburo" | "南" | "竹田" | "男" | 2 | 2 | 40 |
"Yoshiko" | "南" | "竹田" | "女" | 4 | 4 | 80 |
"Jiro" | "南" | "佐藤" | "男" | 3 | 5 | 100 |
"Sakurako" | "東" | "佐藤" | "女" | 4 | 4 | 80 |
"Shiro" | "東" | "佐藤" | "男" | 5 | 1 | 20 |
"Matsuko" | "東" | "鈴木" | "女" | 4 | 5 | 100 |
"Aiko" | "東" | "鈴木" | "女" | 5 | 4 | 80 |