課題一覧

課題一覧

【課題に取り組むときの注意点】
◯ネットで調べても、chatGPTなどの生成AIを使ってもOKです。ただし、必ず自分の手でコードを写すようにしましょう。
◯少しでもわからない、悩んでしまうというときはすぐに質問してください。コーディングにおいて考えている時間は苦痛ですし、成長を妨げます。とにかく手を動かしましょう。
◯間違ったコードでも、途中までで送っていただいてもOKです。
◯コード自体を覚える必要は全くありません。調べて書けるならOKという軽い気持ちで取り組んでみましょう。

Practice: 01

「値"19207"が素数かどうか判別するプログラムを作成してください。」

【ヒント】
◯素数とは、1とその数のみでしか割れない数字のことを言います。
◯今まで学習したifとforが使えます。
◯フラグ変数を使うとよいかもしれません。
flag = 0としておいて、割り切れたらflag = 1とするなど...

Practice: 02

https://qiita.com/Masashi47/items/7508b0856ce08b3bdb91
上記は身長と体重からBMIを算出するというサンプルプログラムです。
それではこちらのコードを改良し、BMIの計算部分を関数にするように書き換えてみましょう。

【ヒント】
◯input()によりユーザからの入力を受け付けることができます。
◯float()により取得した入力を数値(実数)に変換しています。

Practice: 03

「要素の数値を1〜12の整数のうちからランダムに選択した、大きさが5の配列を用意し、その要素の合計を出力してください。」

【ヒント】
https://note.nkmk.me/python-random-randrange-randint/#randomrandint
上記のrandom.randomint()が使えそうです。
◯最初に空の配列を用意し、append()で追加していくのがわかりやすいかもしれません。

Practice: 04

「要素の数値をp〜qの整数のうちからランダムに選択した、大きさがnの配列を作成する関数を作り、この関数を使うようにプログラムを書き換えてください。」

【ヒント】
・関数を作る上で重要なことは「何を入れて」「何が出てくるか」ということでした。
今回は
入れるもの(引数)は...(p, q, n)
出てくるもの(返り値)は...配列
となりますね。
※配列も変数と同様にreturnすることができます。

Practice: 05

「年、月、日をinput()により取得し、yyyy/mm/dd形式に変換して出力するプログラムを作成してください。」
例:
2025年4月3日 -> 2025/04/03
1995年12月5日 -> 1995/12/05

【ヒント】
◯input()は、
year = input("年:")
のように使います。これにより、実行した後にユーザから入力を求めることができます。
参考: https://www.python.jp/train/string/input.html
◯input()で取得した値は例え数値であっても「文字列」として扱われます。したがって、
year = int(year)
と整数に変換する必要があります。
これを「型キャスト」といい、整数はint()、小数を含む数値はfloat()を使います。
参考: https://www.sejuku.net/blog/73441

Practice: 06

「添付のCSVファイルは、全国の男女別人口統計のデータです。このデータから各年の東京都の行だけ抜き取り、別のCSVデータとして保存してください。」

添付: https://python.hisakatano.com/data/c01.csv

【ヒント】
◯その行に「東京都」が含まれているかどうかを確かめるときには、"in"を使うとよさそうです。
◯事前に空のlistを作っておいて、「東京都」が含まれていたらappend()するのがわかりやすいかもしれません。
◯もしうまく読み込めないという場合は、open("c01.csv", mode="r", encoding="utf-8")のようにencodingをutf-8に設定してみてください。

Practice: 07

「添付のファイルc01.csvについて、東京都の行のみを対象として5列目の西暦と7列目の人口合計のみを抜き出したcsvを新たに作成してください。」

csvは
1920,3699428
1925,4485144
...
のようになります。

添付: https://python.hisakatano.com/data/c01.csv

【ヒント】
◯まずはread()で読み込み、split("\n")で分割します。
◯分割した配列をforループで回し、その中でsplit(",")で分割します。

