Pythonの勉強メモ9(単回帰モデルをDeep Analyticsへ投稿する、重回帰分析とは、重回帰モデルの作成)

巷で評判の良いPythonオンライン教材、『【ゼロから始めるデータ分析】 ビジネスケースで学ぶPythonデータサイエンス入門 | Udemy』を購入し、学習してみた。

前回エントリ(予測モデル(単回帰モデル)の作成)はこちらから。

 

目次

  • セクション5: CASE1:お弁当大作戦~お弁当の売り上げを予測してみよう~ (続き)
    • DeepAnalyticsに結果を投稿しよう①
    • 重回帰モデルとダミー変数化とは
    • 重回帰モデルを作ってみよう
    • DeepAnalyticsに結果を投稿しよう②

セクション5: CASE1:お弁当大作戦~お弁当の売り上げを予測してみよう~ (続き)

DeepAnalyticsに結果を投稿しよう①

前回エントリで作成したsubmit1とsubmit2をDeep Analyticsへ投稿する。

まずDeep Analyticsへアクセスする。
f:id:ysk_son:20180220133742p:plain

 

コンテスト一覧から『お弁当大作戦After【練習問題】』を探し、アクセスする。
f:id:ysk_son:20180220134102p:plain

 

ページ内の『解析結果を送信』をクリックする。
f:id:ysk_son:20180220134259p:plain

 

投稿画面に切り替わるので、submit1を投稿ファイルとして参照させ、使用した解析手法はLinear Regression を、使用したソフトウェアはPythonを選択する。
コメントに「説明変数をTemperatureにしました」と記載して、『データを投稿』ボタンを押す。
f:id:ysk_son:20180220134539p:plain

2分ほど待つとスコアがメールで届く。
F5で画面更新すると以下のように投稿スコアが反映される。
f:id:ysk_son:20180220134852p:plain

submit1のスコアは41.98742とある。

 

同様の手順でsubmit2についても投稿をする。
コメントは「説明変数をKcalにしました」と記載する。
投稿後の結果は以下となる。
f:id:ysk_son:20180220135214p:plain

submit2のスコアは39.59674とある。

 

今回のスコアは低い方が良い評価であるので、submit2の方がより良いということがわかる。
以下の画像にあるランキングページから今回の自分の投稿が何位だったのかわかる。
f:id:ysk_son:20180220135505p:plain
とても低い。。

 

今回はモデルの評価についての詳細なロジックについては触れないが、今回の評価指標はRMSEと呼ばれ、誤差を数値化する指標であるため、値(誤差)が小さいほうが望ましいモデルであるということだけは覚えておく必要がある。
その他の評価関数の種類や数式についてはどこか別の詳しい方の説明を参照してほしい。

重回帰モデルとダミー変数化とは

ここまでは単回帰モデルについて学習してきたが、ここからは重回帰モデルについて学習する。

重回帰モデルの説明は以下。
・2つ以上の説明変数を使った回帰モデル
・予測するための手がかりを複数使うイメージ
・数式は y = ax1*bx2*cx3… と表される

今回で言うと
a = 気温
b = 来店数
c = 天気
といった具合に、複数の説明変数を使って目的変数を求めることができるのである。

 

しかし上記の例でいくと c = 天気 は数値化しなければいけない。
そこでダミー変数を使う。

以降の作業で実際にダミー変数を活用しながら、実際に重回帰モデルを作っていく。

重回帰モデルを作ってみよう

早速描いていく。

# いつもの
import pandas as pd
import numpy as np
from matplotlib import pyplot as plt
%matplotlib inline
from sklearn.linear_model import LinearRegression as LR
# 次は必要なファイルの読み込み
# sampleを読み込む時はheader=Noneオプションを忘れないように注意
train = pd.read_csv("train.csv")
test = pd.read_csv("test.csv")
sample = pd.read_csv("sample.csv",header=None)
# trainのweekの各値がそれぞれいくつあるか数えてみる(今回の注目ポイント)
train["week"].value_counts()

ここで以下のようなリアクションがあればOK。
f:id:ysk_son:20180220141113p:plain

 

このままではweekの値をモデリングに使えないので、trainのweekを試しにダミー変数化する。
・ダミー関数への変換にはpd.get_dummies関数を使う
・カッコの中にダミー変数化したい変数を書く

pd.get_dummies(train["week"])

このように表示される。
f:id:ysk_son:20180220141616p:plain

 

やり方がわかったので、今回使用するデータweekとtemperatureを抜きだし、ダミー変数化したものを変数trainXに代入する。
※ ダミー変数化できるかできないかはPythonの方で識別してくれるので、weekもtemperatureの両方を指定してOK。

trainX = pd.get_dummies(train[["week","temperature"]])

trainX.head() で中身を確認すると、以下のように表示される。
f:id:ysk_son:20180220141909p:plain

 

作業を続ける。

# trainからyを取り出し、変数yに代入する
y = train["y"]
# 回帰モデルの箱を用意する(modelという名前で作成する)
model = LR()
# 重回帰モデルを作る
model.fit(trainX,y)

ここでこのように表示されればOK。
f:id:ysk_son:20180220142218p:plain

 

傾きを確かめる。

model.coef_

このように表示される。
f:id:ysk_son:20180220142400p:plain

この内容から、月曜は売り上げが上がる傾向にあり、木曜には売り上げが落ちやすいということが推測できる。

 

続いて傾きを確かめる。

model.intercept_

このように表示される。
f:id:ysk_son:20180220142455p:plain

この内容からは切片が136であるということがわかる。

 

ここから実習。

# 1.testからweekとtemperatureを抜きだし、ダミー変数化したものを変数testXに代入する
testX = pd.get_dummies(test[["week","temperature"]])
# 2.testXの中身を確認する
testX.head()
# 3.modelとtestXを使って予測をして、予測結果を変数名predに代入しよう
pred = model.predict(testX)
# 4.sample[1]にpredを代入して、"submit3.csv"というファイル名でファイル出力しよう
sample[1] = pred
sample.to_csv("submit3.csv",index=None,header=None)

これで重回帰モデルの作成は完了した。
最後にモデルをDeep Analyticsへ投稿してスコアを確認する。

DeepAnalyticsに結果を投稿しよう②

上の実習にて作成したsubmit3.csvをDeep Analyticsへ投稿する。
投稿の方法については本エントリの序盤に触れたのでここでの説明は割愛する。
前回同様に解析手法はLinear Regression を、使用したソフトウェアはPythonを選択する。
コメントは「説明変数はweekとtemperatureにしました」としておく。

結果は以下のスコア。
f:id:ysk_son:20180220143403p:plain

 

submit3のスコアは40.73978とある。

