データサイエンスのためのPython入門③〜Pythonのデータタイプまとめ〜

こんにちは,米国データサイエンティストのかめ(@usdatascientist)です.

データサイエンスのためのPython入門第3回です.今回はようやくPythonに触れていきますが,データサイエンス関連のライブラリを使う前に一度Pythonの基本文法や使い方についてまとめておきたいと思います.(第二回の記事はこちら)

Pythonってどんな言語?なんでデータサイエンティストを目指すにはPythonがいいの?という方はこちらの記事を参考にしてください.本ブログではPython3を使います.

【完全解説】データサイエンティストになるにはRかpythonか【結論:pythonでOK】

なお,DockerコンテナをもしExitedさせた場合は再度 $ docker start my-lab で起動させてブラウザでlocalhost:8888にアクセスすればJupyter Labに入れます.

本記事は全くコーディングしたことがない人にとっては少し難しい内容かもしれません.もし全くコーディングしたことがないのであれば,ProgateのPythonコースCodecademyのPythonコースなどのPython超入門な教材をやっておくことをお勧めします.(それもめんどくさい〜って人はとりあえず本記事読んでみてください.理解できなくてOKです.「こんなのあるんだ〜」と思いながら実際にJupyter Labで試してみてください.)

その上で,本記事で「おさらい」する感覚で読んでください.まとめなのでつまらないですが,サーっと目を通して必要なときに戻ってこれればいいと思います.プログラミング経験者は,コードを読んで文字は補助的に必要に応じてよんでいただければと思います.

Pythonの基本データタイプ

コーディングしてく上で数字だったり文字だったりのオブジェクトを作りますよね?それぞれのオブジェクトにはルールが決まってて,そのルールに従ってコーディングする必要があります.データタイプというのはいわばオブジェクトのタイプのことです.(こちらの記事でデータ構造について学べる本を紹介しています.もしデータ構造についてご存知ない方は是非ご一読ください!)

Pythonにある基本のデータタイプを一覧にしました.なお,Pythonでは type(object)object のtypeがわかります.とりわけデータサイエンスで必要な内容にフォーカスしてサクッと紹介します!

  • Numbers

数字のことです.int(整数),float(浮動小数),complex(複素数)が存在します.complexはあまり出てこないので,intfloatを押さえておきましょう.

e を使って 0.1 を 1e-1 と表記できることを覚えておきましょう.これからよく出ます.

また,int同士の足し算(+),掛け算(*),引き算(-)の結果はintになります.floatも同じです.intとfloatが混在するとfloatになります( 1+1.0=2.0 ). それと, 1==1.0True です.同じ値と見なされます.

  • Strings

文字列です.シングルクオテーション ' もしくはダブルクオテーション " で文字を囲みます.

"" の中に ' を, '' の中に を入れることができます.まぁ " を文字に入れること滅多にないですけど.どちらの文字も入れたい場合はバックスラッシュで \ エスケープします.あまりそういうケースに出会うことはないですが.

