0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

2025年9月23日の学習記録 データの理解・可視化【永久保存版】データサイエンス入門完全攻略【基礎を徹底解説】(はやたす|Python・データサイエンスコーチ) ~34:00

Posted at

(1).やったこと
 タイトルの動画を視聴しつつ、ノートに内容や疑問、感じたことをまとめた。
 ノートの内容は下記。
―――――
(1).データサイエンスとは
 データを活用して課題を解決すること。

(2).データサイエンスに必要な力
 ①.ビジネス力(個人で鍛えるのは難しい)
  ・ロジカルシンキング
  ・ドメイン知識
  ・コミュニケーション能力

 ②.データサイエンス力

 ③.データエンジニアリング力

 ※個人で鍛えやすいのは②.③の力

(3).データサイエンスプロジェクトの流れ
 ①.ビジネスの理解・課題の特定

 ②.データの準備・収集

 ③.データ理解・可視化

 ④.データの加工・前処理
  ・データの欠損・表記揺れの修正等
    時間がかかるのはこっち

 ⑤.モデルの作成
  これは実は割と簡単

 ⑥.モデルの評価

 ⑦.レポーティング・アプリケーション化

 ※②~⑥を、望んだ精度が出るまで繰り返すのがプロジェクトの主な作業。
  また、個人学習ができるのも②~⑥。