単回帰モデルであるsubmit2と比べて性能が悪くなってしまった。
重回帰モデルを使えば予測をするための手がかりが多くあるので、精度が高くなるような気がするが、なかなか現状では上手くいっていない。

 

なぜうまくいかないのか。
次回のエントリにて学習する。

本エントリはここまで。

Pythonの勉強メモ8(予測モデルの作成)

巷で評判の良いPythonオンライン教材、『【ゼロから始めるデータ分析】 ビジネスケースで学ぶPythonデータサイエンス入門 | Udemy』を購入し、学習してみた。

前回エントリ(『予測する』とは?)はこちらから。

 

目次

  • セクション5: CASE1:お弁当大作戦~お弁当の売り上げを予測してみよう~
    • モデリングの手順
    • 単回帰モデルとは
    • モデルを作成する

セクション5: CASE1:お弁当大作戦~お弁当の売り上げを予測してみよう~

ここではお弁当の売上データを使い、モデルを作成する。
また、作成したモデルを使って予測したデータをDeep Analyticsへ投稿する。

モデリングの手順

1・説明変数を決め、データを準備
どのデータを使ってモデルを作るか?を決める
今回で言うとお弁当データを学習データ(Train)と評価データ(Test)の2つにわけてモデルを作成する

2・モデルの準備
どの手法を使ってモデルを作るか?を決める
今回は単回帰モデルを作る

3・モデルの作成
学習データから取り出した説明変数と目的変数のデータを使い、モデルを作成する

4・モデルを使い予測
評価データから取り出した説明変数のデータを使い、3で作ったモデルを当てはめることで予測値を出す

5・モデルの評価
評価データに対するモデルの予測結果と実際の値を比較することで、作成したモデルの評価をする

単回帰モデルとは

単回帰モデルとは、1つの目的変数を1つの説明変数のみでモデル化する方法であり、
y = ax + b の式で表せられる。

ここでいう a は傾きであり、直線の場合は右肩上がりなら正の傾き、右肩下がりなら負の傾きである。また、 b は切片であり、直線とX=0がぶつかるところである。

f:id:ysk_son:20180219170801p:plain

例えばこのグラフの場合、傾きは-0.5であり、切片は105となる。

モデルを作成する

早速描いていく。

# まずは必要なもののインポート
# sklearn.linear : サーキットラン,回帰モデルを作るのに便利なライブラリ
# LinearRegression : 線形回帰という意味
import pandas as pd
import numpy as np
from matplotlib import pyplot as plt
%matplotlib inline
from sklearn.linear_model import LinearRegression as LR
# 次は必要なファイルの読み込み
# sampleを読み込む時はheader=Noneオプションを忘れないように注意
train = pd.read_csv("train.csv")
test = pd.read_csv("test.csv")
sample = pd.read_csv("sample.csv",header=None)
train.head()

ここまで入力して以下のように先頭行が表示されればOK。
f:id:ysk_son:20180219171639p:plain

引き続きモデルを作成していく。

# trainから説明変数と目的変数となるデータを取り出す
# 説明変数はtrainからtemperatureを選択し、変数名をtrainXとして代入する
# 目的変数はtrainからyを選択し、変数名をyとして代入する
trainX = train["temperature"]
y = train["y"]
# testから説明変数となるデータを取り出す
# 説明変数はtrainと同じtemperatureを選択し、変数名をtestXとして代入する
testX = test["temperature"]
# 単回帰の場合のみ、説明変数に対しておまじないが必要となる
# 単回帰の場合はややこしいが、train,testの説明変数ともに、データの形を整える必要がある
# 具体的にはvalues.reshape(-1,1)というおまじないをする
# 整えた後、再び変数Xに代入する
trainX = trainX.values.reshape(-1, 1)
testX = testX.values.reshape(-1, 1)
# 回帰のモデルの箱を用意する
# モデルを作る為にはまず、モデルを表す箱が必ず必要となる
# 変数名をmodel1として、LR()を代入する
model1 = LR()
# 単回帰モデルを作る
# fit関数を使う
# カッコの中に、説明変数、目的変数の順番に書く
model1.fit(trainX,y)

ここでこのようなリアクションがあればOK。
単回帰モデルが作れた。
f:id:ysk_son:20180219172357p:plain

 

次に作ったモデルの傾きや切片を確かめる。

# 傾きはcoef_を使う
model1.coef_
# 切片はintercept_を使う
model1.intercept_

このように表示された。
f:id:ysk_son:20180219172552p:plain

なぜ傾きが array([-2.5023821]) と配列で表示されるのかはわからないが、調べてもわからなかったので「こういうもんだ」と自分に言い聞かせて先に進む。
(エラーではないと思われる)

次はテストデータに対する予測を行う。
予測にはpredict関数を使う。
予測結果は変数predに代入する。

pred = model1.predict(testX)
# predで中身を見てみる
pred

このように表示され、テストデータに対する予測値が求められたことが確認できる。
f:id:ysk_son:20180219173424p:plain

ここも先程同様、なぜ数値が array([……………]) と配列で表示されるのかはわからないが、調べてもわからなかったので「こういうもんだ」と自分に言い聞かせて先に進む。
(エラーではないと思われる)

 

ここからDeep Analyticsへ投稿する準備を行う。
まずはsampleの中身を確認する

sample.head()

このように表示される。
日付の右の列(列1)に予測値が並んでいる。
f:id:ysk_son:20180219174121p:plain

今回求めた予測結果は列1に該当するので、ここに先ほど求めたpredを代入する。

# 代入
sample[1] = pred

sampleに正しく代入がされたか確認をするために、もう一度sampleの中身を確認する。

sample.head()

このように表示される。
f:id:ysk_son:20180219174633p:plain

当初と違う値が列1に代入されていることがわかる。

 

最後に投稿するために、代入をしたsampleをファイルで書き出す。
csv出力にはto_csv関数を使う。
今回必要なオプションは、”submit1.csv”, index=None, header=None の3つである。

sample.to_csv("submit1.csv",index=None,header=None)

正しく処理されている場合はマイドキュメント内のcase1にsubmit1.csv というタイトルのファイルが書き出される。
↓無事できた。
f:id:ysk_son:20180219175204p:plain

 

本日はここまで。
次回は作成したファイルをDeep Analyticsへ投稿していく。

Pythonの勉強メモ7(『予測する』とは?)

巷で評判の良いPythonオンライン教材、『【ゼロから始めるデータ分析】 ビジネスケースで学ぶPythonデータサイエンス入門 | Udemy』を購入し、学習してみた。

前回エントリ(相関関係を見る)はこちらから。

 

目次

  • セクション4: 予測するってどういうこと?
    • 目的変数と説明変数
    • 代表的な予測問題
    • 予測モデルを作るキホン
    • まとめ

