Python100本ノック 62本目~71本目(63本目~70本目)
Python100本ノック、62本目から71本目についてです。
※Qiita記事では63本目~70本目に該当しますが、この記事から番号がズレているっぽい...?
62本目:現在の日付をtoday.txtというテキストファイルに文字列の形で書き込みなさい
date.isoformat()
を使う点以外は記事内の解法と同じでした。
date.isoformat()
'YYYY-MM-DD'の日付を表す文字列を返すメソッド
63本目:today.textから日付を解析し取り出しなさい
「日付を解析する」がパッと見で分からなかったです(-_-;)
「today.txtから日付を~」の部分をもう一度見て、
txtファイルから読んだ文字列から日付に変換するという意味だと理解できました。
文字列から日付型への変換は、
datetime.datetime.strptime(日付を表す文字列, 日付フォーマット)
で実現できました。
どうやら、time
ライブラリにもstrptime
メソッドが搭載されているみたいです。
64本目:ディレクトリの扱いの練習
問題:カレントディレクトリと親ディレクトリのファイルのリストをそれぞれ表示せよ。
os
ライブラリは少しだけ使ったことがありましたが、調べながらの取り組みとなりました。
65本目:自分の誕生日が何曜日だったか確認
すぐ分からなかったので、datetime
ライブラリの公式リファレンスを漁りました。
Qiitaの記事でも書かれているdate.weekday()
を利用しました。
date.weekday()
月曜日を0、日曜日を6として、曜日を整数で返すメソッド
66本目:自分が生まれてから10,000日になるのはいつか確認
これもdatetime
ライブラリのリファレンスを参照しました。
特に問題無く解けました。
timedelta
オブジェクト
経過時間に関する機能が搭載されている
67本目:以下のデータフレームを作成せよ。
pandas
の使い方をググりましたが、問題無く解けました。
pandas.DataFrame
2次元の可変長のデータ構造。numpy
の配列、リスト、辞書、他のデータフレームからのコピー、ファイル読み込み等によって初期化することができる。
68本目:年齢が35歳よりも下の人だけを表から取り出しなさい
指定した条件を抽出することはできましたが、データフレームとして出力するところで少し時間がかかりました。
df["年齢"] < 35
だけ
指定した条件に関するbool値を含むリストを出力するだけ...df[df["年齢"] < 35]
データフレームとして出力できる!
69本目:内容の追加
問題:なんか適当に新しい行と新しい列を追加してみましょう
例:新たに「池田」を追加し、新たに「居住地」という列を追加する
pandas
での操作が少しずつ複雑になり、時間がかかりました。
参考URL:
pandas.DataFrameに列や行を追加(assign, appendなど) | note.nkmk.me
列の追加は問題の記事と同じ方法で行いました。
→ データフレーム["まだ存在していない列名"]=[その列に入る要素のリスト]
しかし、行の追加については、記事内の解法と異なる方法で解きました。
自分の解法:新たに作ったSeries
をappend()
メソッドで追加
記事内の解法:新しく追加する要素のみを含むデータフレームを定義→concat
で結合
pd.concat([追加先のデータフレーム, 追加するデータフレーム], axis)
axis
が0だと行方向に、1だと列方向に追加するようです(デフォルトは0)。
70本目:内容の削除
問題:「性別」の列を削除せよ。
使うメソッドが分からなかったのでググりました。
参考URL:
pandas.DataFrameの行・列を指定して削除するdrop | note.nkmk.me
データフレーム.drop("ラベル", axis)
drop
メソッドで行や列を削除できます。
上記のconcat
メソッドと同様、axisに0を指定すると行、1を指定すると列方向に削除の処理を行います。
デフォルトでは0が指定されるのも同じですね。
71本目:列名を変更
問題:「名前」を「name」、「年齢」を「age」、「居住地」を「residence」に変更せよ
これもググりました。
参考URL:
pandas.DataFrameの行名・列名の変更 | note.nkmk.me
行名、列名の変更方法は以下の2つがあるようです(上記のサイトより引用)。
pandas.DataFrame
のrename()
メソッドを使うpandas.DataFrame
の属性index
,columns
を更新する
前者だと任意の行名・列名、後者だと行名・列名を全て一括で変更できるようです。
datetime
、os
、pandas
のライブラリについての問題でした。
どれも使用経験がほとんど無く、調べながらの取り組みとなりましたが、それなら何とかできるといった感じでした。
ファイルの読み書きに続いて、これらも機械学習のデータ前処理等で頻繁に使うライブラリなので、しっかり慣れておきたいですね...!