Practice: 08

「添付のファイルは4/3の全国の最高気温に関する気象データです。このデータから東京都を含む行のみ抜き出し、以下のフォーマットに沿ってCSVとして出力してください。」

フォーマット: 都道府県,地点,3日の最高気温(℃)

添付: https://python.hisakatano.com/data/mxtemsadext00_rct.csv

出力CSVは
東京都,小河内(オゴウチ),7.5
東京都,青梅(オウメ),9.3
...
となります。

Practice: 09

「添付のファイルc01.csvから正規表現を用いて『昭和15年の宮城県の人口(総数)』を取得し、print()にて表示してください。」

添付: https://python.hisakatano.com/data/c01.csv

【ヒント】
◯read()で読み込んだ後、split()をかける必要はありません。

Practice: 10

「添付のファイルc01.csvから1945年の埼玉県の男性人口をre.findall()により取得し、出力してください。」

添付: https://python.hisakatano.com/data/c01.csv

Practice: 11

「添付のファイルc01.csvからre.findall()を用いて、『東京都』が含まれる行について、5列目の西暦と7列目の人口合計のみを抜き出したcsvを新たに作成してください。」

添付: https://python.hisakatano.com/data/c01.csv

Practice: 12

「添付のファイルc01.csvの"大正", "昭和", "平成"をそれぞれ"T", "S", "H"に置き換えて別のCSVファイルに出力してください。」

添付: https://python.hisakatano.com/data/c01.csv

【ヒント】
◯re.sub()が使えそうですが、実際には正規表現を使う必要はありません。つまりreplace()を使ってもOKです。

Practice: 13

「大きさが3x3、要素の数値が整数で1〜20のランダムなnumpy arrayを2つ作り、その和を計算し、出力してください。」

【ヒント】
◯行列の和の計算は、単純な+でOKです。
◯参考: https://qiita.com/moe_713/items/671c8c912f6e8d6c7442

Practice: 14

「y=3x^2-6(二次関数)のグラフを、xの範囲を-10から10までとして描画してください。」

【ヒント】
サンプルコードa-4の関数を少し変えればよさそうです。

Practice: 15

「添付のファイルc01.csvをPandasのdata frameにて読み込み、横軸を西暦、縦軸を東京都の人口(総数)としたグラフを作成するプログラムを書いてください。」

添付: https://python.hisakatano.com/data/c01.csv

【ヒント】
◯読み込みはpd.read_csv()とします。read_excel()と同じように使用できます。
◯特定の行だけを抜き取るには、query()が使えます。
https://qiita.com/dox/items/bf6ce1c71d8d18723e74
例: df.query('"都道府県名"==〇〇')
◯ところどころprint()で確認するのが重要!!

Practice: 16

「添付のファイルは4/3の全国の最高気温に関する気象データです。このデータから東京都を含む行のみ抜き出し、以下のフォーマットに沿ってCSVファイルとして出力してください。」
フォーマット: 都道府県,地点,3日の最高気温(℃)

出力CSVは
東京都,小河内(オゴウチ),7.5
東京都,青梅(オウメ),9.3
...
となります。

添付: https://python.hisakatano.com/data/mxtemsadext00_rct.csv

【ヒント】
◯csvへの書き込みはdf.to_csv()を使います。

Practice: 17

「添付のCSVファイルは子どもがスクリーンを見ている時間に関する統計データです。このデータの"Age Gender"が"Male"かつ"Screen Time Type"が"Total"のデータを抜き出し、横軸を"Age"、縦軸を"Average Screen Time (hours)"とした棒グラフを作成してください。」

添付: https://python.hisakatano.com/data/screen_time.csv

【ヒント】
◯plt.bar()で棒グラフが作成できます。
◯色などのスタイルは、見やすいようにお好みで作成してください。
◯align="center"とするとわかりやすいグラフになります。
◯参考: https://pythondatascience.plavox.info/matplotlib/%E6%A3%92%E3%82%B0%E3%83%A9%E3%83%95