# 本エントリ(セッション4)はプログラミングは無く、簡単な座学のみ

セクション4: 予測するってどういうこと?

目的変数と説明変数

「予測」とは、『データに基づいて』予測を行うことである。
根拠がないとただの占いである。

とのことで、数値の予測にしろラベルの予測にしろ、いずれにしてもデータに基づいた予測が必要である。

予測に必要となるデータは
・過去の売上実績数
・予測のヒントになりそうなもの(天気、来客数、気温)
と大きく2つに分別できる。

これを統計的な言葉で説明すると、
・過去の売上実績数=目的変数
・予測のヒントになりそうなもの(天気、来客数、気温)説明変数

となるので、覚えておく必要がある。

代表的な予測問題

代表的な2種類の予測問題がある。

1・回帰問題

目的変数が数値
例:明日の豆腐の売り上げは?

2・分類問題

目的変数がカテゴリ
例:この画像の料理名は何?

その他としてテキストマイニングなどのジャンルもある。

予測モデルを作るキホン

これから予測モデルを作っていく上での注意点を紹介する。
まずは以下の例を読んでみてほしい。

Aさんは上司から予測モデルを作ってくれと頼まれました。
Aさんは『全てのデータを使って』『すぐにモデリングを始めよう』と決め、作業を開始しました。
結果、予測精度99%の高精度のモデルができました。

Aさんは早速作成したモデルを使って運用を始めたが、全く予測精度が出ず、上司に叱られてしまいました。

 

さぁ、なにがマズかったのだろうか?

答えは『全てのデータを使った点』と『すぐにモデリングを始めた点』である。
# 『』が付いている時点でお察しだが

しかしバカにはできない。
これは実際に起こり得る事象なのである。

具体的にどうすればよかったのか、以下にて説明する。

・いきなりモデリングを始めた = 基礎分析を怠ってはいけない
基礎分析は基本中の基本!

・全てのデータを使った = モデルが過学習(※)と呼ばれる状態となってしまった
※ 過学習=Overfittingと言われ、モデル製作に使ったデータだけに特化したモデルを使ってしまうこと

過学習がわかりずらい。
例えばこんな状態を過学習と言う。

【部署A】
理系の男子は全員メガネをしている

→「よし、男子がメガネしていれば100%理系や!これでモデル作ったろ!」

【部署B】
理系でメガネしていない男性が存在

→「予測できない!」

これが過学習。
部署Aに特化しすぎたモデルであるため、部署Bに対応できていない。

要するに、
モデルは汎用性が求められる。

言い換えると、
モデルは”未知のデータ”も予測できることが望ましい

 

ではどのように未知のデータに対応できるモデルを作るのか??

答えはシンプルである。
元になるデータセットをデータAとデータBとの2つにわけて、
一方(データA)をモデルを作成する際の学習用データとし、
もう一方(データB)をモデルの評価用のデータとするのである。

つまり、
データAを元にモデルを作成し、
データBを使って予測をさせる。
そうすることで作成したモデルが未知のデータに対応できているか検証するのである。

 

こうすることで汎用的な予測モデルを作成できるのである。

まとめ

・予測とは
データに基づき、値を想定すること

・代表的な予測問題
回帰と分類

・汎用的な予測モデルを作るべし
データを分割する / 過学習に注意

セッション4はこれで終わり。
比較的軽めの内容だったがキリが良いので本エントリはここまで。
次回はセッション5から着手する。

Pythonの勉強メモ6(相関関係を見る)

巷で評判の良いPythonオンライン教材、『【ゼロから始めるデータ分析】 ビジネスケースで学ぶPythonデータサイエンス入門 | Udemy』を購入し、学習してみた。

前回エントリ(箱ひげ図、欠損値の処理)はこちらから。

 

目次

  • セクション3: まずデータに向き合おう(続き)
    • 相関関係を見てみよう – Section3_5.ipynb –

セクション3: まずデータに向き合おう(続き)

相関関係を見てみよう – Section3_5.ipynb –

早速資料に沿って学習していく。

# おまじない
import pandas as pd
import numpy as np
from matplotlib import pyplot as plt
%matplotlib inline
# データ読み込み
train = pd.read_csv("train.csv")
# trainの先頭行の確認(データ読み込みが正しいかのチェック)
train.head()

ここまではいつもどおりなので画面ショットは割愛。
ここから相関関係について調べていく。

まずはtrainのyとtemperatureの相関関係を調べる。

相関関係とは、Aという事象とBという事象の間、双方向の動きに関係があることを指す。
例えば、気温が上がると弁当の売り上げ数もあがる関係があった場合、正の相関があると言い、
逆に、気温が上がると弁当の売り上げが下がる関係があった場合、負の相関があると言う。
※ なお、相関関係と因果関係は異なる為、注意が必要である(ここでは詳しくは触れない)

・この関係の度合は相関係数と呼ばれる数値で表される
・具体的にはcorr関数を使う

train[["y","temperature"]].corr()

このように表示される。
いつも思うがPythonのライブラリは本当に便利。
f:id:ysk_son:20180216162938p:plain

この結果から得られる情報は以下。
・対角線は自分自身なので必ず1になる(意味不明)
・yとtemperatureの相関係数は-0.65
・負の関係なのでどちらかが増えれば、もう一方は減る関係
・係数が1に近ければ関係が強く、0に近ければ関係が弱いと言える

 

今度はyとkcalの相関関係を調べる。
本来、欠損値があると相関係数は測定でないが、プログラムでは自動的に欠損値の行は削除されて計算される(便利)。

train[["y","kcal"]].corr()

このように表示される。
f:id:ysk_son:20180216163611p:plain

 

この結果から得られる情報は以下。
・プラスの関係なのでyとkcalは正の相関があると言える
(どちらかが増えればもう一方も増える関係)
・相関係数が0.14と小さな数字なので、相関は弱いと言える
・相関係数からどういった散布図になるかの検討がつく

 

相関係数は数量の値で関係を表せるが、散布図を書くことで、視覚的にもっとわかりやすく書くことができる。

そこでyとtemperatureとの散布図を描いてみる。
散布図はplot.scatter関数を使う。
オプションとして、x=”temperature”, y=”y”, figsize=(5,5)と書く。

train.plot.scatter(x="temperature", y="y", figsize=(5,5))

このように表示される。
f:id:ysk_son:20180216164150p:plain

 

確かにyの値が減るとtemperatureの値も減っているように見える。
確かに負の相関である。

続いてyとkcalとの散布図も描いてみる。
書き方は全く同じ。
負の相関関係であるので異なるかたちになると想像できる。

train.plot.scatter(x="kcal", y="y", figsize=(5,5))