(4).データ分析を実際にやってみる。
  Kaggleの初心者用コンペ、「タイタニック号の生存者予測」で提供されているデータを
 用いて、一通りの工程を体験する。

 ①.ビジネス課題の特定
  今回はスキップ
  (最初から「タイタニック号の乗員の生存を予測する」という課題が与えられている。

 ②.データの取得
  https://www.kaggle.com/competitions/titanic/data
 から取得

 ③.Python環境の構築
  Google colabを利用する。
  ・googleドライブのマウント
    やり方や二つ。画面上の操作と、コーディングでやる方法がある。
    (コーディングでやる方法はcolab内で実行している)

 ④.データの理解・可視化
  (a).ライブラリのインポート
   ・Numpy
     行列計算や数値を扱いやすくするライブラリ。
     単体より、Pandasと併用して使うことが多い。
   ・Pandas
     Excelのような表形式のデータを扱いやすくするライブラリ
   ・matplotlib.pyplot
     グラフを描画するためのライブラリ
   ・seaborn
     よりきれいに描画するためのライブラリ

    データの可視化のために必要なライブラリを実装する。
    それぞれ、もっと詳細に勉強できることもあるが、一旦はこういうものがあってイ
   ンポートが必要、という程度の把握で先に進む。

  (b).CSVを読み込むコードを作成。
   ・変数の設定
     dir_path = "/content/drive/MyDrive/データサイエンス入門/titnic/"

   ・CSVを読み込むコードを作成
     train_df = pd.read_csv(dir_path + "train.csv")
     test_df = pd.read_csv(dir_path + "test.csv")
  
     Colabに直接書き込む。
 
     (疑)これは、変数の設定のはずなのに、なぜこれでCSVを読み込むコードになる
       んだろう?
       とりあえず進むが、疑問だけ残しておく

   ※dfとは何?
     dataframeの略で「d」ata「f」rameから取っている。
     Pandasを使って表形式のデータを読み込むと、データフレームという、Pythonで
    操作しやすい形に変換してくれる。
     そこで慣習的にdfという名前を使うことが多い。

  (c).データの確認
   ・headを使ってデータを確認。
     これはheadというメソッドを使っている。
     データフレームの先頭のデータを表示する。(デフォルトだと先頭5行)
     もし10行なら()内に10と入力

   ・PassengerIDとかSurvivedなどの縦列のことを「カラム」と呼ぶ
     実際の現場だとカラムについてのドキュメントが用意されている。

   ・データフレームの大きさを確認する。
     testとtrainでデータのカラムの数が違うことに気が付く。
     なので、データの大きさが違いそうだから、その中身の違いを確認する。
     shapeプロパティを使用
      print("学習データの大きさ:" , train_df.shape)
      print("テストデータの大きさ:" , test_df.shape)
     行数と列数が表示される。

     ここから、生存してるかどうかなどの一部カラムのデータがテストデータでは省
    かれているのがわかる。
     ただ、今回の目的は生存するかどうかを予測することなので、テストデータにお
    いてそれは省かれていて問題ない。

   ・データ型の確認
     train_df.dtypesを使用。
     データ型が数字に見えても「object」になってたりすることがわかる。
     (見た目とデータ型が違うこともあるから、見た目で判断してはいけないようだ。
     あと、こういうのを数値とかに変換したりもしそう)
     目視ではなく、dtypesを使ってちゃんと確認するのも工程のうちの一つ

   ・欠損値の確認
     欠損値とは、データ内で欠損してしまってるデータ(そろってなかったりとか)
     データがきれいにそろってることはほとんどない。たいていはある。
     欠損地があると機械学習の時にエラーが出てしまうので、これを補ってあげる必
    要がある。

   ・欠損値を確認する方法
     .isnull().sum()を使う
     この時、trainだけでなくtestのデータも確認する。
     何故なら、データごとに別の欠損値があるかもだし、そっちではかけてないかも
    しれない

     だから、欠損値の確認は、学習データとテストデータの両方を必ず行う。

   ・別の欠損値の確認方法
     infoメソッドを使う『.info()』
     こちらは「欠けていないデータ」を表示する
     こちらはデータ型やメモリの使用量なども把握できる。

  (d).使用するデータの特徴の確認
   ・データの連結
     連結した方がスムーズに分析ができる。
     連結しないと、コードを毎回2つ分記載しないといけないので作業量が倍になる。
     また、今回はkaggleという理想環境なのでデータが分割されているが、実際の現
    場ではすべてまとまったデータになっている。

   ・データを連結する方法
     データを縦に連結する時は『pd.concat()』
     この後、df.shapeを使うと、連結できたかどうかが確認できる。
     ただ、テストデータには学習データと比べてカラムが少ないので、その部分が欠
    けた状態になる。
     また、学習データの下にテストデータがある形なので、最後の方も確認すればそ
    こに学習データがどのような欠損で存在するかがわかる。
     この時はdf.tailを使う(tailメソッド)

   ・各データの特徴を確認していく。
     各カラム(=行)にどんなデータが入っているのか確認するときはグラフにしてデー
    タを可視化する。
     自分が把握したいのもそうだが、クライアントに分析結果を見せる時にわかりや
    すくなる。
     今回は、性別、チケットのクラス、生存したか否かの3つのカラムの可視化を行
    う。
     各カテゴリーにどれだけの数量があるか確認したい時は、棒グラフが良い。

   ・Matplotlibを使ったデータの可視化『plt.ber()』
     Matplotlibを使って男女の内訳を確認するには、先に各性別の人数を集計してお
    く必要がある。
     性別ごとにグループ分け→性別ごとにカウント という2ステップが必要。
     そして、集計したものを変数tmpに入れたのちに、下記のコード(colabで実際に
    動かしてるので、そちらも要参照)
     ―――――
     plt.figure(figsize=(6, 4)) #グラフの大きさの設定
     plt.bar(tmp.index, tmp.values)
     plt.show()#グラフを描画するためのメソッド
     ―――――

   ・Pandasを使ったデータの可視化
     colabを要参照
     ――――
     tmp.plot(kind="bar", figsize=(6, 4))
     ――――

   ・seabornできれいなグラフで可視化
     並びを変えたり、データごとの色を変えたりできる。(よりわかりやすいグラフに
    なる)
     コードは下記(実際に動かしたのはcolabを参照)
     ――――
     plt.figure(figsize=(6, 4))
     sns.countplot(data=df, x="Sex")#dataは使うデータがどれか。xは描画するのはど
    のカラムにするのかの設定
     plt.show()
     ――――
     グラフは大体seabornで描画できるので、まずはseabornで実装できないかを考え
    ると良い。
     グラフはデータを直感的に把握するのに役立つ。
     グラフは分析を進めるに応じて作成し、特徴を把握していくもの。
     適宜使っていこう。

(2).気づいたこと・学んだこと・疑問
   ・メソッドに()が付くときと付かない時があるが、この違いは何だろう?(疑問)
   ・printを打った時と打たない時で出力が全然違う。というか、なんでprintを打たなく
    てもコードを実行したときに表として出力されるんだろう?(疑問)
   ・データの前処理とか保管には、何かしらの蓄積されたノウハウやテクニックがあり
    そう。いずれ要チェック。(気づいたこと)
   ・今やっていることは、正解の動作を一通り追っている状態。公式を丸暗記している
    ようなもの。実際に自分でこれらをやる時に深堀をしよう。(気づいたこと)
   ・たぶん、今紹介されているメソッドの中には、実際は別の効果を持つメソッドで、
    それらが組み合わさった結果データ分析で使える文脈のコードになってる気がす
    る。
    ちゃんとした技術者になるなら、仕組みの解明をしないといけない。あと、使いこ
    なすために具体と抽象の行き来のトレーニングが別途必要になる気がする。
    (気づいたこと)

(3).軽い復習事項
   統計学など、以前学んだこととのリンクが確認された時に適宜軽くおさらいする。

   ・主なグラフとグラフ毎に適した用途と注意事項(統計学)
     (a).ヒストグラム
        数値データや連続的な量的変数の可視化に使う。
        わかりやすいが、階級の設定で恣意的にイメージ操作できてしまうので解釈に注意。

     (b).箱ひげ図
        数値データや外れ値(少数の特異なデータ)を含む分布の可視化に使う。
        外れ値が明示できるし、データの中央値などの5要素での比較がしやすい
        が、データの傾向などはわからず、直感的な図でもないためやや専門知識
        が要る。

     (c).散布図
        2つの量的変数の関連を可視化する時に使う。(身長と体重とか)
        読み手のリテラシーにかなり依存する。また傾向や関係性を表しやすいだ
        けで因果関係までは表してないことに注意。(統計は傾向を表すだけで因果
        関係までには言及しない)

     (d).棒グラフ
        カテゴリごとの量的変数と数値の可視化に使う。
        集団ごとの差異がわかりやすいが、詳細な傾向や分布は読み取れない。
        (今回の学習の範囲では、男女の差異を可視化するのが目的だったため、使
        われた)

     (e).折れ線グラフ
        時系列で連続的に観測されたデータの可視化に使う。
        変化を伝えやすいが、設定されたデータの間隔など、スケールや単位で恣
        意的な操作ができるため、読み取りに注意が必要。

     他、円グラフなどもあるが、一旦は主な5つにおさらいはとどめる。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?