Practice: 18

「添付のCSVについて、このデータの"Screen Time Type"が"Educational"のデータを抜き出し、横軸を"Age"、縦軸を"Average Screen Time (hours)のMaleとFemaleの差"とした棒グラフを作成してください。また、棒グラフはプラス値とマイナス値で色が変わるようにしてください。」

添付: https://python.hisakatano.com/data/screen_time.csv

【ヒント】
◯棒グラフの色を変えるには、plt.bar()にcolorを配列で指定すると良さそうです。
◯参考: https://beiznotes.org/matplotlib-bar-color-on-minus-value/
◯上記のページではリスト内包表記というものを使っていますが、通常のforループで配列を作っても問題ありません。

Practice: 19

「添付のCSVファイルは飲食店の配達に関するデータです。このデータについて、エラーデータと推測できる行を削除し、横軸を"Restaurant_longitude"、縦軸を"Restaurant_latitude"とした散布図を作成してください。」

添付: https://python.hisakatano.com/data/cleaned_test.csv

【ヒント】
◯エラーデータはNaNが入っている、もしくは異常な値を持つデータのことを指します。一旦プロットしてみると、エラーデータかどうかがわかるかもしれません。
◯NaNのある行の削除はdf.dropna()でできそうです。
◯参考: https://nomuotorinko.com/pandas_dropna/
◯条件による行の削除はいろいろな方法がありますが、「削除対象の行以外を抽出する」と考えるとわかりやすいかもしれません。
◯散布図はplt.scatter()で描くことができます。
◯参考: https://pythondatascience.plavox.info/matplotlib/%E6%95%A3%E5%B8%83%E5%9B%B3
◯longitude(経度)とlatitude(緯度)のグラフであるため、横軸と縦軸の間隔が同じだときれいなグラフとなります。
plt.axis("equal")が使えます。
◯参考: https://qiita.com/ground0state/items/f415d771fd1062f81830

Practice: 20

「添付のCSVファイルは製品の売上に関する統計データです。このデータの"Quantity", "UnitPrice", "TotalCost"の3項目についてPCAを適用して2次元まで次元圧縮をし、"Category"をラベルとした次元削減結果のプロットを作成してください。」

添付: https://python.hisakatano.com/data/spend_analysis_dataset.csv

【ヒント】
サンプルコードd-1を参考に、列とラベルの部分を変更すればよさそうです。

Practice: 21

「添付のファイルはポッサムという動物の統計データです。このデータから項目を適切に選び、PCAにより2次元に次元圧縮してください。また、"Pop"をラベルとして圧縮結果を可視化してください。」

添付: https://python.hisakatano.com/data/possum.xls

【ヒント】
◯どの列がデータ処理の対象となるか見極めましょう。基本は連続した数値を対象とします。

Practice: 22

「添付のCSVファイルはある傾きと切片に基づいた線形モデルのデータです。このデータに線形回帰を適用して傾きと切片、決定係数R2を計算し、出力してください。また元データのプロットと回帰グラフを図示してください。」

添付: https://python.hisakatano.com/data/linear_regression_data_0.csv

【ヒント】
◯決定係数R2とは、回帰結果が元データからどの程度異なっているかという値です。
◯R2はlr.score(x, y)で取得できます。
◯参考: https://qiita.com/nkay/items/8cd3c3635fe39ecb92e0

Practice: 23

「添付のエクセルファイルについて、openpyxlにより読み込み、消費カロリーの列を埋めてください。消費カロリーは以下の式で計算できます。

消費カロリー[kcal] = 3 × 体重[kg] × 歩数 × 1.05 ÷ 6000


添付: https://python.hisakatano.com/data/weight.xlsx

【ヒント】
◯サンプルコード6-1, 6-2, 6-3を参考にしましょう。
◯forループをうまく使ってみましょう。