このように表示された。
f:id:ysk_son:20180216164413p:plain

確かに先程の散布図よりも特徴が見出しづらい。
まんべんなくバラバラに見える。

 

散布図を書くことによって視覚的に関係を読み取ることができるので非常に便利。

 

しかし、一方で注意点として、相関係数を鵜呑みにせず、散布図を書くことが非常に大切である。
というのも、散布図に1つでも外れ値があると本来の相関係数よりも過剰に大きくなったり、小さくなったりすることがあるのである。
データ分析ではこういった外れ値に対しての処理を考えることも非常に大切だと言われている。

 

ここまででセッション3は全て終了!
次回はセッション4から!

Pythonの勉強メモ5(箱ひげ図、欠損値の処理)

巷で評判の良いPythonオンライン教材、『【ゼロから始めるデータ分析】 ビジネスケースで学ぶPythonデータサイエンス入門 | Udemy』を購入し、学習してみた。

前回エントリ(ヒストグラムの学習)はこちらから。

 

目次

  • セクション3: まずデータに向き合おう(続き)
    • グラフを描いてみよう(箱ひげ図) – Section3_3.ipynb (教材PART3) –
    • 欠損値を調べてみよう

セクション3: まずデータに向き合おう(続き)

グラフを描いてみよう(箱ひげ図) – Section3_3.ipynb (教材PART3) –

早速資料に沿って学習していく。

箱ひげ図とは…
・データ分布を確認するための図
・英語ではBoxplot
・最大値、最小値、中央値、上側ヒンジ、下側ヒンジがわかる

上側ヒンジ:大きい順に並べた時の上25%にある数字
下側ヒンジ:小さい順に並べた時の下25%にある数字

早速描いていく。

# yとweekの関係を調べる為に、箱ひげ図を描く
train[["y","week"]].boxplot(by="week")

このように表示される。
f:id:ysk_son:20180216150926p:plain

Matplotlibの設定が不正だから曜日の表示がお豆腐(白いしかく)になってるが、今はスルー・

・曜日の順番はぐちゃぐちゃ
・何曜日が売れたか視覚的にわかりやすい
・月曜日には最も売れた日が含まれている

 

ここから実習。

# 1.trainのtemperatureの折れ線グラフを描いてみよう。タイトルとx軸、y軸にもそれぞれ名前をつけよう
#    x軸とy軸に名前を付ける為に、グラフは一旦変数axに代入しよう
#   タイトル名は「気温」、x軸は「time」、y軸は「temperature」としよう
ax = train["temperature"].plot(title="気温")
ax.set_xlabel("time")
ax.set_ylabel("temperature")
# 2.trainのkcalのヒストグラムを描いてみよう。trainのkcalの平均を表す赤線も入れよう
plt.axvline(x=train["kcal"].mean(),color="red")
train["kcal"].plot.hist()
# 3.trainのyとweatherとの関係を調べる為に、箱ひげ図を描いてみよう
#    x軸はweatherにしましょう
train[["y","weather"]].boxplot(by="weather")

それぞれこのように表示される。

1・
f:id:ysk_son:20180216151511p:plain

 

2・
f:id:ysk_son:20180216151532p:plain

 

3・
f:id:ysk_son:20180216151608p:plain

折れ線グラフ、ヒストグラム、箱ひげ図。グラフの可視化についてはここまで。

欠損値を調べてみよう

続いて欠損値を調べる。
使用するデータは例によって train.csv。
気がついたのだけど、データがしっかりとCSVで保管されているのであれば、データ分析は容易なのだろう。

# おまじない
import pandas as pd
import numpy as np
from matplotlib import pyplot as plt
%matplotlib inline
# データ読み込み
train = pd.read_csv("train.csv")
# trainの先頭行の確認(データ読み込みが正しいかのチェック)
train.head()

ここまではいつもどおりなので画面ショットは割愛。
ここから欠損値を取り扱う。

まず、各値が欠損値か否かを出力する。

・欠損とは、何らかの理由で、データの値が入っていない状態のこと
・データ分析において欠損がある場合の対応はとても重要である
・欠損の有無を確認する為にはisnull関数を使う
・欠損値の時、Trueと表示される

train.isnull()

f:id:ysk_son:20180216153629p:plain

このように表示される。
Trueの箇所が欠損値であることがわかる。
(欠損値の定義をしなくていいのは捗る)

 

しかしこれでは見づらいので、各列(カラム)にTrueが1つ以上あるかないかを確かめてみる。

・isnull関数のあとにany関数を付け加える。
・付け加える時はドット(.)で繋ぐ。
・1つ以上欠損値を含んでいる場合、Trueと表示される。

train.isnull().any()

このように表示される。
f:id:ysk_son:20180216153921p:plain

 

次に具体的に各列(カラム)に欠損値が幾つあるか数える。

・isnull関数のあとにsum関数を付け加える

train.isnull().sum()

このように表示される。
f:id:ysk_son:20180216154045p:plain

 

kcal,remarks,eventあたりは欠損値だらけであるとがわかったので、続けて欠損値の処理をする。

・欠損値の処理は別のなんらかの値を代入(補間)するか、欠損値を含む行を削除するかで対応する
・ここではまず、欠損値を0で補間する
・補間にはfillna関数を使う

train.fillna(0)

f:id:ysk_son:20180216154329p:plain
確かにさっきまで NaN だった欄に 0 が補間された。

続いて欠損値を削除してみる。

・dropna関数を使う
・ある列に欠損値があった場合のみ、その行を削除したい場合はオプションとしてsubset=[ ]を使う

train.dropna()

このように表示される。
f:id:ysk_son:20180216154545p:plain

確かにkcalに欠損値がある行が削除されている!

 

最後にprecipitationには本当に欠損値がないか確認する

・行の中の値がそれぞれ幾つあるかを確認したい場合は、value_counts関数を使う

train["precipitation"].value_counts()

このように表示される。
f:id:ysk_son:20180216154750p:plain

欠損値が169個あることがわかった。

 

欠損値についてはここまで、次回は相関関係を見ていく。

# ここまでで セッション3.39 欠損値を調べてみよう まで終わり。

Pythonの勉強メモ4(視覚化の基礎、ヒストグラム)

巷で評判の良いPythonオンライン教材、『【ゼロから始めるデータ分析】 ビジネスケースで学ぶPythonデータサイエンス入門 | Udemy』を購入し、学習してみた。

前回エントリ(Pythonの基礎,データを詳しく見てみる)はこちらから。

 

目次

  • セクション3: まずデータに向き合おう(続き)
    • 簡単なグラフを描いてみよう – Section3_3.ipynb (教材PART3) –
    • グラフを描いてみよう(ヒストグラム) – Section3_3.ipynb (教材PART3)続き –
      • ヒストグラムについて
      • ヒストグラムを描いてみる