また, '''""" (クオテーション3つ)で囲むと複数行のStringsを作れます.改行部分は \n (改行コード)を入れてくれます.が,あんま使わないです.今後の記事で出てきますがコメントにもできるのでそれに使います

また,文字列をリストのように扱って, [int] でint+1番目の文字を抽出できます.Pythonではリストのindexは0からはじまるので,例えば’hello'[0]とすると最初の’h’を抽出できます.’hello'[1:3]のようにすると,index1(つまり’e’)からindex3(つまり2個目のl)の前までを抽出できます.これをslicingと言います.ややこしいんですが,[N:M]としたときindexNは含むがMは含みませんN以上M未満って感じです.この後に出てくるリストでも同じことができるので,覚えておきましょう.slice操作はデータサイエンスに頻出です.

文字列の後に .format(引数1, 引数2, ,,) と繋げると文字列の中の{}に引数の文字を補完してくれます(上記の写真参照).特に変数の値をprintしてデバッグしたいときによく使います.ちなみにPythonでは’hello’ + ‘ world’みたいに文字列同士を+演算して連結することも可能です.

  • Lists

リストです.オブジェクト(1や’hello’など)をリストにできます.

リストの中の要素が,StringsとNumbersなど混合していてもOKです. .append() 関数を使うことでリストの最後の要素に付け加えることができます.

[1, 2].append([3, 4])[1, 2] + [3, 4] の違いに注意してください. .append() は最後の要素に追加するため [1, 2, [3, 4]] となり,+は連結なので [1, 2, 3, 4] となります.また, .add() という関数はありそうですがありません.プログラミング経験者の方,注意です. + を使いましょう

要素を取り出すには先の文字列同様 [index] でindex+1番目の要素を抽出します.indexは0から始まるので!覚えましょう!w リストの中にリストがくるケースも頻出です.その場合は list_out[3]list_in を抽出して [1]'two' を抽出するイメージで list_out[3][1] と繋げます.

  • Dictionaries

いわゆるハッシュ型のデータタイプです.超重要です.ハッシュと言われてなにかわからない人は,一旦気にしなくてOKです.とにかく高速に値を取り出せるデータタイプというのを覚えておきましょう.{}のなかにkeyとvalueのペア(key:value)を複数持ちます.リストと違って順番はありません.なので dictionary[0] とやっても最初の値は出せません!

DictionaryのvalueにDictionaryを入れることができます.もちろんvalueは,ListsでもNumbersでもStringsでもオブジェクトなら基本OKです.

追加で新しいkey, valueのペアを追加したい時は dict[newkey] = newvalue で追加できます.すでにそのkeyがある場合は上書きされます. .keys() でkeyのリストを, .values() でvalueのリストを取得できます.やってみてください!

  • Boolean

変な名前ですが,ブーリアンと呼びます.「有るか無いか」「0か1か」「真か偽か」といった二つの状態を表すもので,Pythonでは TrueFalse になります.TとFが大文字なのに注意してください.あと,クオテーションで囲むと当然Stringsになります..紛らわしいのでやめましょう.

Booleanを使って条件文を評価(条件が真か偽か)してロジックを組んだりします.

  • Tuples

また変な名前ですが,日本語ではタプルと呼びます.英語だとトゥープルが多いですがタプルと発音する人もいます.Tuplesは変更できないListだと思ってください.

Listと同じ要領で値を出せますが,更新しようとするとエラーになります.結構いろんなところで出てきますが,ほとんどが関数の返り値を複数返したいときにタプルで返します.この辺についてはまた今後の記事で説明します.慣れないとなんのためのデータタイプ?と思いますが,これからの記事で沢山でてきますのでその都度慣れてください!(今は「こんなのあるんだ〜」くらいに思ってください)

  • Sets

ユニークな値だけもつリストです.リストは[要素1, 要素2],タプルは(要素1, 要素2), でしたが,セットは{要素1, 要素2}です.括弧の形がそれぞれ違いますね.ユニークな値だけ持つというのはどういうことかというと,{1, 2, 3, 1, 2, 5}という風にオブジェクトを作っても{1, 2, 3, 5}という値のセットができます.重複は排除された形で残るんですね.自分はほとんど使わないデータタイプです.多分今後の記事では出てこないと思いますw が,一応知っておきましょう.

データタイプのCasting

Pythonでは簡単にお互いのデータタイプを変換できます.int(), float(), str(), list(), bool(), set()といった関数を使います.

データサイエンスで使うのはstr()とbool()くらいですかね.数値系はこれから勉強するnumpyというモジュールを使うことが多いのでPythonネイティブのキャストを使うことはあまりありません.

 

 

疑問があったら実際にコードを書いて試してみよう

ここまで読んでみて,「Dictionaryのキーが数字だったらどうなるのかな?」とか「bool(0.1)はどうなる?」って疑問に思ったアナタ!センスあると思います.

結局本とかブログとか動画で紹介されているのはただのルールで,全部のケースは網羅できません.

気になったら,ググる前に実際にコードを書いて試してみてください.私はそうすることでプログラミングを学びました.

本とか動画で「ただ読んでるだけ・聞いただけ」では絶対に身につかないと思います.好奇心を持って,疑問をもって,

Get your hands dirty!!

してください!!

以上!次回もまだPythonおさらいが続きますが,復習のつもりでお付き合いください!それでは〜

追記)次回書きました.Pythonの文法をまとめています.データサイエンスに重要なところに絞ってまとめてますのでぜひ一読して,知らないものがないか確認してほしいです!↓

データサイエンスのためのPython入門④〜文法まとめ1 演算子, if文, ループと内包表記〜