セクション3: まずデータに向き合おう(続き)

簡単なグラフを描いてみよう – Section3_3.ipynb (教材PART3) –

早速資料に沿って学習していく。
データ読み込みまでは例によっておなじないとして。

# おなじない
import pandas as pd
import numpy as np
from matplotlib import pyplot as plt
%matplotlib inline
# データ読み込み
train = pd.read_csv("train.csv")
# データ読み込みが正しくできているか確認
train.head()

ここで以下のように表示されればOK。
f:id:ysk_son:20180205154055p:plain

さて、ここから早速グラフを描いていく。
折れ線グラフを描くにはplot関数を使う。
とても簡単でいい。

train["y"].plot()

そうするとこのように表示される。
f:id:ysk_son:20180205154419p:plain

意図した表示と異なる。
とりあえずグラフは表示されているので今は無視してすすめる。

次にグラフのサイズを大きくする。
figsize オプションでサイズを指定してあげる。

train["y"].plot(figsize=(12,4))

そうするとこのように表示される。
f:id:ysk_son:20180205154725p:plain

ピンク色の警告文は依然表示されているが、表示は正しくされているので無視して進める。
確かにグラフのサイズはさきほどよりも大きくなっている。

このグラフはお弁当の売り上げを表しており、X軸は時間、Y軸は売り上げを表しているので、
・時間が経つにつれてお弁当の売れ行きが下がっている
・時系列に関係なく、時々売り上げに関係する何者かによって、時々スパイク(売り上げが急増)している
ということがわかる。
ふむ。分析している感する。

続いてグラフにタイトルをつけてみる。
以下のように記載。

train["y"].plot(figsize=(12,4),title="グラフ")

このように表示される。
f:id:ysk_son:20180205155235p:plain

タイトルが「グラフ」と表示されない!
日本語化がうまくいかない場合、以前行ったmatplotlibの設定が正しく行われていない可能性があるらしい。
matplotlibにて日本語化の設定をやり直す必要があるということだが、今はこのまま続ける。

 

次にグラフのx軸とy軸に名前を付けてみる。
これが意外と面倒くさい。

このような手順で行う。
1・plot関数の結果を別の変数(ax)に代入
2・set_xlabel関数を使ってx軸のラベル付け
3・set_ylabel関数を使ってy軸のラベル付け

早速描いてみる。

ax = train["y"].plot(figsize=(12,4),title="グラフ")
ax.set_xlabel("time")
ax.set_ylabel("y")

このように表示される。
ピンク色の警告文は日本語化の設定不良によるものなので今は無視して進める。
f:id:ysk_son:20180205160123p:plain

よし。
ちゃんとラベルに名前がついている。
ということで次へ進む。

グラフを描いてみよう(ヒストグラム) – Section3_3.ipynb (教材PART3)続き –

ヒストグラムについて

折れ線グラフに続いてヒストグラムについて学習する。

【ヒストグラムとは】
・縦軸と横軸で帯状
・横軸は階級と呼ばれ、数値の幅がどのくらいなのかを表す
・縦軸は度数と呼ばれ、数値の頻度がどのくらいなのかを表す

以下が代表的な4つのヒストグラムの形状。
f:id:ysk_son:20180205163239p:plain

1:山が一つのグラフ(左上)
・非常にきれいなデータの形状といえる
・正規分布とかガウス分布などといわれる
・真ん中の平均が一番高いグラフとなる

1:山が複数あるグラフ(右上)
・できる集団とできない集団とに別れた場合に見られるグラフ
・難しいテストの時などに見受けられる
・こういったデータを処理する場合は「このグラフ中には2種類の集団がいるな」と考えられる

1:山が偏っているグラフ(左下)
・ロングテールでだんだん数が減っていく
・Webのログデータなどに見られる
・べき乗分布と呼ばれる
・このデータの平均値は40~60あたりを指すことが多いが、ボリュームゾーンは20あたりを指すことが多い
・データの分布と平均値が一致しない代表的なヒストグラム
・平均値だけを追っているとデータの実際のかたちとアンマッチを起こしてしまう
・ヒストグラムを書くことが大切を思わせられるかたち

1:外れ値があるグラフ(右下)
・外れ値を放置すると想定と異なる結果が返ってくることがある
・「外れ値がある」と発見することが大切
・外れ値を正しく処理することが大切
・データの処理の中でも外れ値の取り扱いは大切であり、難しい

 

以上がそれぞれのヒストグラムの特徴である。
総じて言えることは「グラフにして可視化することで、データの形状を把握することが大切」ということである。

ヒストグラムを描いてみる

ここからヒストグラムの作成に入る。
ヒストグラムの作成はplot.hist関数を使う。

train["y"].plot.hist()

このように表示される。
f:id:ysk_son:20180205170216p:plain

 

簡単に書けた。
とても便利でいい。

続いて見やすくするためにグリット線を表示させる。
グリット線を表示させるためにはカッコの中にオプションとして、grid=Trueと書く。

train["y"].plot.hist(grid=True)

このように表示される。
f:id:ysk_son:20180205170524p:plain

こうすることで40-60がボリュームゾーンだとわかる。
次に、「山が偏っている場合は平均値がグラフの山の盛り上がっている箇所と異なる場合がある」ので、平均線を赤く指定して入れて見やすくする。

平均値を入れる関数はplt.axvline(x=NUMBER, color=”red”) を使う。
まずはx=2のところに赤線を入れてみる。

plt.axvline(x=2, color="red")

こうなる。
f:id:ysk_son:20180205170942p:plain

使い方がわかったところで、先程のグラフと合体させる。

plt.axvline(x=train["y"].mean(), color="red")
train["y"].plot.hist()

こうなる。
f:id:ysk_son:20180205171353p:plain

「グラフ上の山の盛り上がったところが平均ではない」ことが確認できた。
最後にこのグラフを保存する。
その際はサイズを大きくして、タイトルをヒストグラムとして、pngファイルとして保存する。

その際の注意点は
1・plt.savefig(“FILE_NAME.拡張子”)を一番最後に書く
2・ファイル名は「sample_fig.png」とする
とある。
早速描いてみる。

plt.axvline(x=train["y"].mean(), color="red")
train["y"].plot.hist(figsize=(12,4),title="ヒストグラム")
plt.savefig("sample_fig.png")

こうなる。
f:id:ysk_son:20180205171737p:plain

# タイトルがお豆腐(白い□)になっているのはmatplotlibの設定が正しくないため
# 正しく処理されている場合はマイドキュメント直下に指定したファイルが作成されている

f:id:ysk_son:20180205172027p:plain
ちゃんと作成できてる!

 

ヒストグラムのセッションはここで終わり。
今回はここまで。
次回は次のグラフ(箱ひげ図)について学習する。

だんだん分析っぽくなってきていて楽しい。

Pythonの勉強メモ3(Pythonの基礎、データを詳しく見てみる)

巷で評判の良いPythonオンライン教材、『【ゼロから始めるデータ分析】 ビジネスケースで学ぶPythonデータサイエンス入門 | Udemy』を購入し、学習してみた。

前回エントリ(jupyter使い始め,データの読み込み,データの表示)はこちらから。

 

目次

  • セクション3: まずデータに向き合おう(続き)
    • Pythonの基礎
      • 変数
      • 関数
      • よくあるミス
    • データをもう少し詳しく見てみよう
      • Section3_2.ipynb (教材PART2)

セクション3: まずデータに向き合おう(続き)

Pythonの基礎

旋回は突然のプログラミングだったが、ここで改めてPythonの説明をしてもらえる。

・変数
・関数
・よくあるみす
の3点をそれぞれについて説明。

変数

変数は箱。
数字の5も”あいうえお”という文字も、データフレームも入れられる。
箱の名前は自由につけられる。

関数

エクセルのSUM関数と同じ。
ある規則のある処理をおこないた場合に使う。
関数を使いたい場合は

変数名.関数名(オプション)

train.plot(option)

と記載する必要があり、オプションはカンマで区切ることで複数指定することができる。
※ このオプションのことを引数と言う

変数名.関数名(オプション,オプション)

train.plot(option,option)
よくあるミス

シンプルに説明。
Pythonに限らずだろうが、プログラミング初心者にありがちなミスについて説明があった。

1・スペルミス
一番よくある。
なにかエラーが出たらまずはスペルミスを疑うべき。

2・大文字と小文字のミス
Falseとfalseと間違えるとエラーがでる。
Pythonでは大文字と小文字を別物として区別される。

3・カッコの有無、種類
[],{},()の使い分け、head()をheadとしてしまう、など

4・ドットとカンマの間違い
これは慣れれば少なくなるらしい。

データをもう少し詳しく見てみよう

Section3_2.ipynb (教材PART2)

ここから実習。
jupyter/Documents/case1/Section3_2.ipynb を解いていく。

# おまじない
import pandas as pd
import numpy as np
from matplotlib import pyplot as plt
%matplotlib inline
# データの読み込み
train = pd.read_csv("train.csv")
# データ先頭行の確認
train.head()

このように表示される。
f:id:ysk_son:20180201140354p:plain

次は基本統計量を確認する。
どんどん分析計の方向に進んでいる感じがして素晴らしい。
ここでは describe関数を使うとある。
※ スペルミス注意

train.describe()

このように表示される。
f:id:ysk_son:20180201141105p:plain

この中から読み取れる情報は以下の通り。
・数字の情報のみ基本統計量を引っ張り出す
・count行y列はyが入力されている行数から207行あることがわかる
・count行kcal列は166とあり、入力されていない欄があることがわかる
・meanは平均値
・stdは(standard deviation)標準偏差の略だが今は深く触れない
・minは最小値
・maxは最大値
・50%は中央値(median)

 

次はデータの型を確認する。
info関数を使う。

train.info()

このように表示される。
f:id:ysk_son:20180201141240p:plain

この中から読み取れる情報は以下の通り。
なかなか難しいが頑張る。
・non-nullは入力されている欄の数であり、この数はdescribeのときと同じである(例えばyは207入力されている)
・intは整数
・floatは小数点付きの値
・objectは文字列

ここまではtrainの全体感を見てきた。
ここからは特定の値(カラム)に注目していく。

train["y"]

このように表示される。
(ただy列が207行抜き出されただけの状態)
f:id:ysk_son:20180201142735p:plain

 

ここからyの平均値と中央値を見てみる。
平均値はmean関数、中央値はmedian関数を使う。

# yについての平均値を求める
train["y"].mean()
# このように返ってくる
86.6231884057971
# yについての中央値を求める
train["y"].median()
# このように返ってくる
78.0

ちなみに中央値と平均値は全然別物である(初めて知った)。
わかり易い(しかし極端な)例とともに一応記載しておく。

【平均値】
全部足してそのデータ個数で割った数。
10,20,30,40,1,000の5つの数がある場合の平均値は、
(10+20+30+40+1,000)÷5=220
となる。

【中央値】
全部の数を大きい順(または小さい順)に並べた時に真ん中にくる数。
10,20,30,40,1,000の5つの数がある場合の中央値は、
単純に真ん中(三番目)にある30
となる。

 

話を戻す。
次はyの値が150以上のデータのみを見てみる。

train[train["y"]>=150]

このように表示される。
f:id:ysk_son:20180201144356p:plain

だんだん難しくなってきたが、無事表示された。

次は曜日が月曜日だけのデータのみを見てみる。
注意点として、イコールは”==”と記載する必要がある。
これは”=”だと代入を表すためである。

train[train["week"]=="月"]

このように表示される。
f:id:ysk_son:20180201144541p:plain

 

疲れてきた。
けどあと3つで課題は終わり。頑張る。

 

続いて曜日が火となっているデータをyで昇順・降順にする。
注意点は以下2点。

・ソートはsort_values関数を使う。sort_values(by=”XXX”)と書く
・降順にしたい場合はカッコの中にオプションとしてscending=Falseを記載
※昇順にしたい場合はオプションをつけばければ自動で昇順になる

train[train["week"]=="火"].sort_values(by="y")

このように表示される。
f:id:ysk_son:20180201145111p:plain

確かに火曜日のみが抽出されている。
さらにyがsort(昇順)になっている。

 

今度は同じように火曜日を抽出し、yで降順に表示させてみる。
※ sort_values関数の最後のsを忘れないように注意
※ Falseの最初の文字は大文字のFなので注意

train[train["week"]=="火"].sort_values(by="y",ascending=False)

このように表示される。
f:id:ysk_son:20180201145708p:plain

確かに火曜日のみが抽出されている。
さらにyが降順になっている。成功。

 

最後に曜日が月曜日の時のyの平均値を表示させる。

train[train["week"]=="月"]["y"].mean()
# このように表示される
94.05128205128206

これでセクション3: まずデータに向き合おう(続き)の中の『データをもう少し詳しく見てみよう』までを終えた。

今回はここまで。

Pythonの勉強メモ2(jupyter使い始め、データの読み込み、データの表示)

巷で評判の良いPythonオンライン教材、『【ゼロから始めるデータ分析】 ビジネスケースで学ぶPythonデータサイエンス入門 | Udemy』を購入し、学習してみた。

前回エントリ(準備編)はこちらから。

 

目次

  • セクション1: はじめに
  • セクション2: 分析環境を整えよう
  • セクション3: まずデータに向き合おう
    • データと向き合う前の下準備
    • jupyterの立ち上げ
    • 基礎分析と可視化を行う
      • Section3_1.ipynb (教材PART1)

セクション1: はじめに

「初心者向けの学習内容である。」「データサイエンティストの基礎を積み上げ式で学んでいく内容である。」という説明を聞く。
Pythonとはなにか?プログラミングとはなにか?という細かな話はほどほどに、講座に沿って学習していけばPythonを使った分析をできるようになります。と、一直線にPythonを使ったデータ分析に学べる雰囲気。色々と眠くなる話がある昨今の教材の中、非常にわかりやすくていいと思う。

セクション2: 分析環境を整えよう

1・pythonとjupyterの紹介
2・Anacondaのインストール
3・Matplotlibの日本語化

と諸々の準備。こちらは前回のエントリにて記載したので割愛。

前回内容と重複する可能性があるが、それぞれのポイントは以下。
jupyterとは、Pythonなどを書いて動かすためのツールであり、ブラウザ上で動作することが特徴
Anacondaとは、Python本体とライブラリを同時にインストールできる便利なもので、環境構築も簡単
Matplotlibとは、可視化のために便利なライブラリだが、日本語対応していないので、設定を変更する必要がある

セクション3: まずデータに向き合おう

データと向き合う前の下準備

ここからいきなりPythonを書くことになる。
(目的に対して直線的ですごくいい)

だがその前に、まずはDeepAnalyticsから「お弁当大作戦After【練習問題】」データをダウンロードし、さらにudemyから教材をダウンロードするのだが、ここについては前回のエントリにて記載したので割愛する。

1点前回のエントリから漏れている作業が合った。
以下についてもここで対応しておく。

1・マイドキュメントの直下に作成するフォルダはcase1とcase2
2・「銀行の顧客ターゲティング【練習問題】」データをcase2に格納する

jupyterの立ち上げ

以下の手順でjupyterを立ち上げる。
1・スタートメニューからAnaconda Navigatorを探してクリック
(結構時間がかかるので待つ)
2・Anaconda Navigatorが立ち上がったらnotebooksをクリック
3・その中のDocumentsをクリック
4・その中に先程作ったcase1があるのでそれをクリック
5・その中に新しいノートブックを作るので、画面右上のNewをクリック

jupyterの画面はこちら。
f:id:ysk_son:20180118174406p:plain

 

jupyterノートブックを作成すると↓の画面となる。
(貼り付けたスクショは作業後なので、新規時点では白紙のノートブックとなる)

f:id:ysk_son:20180118174905p:plain

 

それぞれの手書き番号箇所についての説明は以下。
1・「Test」と記載のある箇所はタイトル欄であり、クリックして上書き可能
2・インタラクティブシェルと同じようにその場で結果を返してくれる
3・編集モードでマークダウンモードを選択すると「tetete」とコメントも残せる
4・不正な入力だともちろんエラーを返してくれる

その他jupyter上のコマンドについてはどこか他のWebサイトに譲る。
編集モード、コマンドモードがあり、Shift+Enterで実行だけ覚えておけばまずは良いと思う。

基礎分析と可視化を行う

データ分析を行う上で、基礎分析はとても大切とのこと。
かなり強く大切と説いていたので覚えておいたほうが良さそう。
・データが足りないことが後でわかると多大な手戻りが発生する可能性がある
・間違ったデータを使用してしまうと事実と異なる結果がでる可能性がある

Section3_1.ipynb (教材PART1)

ここから実習。
実際の講座で使用する教材(Section3_1.ipynb)を使用すると内容が保存されるので、後から復習もできて非常に便利。
(私も本エントリはビデオとノートを見ながら書いている)
(是非購入をすすめる)

# おまじないとして言われたとおり記載
# as のあとは略称を定義している
# 改行はEnter
import pandas as pd
import numpy as np
from matplotlib import pyplot as plt
%matplotlib inline
# csvデータを読み込む
train = pd.read_csv("train.csv")
# 読み込んだデータを見てみる
train.head()

このように表示される。
便利。

f:id:ysk_son:20180118181148p:plain

# 行数と列数を確認したい場合はshapeを使う
train.shape
# このように返ってくる
(207, 12)
# 先頭から10行目まで見たい場合は
test.head(10)
# 「各自考えてやってみましょう」系の実習は割愛

今回はここまで。
次回は「Pythonの基礎」から再開する。

f:id:ysk_son:20180118182602p:plain

「23/120個の項目を完了しました」らしい。
まだまだ序盤なのだが思ったよりも早くグイグイ分析に進んでいる。
この先がとても楽しみ。

Pythonの勉強メモ1(コース申し込み、Anacondaインストール、Matplotlibの日本語化、DeepAnalytics登録)

巷で評判の良いPythonオンライン教材、『【ゼロから始めるデータ分析】 ビジネスケースで学ぶPythonデータサイエンス入門 | Udemy』を購入し、学習してみた。

まずはコース申し込みと学習環境準備編。

  • 1・udemyのアカウントを作る
  • 2・【ゼロから始めるデータ分析】 ビジネスケースで学ぶPythonデータサイエンス入門を購入する
  • 3・購入ができたらマイコースに表示されることを確認
  • 4・Anacondaのインストール
  • 5・Matplotlibを日本語化する
  • 6・DeepAnalyticsへのログインとデータダウンロード

1・udemyのアカウントを作る

こちらから。登録はメールアドレスとカード登録が必要。Paypalアカウントを持っていれば連携可能。
www.udemy.com

2・【ゼロから始めるデータ分析】 ビジネスケースで学ぶPythonデータサイエンス入門を購入する

コースを検索して見つけたらあとはカートに入れて買うだけ。
金額はいつ見てもセール中だから基本的に10ドル程度と思ってよさそう(知らんけど)。

3・購入ができたらマイコースに表示されることを確認

こんな感じ。
f:id:ysk_son:20180112163029p:plain

これで視聴の準備は完了。
続いてコース内で必要と思われるものを事前に準備する。

4・Anacondaのインストール

こちらから。
www.anaconda.com
Windows or Mac or Linux / Python2系 or Python3系 をそれぞれ選択する。

ダウンロードの途中でいくつか質問を投げかけられる。

1:E-Mailは入力しなくてOK

2:保管場所はC:\Anaconda

3:チェックを両方に入れてインストールを選択
f:id:ysk_son:20180112172205p:plain

4:チェックを外してFinishを選択すればインストールは完了
f:id:ysk_son:20180112172259p:plain

インストールは結構時間かかる。

5・Matplotlibを日本語化する

まずはフォントのダウンロード。
こらのサイトにアクセスして、IPAexGothicというフリーフォントをダウンロードする。

手順が少しわかりづらい。

1:ダウンロードのタブを選択。
f:id:ysk_son:20180112170700p:plain

2:最新版のIPAexのフォントを選択。
(現在はIPAexフォント Ver.003.01が最新となっている)
f:id:ysk_son:20180112170816p:plain

3:ページはスクロールダウンして、真ん中やや下にあるIPAexゴシック(Ver.003.01)を選択。
f:id:ysk_son:20180112171003p:plain

4:フォントファイルを以下フォルダーにコピーする。
C:\Anaconda\Lib\site-packages\matplotlib\mpl-data\fonts\ttf

5:Matplotlibの設定ファイルであるmatplotlibrcを書き換えて設定を変える。
a:C:\Anaconda\Lib\site-packages\matplotlib\mpl-dataにあるmatplotlibrcをメモ帳で開き
b:「#font.family」を検索し
c:以下のように書き換える
f:id:ysk_son:20180112171633p:plain

6・DeepAnalyticsへのログインとデータダウンロード

こちらのサイトから使用するデータをダウンロードする
deepanalytics.jp

1:アカウントを新規登録する
(プロフィールは後からも変えられるので適当でOK)
f:id:ysk_son:20180112175234p:plain

2:アカウントの作成が終わったらコンテスト一覧の中から「お弁当大作戦After【練習問題】 」を選択し、データをダウンロードを選択
f:id:ysk_son:20180112175623p:plain

3:利用規約の同意にチェックを入れ、3つのファイルを全てダウンロードする
f:id:ysk_son:20180112175728p:plain

4:ダウンロードした3つのファイルはマイドキュメント直下に「case1」を作成し、その中に格納

5:ついでに教材もcase1に格納する
(教材の位置は以下のとおり)
f:id:ysk_son:20180112180139p:plain

以上で学習前に必要な準備は完了。

Pythonスタートブックを読んでみる – 第2章 プログラムの材料と道具

諸事情によりPythonを触る。
やさしい内容でわかりやすいと評判のPythonスタートブックに沿って学ぶ。
# 私のPCスペック:Windows 7 Professional / 2.30GHz Intel Core i5 / 8GB) ←前エントリではMacだったがWindowsに変更
# 前回のエントリはこちら。

第2章 プログラムの材料と道具

  • 第2章 プログラムの材料と道具
    • 2-1. この章で学ぶこと
    • 2-2. 材料の種類とデータ型
    • 2-3. 道具としての関数

2-1. この章で学ぶこと

ここは前回に習えで目を通すのみ。
第2章ではデータと型、関数、メソッドについて学習すると書いてある。

2-2. 材料の種類とデータ型

ここではPythonにおけるデータ型(本では組み込みデータ型と記載されているがここではシンプルにデータ型とする)の種類とその書き方について触れる。
Pythonでは書き方によってデータ型を定義するので、この項目は大切と思われる。

個人的に特に以下2点は覚える必要があると感じる。
・小数で計算結果を返してほしい時は計算式も少数で記載する必要がある
・文字列とリストの違い

整数
数字をそのまま書く
例: 1, 10, 0, -1

小数
小数点をつけて数字を書く
例: 1.0, 0.000001, -3.15

文字列
引用符(「 ‘ 」(シングルクォーテーション)または「 ” 」(ダブルクォーテーション))で文字を囲む。
※「 ‘ 」(シングルクォーテーション)と「 ” 」(ダブルクォーテーション)はどちらを使用してもOK
例: ‘Apple‘, ‘お腹すいた‘, ‘4649‘

真偽
正しいか間違っているかの2つ
例: True, False

リスト
「 , 」(カンマ)区切りに並べたデータを「[]」(角括弧)で囲む
例: [1,2,3,4,5], [‘Happy’,’New’,’Year’,’2018′]

こちらは本にあるデータ型の一覧。
f:id:ysk_son:20180110171722p:plain

 

続いて「材料に名前を付ける」というテーマで変数へ数値を代入する。
色々書いてあるが百聞は一見にしかず。

>>> x=3
>>> x
3

と簡単に変数に数値を代入でき、

>>> x+6
9

さらに簡単に変数を使った計算も可能。
とても簡単。

ただし注意点がいくつかある。

注意点1・アルファベット、数字、アンダースコア(_)しか変数にできない
→Python3からは日本語も変数に使用できるようになった

>>> 日本=100
>>> 日本
100

注意点2・変数名は、アルファベットの大文字と小文字が区別される

>>> abc=5
>>> ABC=7
>>> abc
5
>>> ABC
7
>>>

注意点3・数字を変数名の先頭に使うことはできない

>>> abc123=99
>>> abc123
99
>>> 123abc=99
SyntaxError: invalid syntax
>>>

続いてはPythonを電卓のように使う。
習うより慣れろだが、ここについては見るだけで十分理解できる。

まず整数(int型)

>>> 1
1
>>> 3
3
>>> -100
-100
>>> apple = 100
>>> orange = 10
>>> apple * 3 + orange *2
320
>>> orange = 50
>>> apple * 3 + orange *2
400
>>>

次に小数型(float型)
「12.0」と「12.」が同義である点のみ注意。

>>> 0.5
0.5
>>> -0.5
-0.5
>>> 12.0
12.0
>>> 12.
12.0
>>>

次に文字列(str型)
引用符で囲んで文字列として表現。
引用符で囲めば数字も文字列として扱える。

>>> '-12.0'
'-12.0'
>>> 'orange'
'orange'
>>>

次に真偽型(bool型)
条件が成立するときは「True」、成立しないときは「False」。

>>> 1 > 5
False
>>> 1 > 0.1
True
>>>

次にリスト型

>>> ['a','b','c']
['a', 'b', 'c']
>>> abc = ['a','b','c']
>>> abc
['a', 'b', 'c']

リスト型では格納されている一意のデータを取り出せる。
リストの最初に格納されているデータを[0]番目として指定できる。

>>> abc[0]
'a'
>>> abc[1]
'b'

また、ここでは演算についても触れられているが、演算については前回のエントリにて触れたのでここでは割愛する。

2-3. 道具としての関数

様々なプログラミングに関する道具(=関数)について触れる。

長さを測る

>>> len('python')
6

この場合における「len(‘python’)」は引数、「6」は戻り値と言われる。

>>> len([1,2,3])
3

この場合における「len([1,2,3])」は引数、「3」は戻り値と言われる。

その他にも
「データを画面に出力する関数 print」
「整数のリストを作る関数 range」
などの説明があるが、特に注意点は無いので割愛する。

 

第2章はここまで。